1 / 33

VM Memory Management

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

carver
Télécharger la présentation

VM Memory Management

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. Method Area CLASS A Constant Pool Class B Class A Fields Methods Attributes Architektur der Java VM

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

  7. 1 2 3 4 5 6 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. ptr into heap ptr into heap … Runtime Data Area´s HEAP MyObject object1; object1 = new MyObject(); … STACK ptr to class data ptr to class data information information Object reference instance data instance data ptr to class data information instance data Class Myobject Extends java/lang/object toString(); hashCode() Method Area Class Data MyObject Class Data

  9. Fast Allocation HEAP • Bump Pointer MyObject object; object = new MyObject; … Nächste freie Speicheradresse … … STACK 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 aus und markiert lebende Objekte • Sweep Phase Speicher wird von nicht markierten Objekten freigegeben ROOT

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

  20. Mark & Compact Collector • Zunächst wie der Mark&Sweep Alogrithmus • Compacting GC bewegt die Objekte während der Sweep Phase Kompaktifiziert Mark Phase ROOT

  21. ptr to class data instance data … instance data ptr to class data ptr into heap instance data ptr into heap … Speicherverwaltung HEAP MyObject object1; Object1 = new MyObject(); STACK Object reference Class Myobject Extends java/lang/object toString(); hashCode() Method Area Class Data MyObject Class Data

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

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

  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. tenured Eden full Generational Garbage Collector Old generation • Mark & Sweep GC (infrequently) Young generation • Copying GC (frequently) Survivor Spaces Survivor Spaces EDEN All Objects born here Most 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 Tuning http://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 ?

More Related