1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management?...

33
1 VM Memory Management Thomas Nguyen 13.05.2009

Transcript of 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management?...

Page 1: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

1

VM Memory Management

Thomas Nguyen

13.05.2009

Page 2: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

2

VM Memory Management

• Was ist Memory Management?• Was hat Garbage Collection mit Memory Management

zu tun?• Wie funktioniert ein Garbage Collector?

Page 3: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

3

Memory Management?

• Speicher ist begrenzt• Lebenszyklus von Java Objekten• Speicher zuordnen (allokieren) • Speicher freigeben (deallokieren)

Heikle Sache – nicht ungefährlich!

Page 4: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

4

Architektur der Java-VM

Quelle: http://www.artima.com/insidejvm/ed2/jvm2.html

Page 5: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

5

Architektur der Java VM

Method Area

CLASS A

Constant Pool

Fields

Methods

Attributes

Class B

Class A

Page 6: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

6

Java VM – STACKS

STACK FRAME 1

Lokale Variablen Operanden Stack RCP Referenz

STACK FRAME 3…STACK FRAME 2

STACK FRAME 1

Architektur der Java-VM

Page 7: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

7

HEAP

• Dynamischer Speicher• Mit „New“ angelegte JAVA Objekte liegen hier• New“ reserviert den benötigten Speicherplatz, Adresse

wird als Referenz zurückgegeben• Sind über Referenzen zugänglich (auf dem Stack)• Zusammenhängender Speicherbereich• Speicher ist ein Array von Bytes mit Adressen

…1 2 3 4 5 6 7

Page 8: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

8

HEAP

Runtime Data Area´s

ptr into heap

ptr into heap

MyObject object1;object1 = new MyObject();

ptr to class data

instance datainstance data

instance data

Method Area Class Data MyObject

Class Data

Class MyobjectExtends java/lang/object

toString();hashCode()

STACKObject reference

informationptr to class data information

ptr to class data information

Page 9: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

9

Fast Allocation

• Bump Pointer …

Nächste freie Speicheradresse

MyObject object;object = new MyObject;

STACK

HEAP

object

Page 10: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

10

Architektur der Java-VM

Quelle: http://www.artima.com/insidejvm/ed2/jvm2.html

Page 11: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

11

Garbage Collection?

• Garbage Collection ist ein Begriff für die automatisierte Speicherverwaltung (Freispeicherverwaltung)

• Garbage Collector versucht Garbage (Müll) zu entsorgen

Garbage = Objekte, die nicht mehr vom Programm

benötigt werden

Page 12: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

12

Garbage Collection

• JVM hat das Rad nicht neu erfunden• Findet auch Anwendung bei vielen andern Sprachen

– Lisp (1959)– Smalltalk– Scheme– Objective C– C#– …

Page 13: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

13

Vor- und Nachteile einer Garbage Collection

• Vorteile:– Erhöhte Zuverlässigkeit– Entkopplung der Speicherverwaltung vom Klassen-

und Interface Design– Keine Entwicklungszeit um Memory Management

Fehler aufzuspüren!!!• Nachteile:

– CPU Zeit– Overhead– Pausen

Page 14: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

14

Anforderungen an eine Garbage Collection (SUN)

• safe and comprehensive

• efficiently without introducing long pauses

• limitation of fragmentation

• scalability

Page 15: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

15

GARBAGE COLLECTIONGrundlagen

• Java virtual machine (JVM) hat verborgene Datenstrukturen, um Speicher zu verwalten

• Root: Referenzen, auf die ein Programm direkten Zugriff hat– lokale Variablen auf einem Stack– static Variablen

Page 16: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

16

Objekte: live & garbage• Ein Objekt, welches unser Programm möglicherweise

noch braucht, nennt sich „lebend“• Gegenteil von lebend ist garbage, Objekte die unser

Programm nicht mehr referenzieren kann

Objekt ist „lebend“ wenn,- eine Referenz durch ein Root besteht, oder- es eine Referenz durch ein anderes lebendes Objekt hat- es vom Root aus erreichbar ist

Page 17: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

17

Erreichbarkeit von Objekten

• Durchlaufe eine DFS (Tiefensuche) vom Root• Jedes Objekt hat ein „visited“ tag

ROOT

Page 18: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

18

Mark & Sweep Garbage Collection• 2 Phasen:

– Mark Phase Startet DFS von jedem Root ausund markiert lebende Objekte

– Sweep Phase Speicher wird von nicht markierten Objekten freigegeben

ROOT

Page 19: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

19

Compaction

Fragmentierung: Freier Speicher hat die Tendenz sich in viele kleine Bereiche aufzusplitten.

Objekt Objekt Objekt

ObjektObjekt Objekt

Objekt

Objekt

Page 20: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

20

Mark & Compact Collector

• Zunächst wie der Mark&Sweep Alogrithmus• Compacting GC bewegt die Objekte während der Sweep

Phase

ROOT

Mark Phase Kompaktifiziert

Page 21: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

21

HEAP

