Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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.

Ähnliche Präsentationen


Präsentation zum Thema: "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."—  Präsentation transkript:

1 1 VM Memory Management Thomas Nguyen

2 2 VM Memory Management Was ist Memory Management? Was hat Garbage Collection mit Memory Management zu tun? Wie funktioniert ein Garbage Collector?

3 3 Memory Management? Speicher ist begrenzt Lebenszyklus von Java Objekten Speicher zuordnen (allokieren) Speicher freigeben (deallokieren) Heikle Sache – nicht ungefährlich!

4 4 Architektur der Java-VM Quelle:

5 5 Architektur der Java VM Method Area CLASS A Constant Pool Fields Methods Attributes Class B Class A

6 6 Java VM – STACKS STACK FRAME 1 Lokale Variablen Operanden StackRCP Referenz STACK FRAME 3… STACK FRAME 2 STACK FRAME 1 Architektur der Java-VM

7 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 …

8 8 HEAP Runtime Data Area´s ptr into heap … … MyObject object1; object1 = new MyObject(); … ptr to class data instance data Method Area Class Data MyObject Class Data Class Myobject Extends java/lang/object toString(); hashCode() STACK Object reference informationptr to class datainformation ptr to class datainformation

9 9 Fast Allocation Bump Pointer … … Nächste freie Speicheradresse MyObject object; object = new MyObject; STACK HEAP … object …

10 10 Architektur der Java-VM Quelle:

11 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 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 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 14 Anforderungen an eine Garbage Collection (SUN) safe and comprehensive efficiently without introducing long pauses limitation of fragmentation scalability

15 15 GARBAGE COLLECTION Grundlagen 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 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 17 Erreichbarkeit von Objekten Durchlaufe eine DFS (Tiefensuche) vom Root Jedes Objekt hat ein visited tag ROOT

18 18 Mark & Sweep Garbage Collection 2 Phasen: –Mark Phase Startet DFS von jedem Root aus und markiert lebende Objekte –Sweep Phase Speicher wird von nicht markierten Objekten freigegeben ROOT

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

20 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 21 HEAP Speicherverwaltung ptr into heap … … MyObject object1; Object1 = new MyObject(); … ptr to class data instance data ptr to class data instance data Method Area Class Data MyObject Class Data Class Myobject Extends java/lang/object toString(); hashCode() STACK Object reference

22 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 STACK HEAP Handles

23 23 HEAP Referenzen Diese second Pointer befinden sich in einer separaten Tabelle object ptr object STACK Handle Pool

24 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 Old SpaceNew Space

25 25 Copying Garbage Collector Schneller als M&S, da nur eine Phase Vorteil: Geschwindigkeit Nachteil: Halbierung des Speichers

26 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 27 Generational Garbage Collector Old generation –Mark & Sweep GC (infrequently) Young generation –Copying GC (frequently) Survivor Spaces Eden full tenured EDEN All Objects born here Most die here EDEN All Objects born here Most die here

28 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 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 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 31 Tuning des SUN JVM Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning 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 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 Tuning Garbage Collection with the 5.0 Java[tm] Virtual Machine Java Virtual Machines Java's garbage-collected heap Chapter 5 of Inside the Java Virtual Machine

33 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 ?


Herunterladen ppt "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."

Ähnliche Präsentationen


Google-Anzeigen