vm memory management
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 PresentationTRANSCRIPT
![Page 1: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/1.jpg)
1
VM Memory Management
Thomas Nguyen
13.05.2009
![Page 2: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/2.jpg)
2
VM Memory Management
• Was ist Memory Management?• Was hat Garbage Collection mit Memory Management
zu tun?• Wie funktioniert ein Garbage Collector?
![Page 3: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/3.jpg)
3
Memory Management?
• Speicher ist begrenzt• Lebenszyklus von Java Objekten• Speicher zuordnen (allokieren) • Speicher freigeben (deallokieren)
Heikle Sache – nicht ungefährlich!
![Page 4: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/4.jpg)
4
Architektur der Java-VM
Quelle: http://www.artima.com/insidejvm/ed2/jvm2.html
![Page 5: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/5.jpg)
5
Architektur der Java VM
Method Area
CLASS A
Constant Pool
Fields
Methods
Attributes
Class B
Class A
![Page 6: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/6.jpg)
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: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/7.jpg)
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: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/8.jpg)
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: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/9.jpg)
9
Fast Allocation
• Bump Pointer …
…
Nächste freie Speicheradresse
MyObject object;object = new MyObject;
STACK
HEAP
…
object
…
![Page 10: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/10.jpg)
10
Architektur der Java-VM
Quelle: http://www.artima.com/insidejvm/ed2/jvm2.html
![Page 11: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/11.jpg)
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: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/12.jpg)
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: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/13.jpg)
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: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/14.jpg)
14
Anforderungen an eine Garbage Collection (SUN)
• safe and comprehensive
• efficiently without introducing long pauses
• limitation of fragmentation
• scalability
![Page 15: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/15.jpg)
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: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/16.jpg)
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: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/17.jpg)
17
Erreichbarkeit von Objekten
• Durchlaufe eine DFS (Tiefensuche) vom Root• Jedes Objekt hat ein „visited“ tag
ROOT
![Page 18: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/18.jpg)
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: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/19.jpg)
19
Compaction
Fragmentierung: Freier Speicher hat die Tendenz sich in viele kleine Bereiche aufzusplitten.
Objekt Objekt Objekt
ObjektObjekt Objekt
Objekt
Objekt
![Page 20: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/20.jpg)
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: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/21.jpg)
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: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/22.jpg)
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: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/23.jpg)
23
HEAP
Referenzen
• Diese „second“ Pointer befinden sich in einer separaten Tabelle
object
ptr
object
STACKHandle Pool
![Page 24: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/24.jpg)
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: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/25.jpg)
25
Copying Garbage Collector
Schneller als M&S, da nur eine Phase
Vorteil: Geschwindigkeit
Nachteil: Halbierung des Speichers
![Page 26: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/26.jpg)
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: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/27.jpg)
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: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/28.jpg)
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: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/29.jpg)
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: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/30.jpg)
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: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/31.jpg)
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: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/32.jpg)
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: VM Memory Management](https://reader035.vdocuments.site/reader035/viewer/2022062304/56814659550346895db377d8/html5/thumbnails/33.jpg)
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 ?