Speicherverwaltung

ptr into heap

ptr into heap

MyObject object1;Object1 = new MyObject();

ptr to class datainstance datainstance data

ptr to class datainstance data

Method Area Class Data MyObject

Class Data

Class MyobjectExtends java/lang/object

toString();hashCode()

STACKObject reference

Page 22: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

22

Referenzen

• In der SUN Java-VM (Java JDK1.2.2) ist eine Referenzen kein Pointer. Es ist ein „Handle“

• Ein Handle ist ein Pointer zu einem anderen Pointer

ptr

STACKHEAPHandles

Page 23: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

23

HEAP

Referenzen

• Diese „second“ Pointer befinden sich in einer separaten Tabelle

object

ptr

object

STACKHandle Pool

Page 24: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

24

Copying Garbage Collector

• Speicher ist in 2 Bereiche aufgeteilt:– Old Space– New Space

• Finde lebende Objekte mittels DFS• Wenn es lebende Objekte im Old Space findet, wird es unverzüglich

ins New Space bewegt Die Objekte werden im New Space in den bestmöglichen Speicherplatz bewegt

• Beim nächsten GC werden Old und New-Space vertauscht

ROOT ROOT

Old Space New Space

Page 25: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

25

Copying Garbage Collector

Schneller als M&S, da nur eine Phase

Vorteil: Geschwindigkeit

Nachteil: Halbierung des Speichers

Page 26: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

26

Generational Garbage Collector

• Die meisten Objekte haben einen kurzen Lebenszyklus• Aber einige Objekte leben länger• Gernerational Collectors haben 2 oder mehr Generations

– Können eine unterschiedliche Größe haben– Größe kann variiert werden

Page 27: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

27

Generational Garbage CollectorOld generation

– Mark & Sweep GC (infrequently)

Young generation – Copying GC (frequently)

Survivor Spaces

Survivor Spaces

Eden full

tenured

EDEN All Objects born hereMost die here

EDEN All Objects born hereMost die here

Page 28: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

28

Aktionszeiten des Garbage Collectors

• Garbage Collector läuft, wenn zu wenig Speicher zur Verfügung steht (low Memory)

• System zur Zeit ungenutzt (idle)• Zu einer beliebigen Zeit • Explizit vom Programm aufgerufen

– System.gc();

• Keine Garantie für das Beenden eines Objektes• Daher sollte man beim Entwurf sich nicht darauf

verlassen!!!

Page 29: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

29

Auswahl eines Garbage Collectors

• Auswahl anhand folgender Ziele: – Pause Zeiten

– Durchsatz

– Header-Größe

• Serial Collector– Default Collector

– XX:+UseSerialGC

• Parallel Collector– Multiprozessor optimiert

– XX:+UseParallelGC

• Conccurent Collector– Echzeitanwendungen

– XX:+UseParallelOldGC

Page 30: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

30

Anforderungen an eine Garbage Collection (SUN)

• safe and comprehensive– Mark & Sweep / Copying GC

• efficiently without introducing long pauses– Generational GC -> Serial/ Parallel/ Concurrent GC

• limitation of fragmentation– Copying GC / Bump Pointer

• scalability– Verteilung auf mehrere Threats (Parallel/ Concurrent GC)

Page 31: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

31

Tuning des SUN JVM

Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuninghttp://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html

Per Kommando-Zeilen Befehle:

• Informationen über HEAP und GC– verbose:gc

• Verhältnis zwischen Young Generation und Old Generation– XX:NewRatio=3

• Verhältnis zwischen Survivor Spaces und Eden– XX:SurvivorRatio=6

• Heap Größe festlegen– java -Xms32m -Xmx128m MyClassName

Page 32: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

32

Literatur & Quellen

• Richard Jones & Rafael Lins

Garbage Collection: Algorithms for Automatic Dynamic Memory Management

John Wiley & Sons, New York, 1996

• Garbage Collection in the Java HotSpot Virtual Machine

http://www.devx.com/Java/Article/21977

Tuning Garbage Collection with the 5.0 Java[tm] Virtual Machine

http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html

• Java™ Virtual Machines

http://java.sun.com/j2se/1.5.0/docs/guide/vm/index.html

• Java's garbage-collected heap

http://www.javaworld.com/javaworld/jw-08-1996/jw-08-gc.html

• Chapter 5 of Inside the Java Virtual Machinehttp://www.artima.com/insidejvm/ed2/jvm.html

Page 33: 1 VM Memory Management Thomas Nguyen 13.05.2009. 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu.

33

Rückblick

• Speicherdarstellung in einer Java VM– Heap, Stack, Method Area

• Speicher Allokation / Deallokation– „NEW“ Konstruktur, Referenzen

• Automatische Speicherbereinigung– Garbage Collection

• 2 Verfahren kennen gelernt– Mark & Sweep Collector– Copying Collector

• 3 verschiedene Garbage Collectoren in SUN´s JVM– Serial, Parallel & Concurrent Collector

Gut, dass es eine Garbage Collection gibt, oder ?