View
73
Download
0
Category
Preview:
DESCRIPTION
VM Memory Management. Thomas Nguyen 13.05.2009. VM Memory Management. Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu tun? Wie funktioniert ein Garbage Collector?. Memory Management?. Speicher ist begrenzt Lebenszyklus von Java Objekten - PowerPoint PPT Presentation
Citation preview
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 tun?• Wie funktioniert ein Garbage Collector?
3
Memory Management?
• Speicher ist begrenzt• Lebenszyklus von Java Objekten• Speicher zuordnen (allokieren) • Speicher freigeben (deallokieren)
Heikle Sache – nicht ungefährlich!
4
Architektur der Java-VM
Quelle: http://www.artima.com/insidejvm/ed2/jvm2.html
5
Architektur der Java VM
Method Area
CLASS A
Constant Pool
Fields
Methods
Attributes
Class B
Class A
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
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
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
9
Fast Allocation
• Bump Pointer …
…
Nächste freie Speicheradresse
MyObject object;object = new MyObject;
STACK
HEAP
…
object
…
10
Architektur der Java-VM
Quelle: http://www.artima.com/insidejvm/ed2/jvm2.html
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
12
Garbage Collection
• JVM hat das Rad nicht neu erfunden• Findet auch Anwendung bei vielen andern Sprachen
– Lisp (1959)– Smalltalk– Scheme– Objective C– C#– …
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
14
Anforderungen an eine Garbage Collection (SUN)
• safe and comprehensive
• efficiently without introducing long pauses
• limitation of fragmentation
• scalability
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
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
17
Erreichbarkeit von Objekten
• Durchlaufe eine DFS (Tiefensuche) vom Root• Jedes Objekt hat ein „visited“ tag
ROOT
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
19
Compaction
Fragmentierung: Freier Speicher hat die Tendenz sich in viele kleine Bereiche aufzusplitten.
Objekt Objekt Objekt
ObjektObjekt Objekt
Objekt
Objekt
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
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
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
23
HEAP
Referenzen
• Diese „second“ Pointer befinden sich in einer separaten Tabelle
object
ptr
object
STACKHandle Pool
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
25
Copying Garbage Collector
Schneller als M&S, da nur eine Phase
Vorteil: Geschwindigkeit
Nachteil: Halbierung des Speichers
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
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
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!!!
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
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)
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
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
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 ?
Recommended