Frage

Ich bin mit Haufen, Jung, Tenured und Perm Generation verwirrt.

Könnte jemand bitte erklären?

War es hilfreich?

Lösung

Der Kollektor Java Müll bezeichnet als Generations-Garbage-Collector . Objekte in einer Anwendung leben für längere oder kürzere Zeiträume je nachdem, wo sie entstehen und wie sie verwendet werden. Die wichtigste Erkenntnis dabei ist, dass verschiedene Speicherbereinigungsstrategien kurz mit gelebt und langlebigen Objekten ermöglichen die GC für jeden Fall spezifisch optimiert werden.

Grob gesagt, als Objekte "überleben", wiederholten Garbage Collection in der Young Generation sie migriert werden die Tenured Generation . Die Permanent Generation ist ein Sonderfall, es enthält Objekte, die von der JVM benötigt werden, die nicht unbedingt in Ihrem Programm dargestellt wird, zum Beispiel Objekten, die Klassen und Methoden darstellen.

Da die Young Generation wird in der Regel eine Menge Müll enthalten darin ist optimiert für die auf einmal eine Menge ungenutzter Objekte loszuwerden. Die Tenured Generation , da es enthält mehr gelebte Objekte für eine schnelle Garbage Collection optimiert, ohne viel Speicherplatz zu verschwenden.

Mit den Verbesserungen in der Garbage Collection-Technologie der Details sind ziemlich komplex und variieren je nach JVM und wie sie konfiguriert wurde. Sie sollten die Dokumentation für die spezifische JVM lesen Sie verwenden, wenn Sie müssen genau wissen, was los ist.

Das heißt, es ist eine einfache historische Anordnung dies auf konzeptioneller Ebene noch nützlich ist. Historisch die Young Generation wäre ein Kopie Sammler und das Tenured Generation sein ein

Andere Tipps

Java Heap-Speicher ist ein Teil des Speichers JVM von Betriebssystem zugewiesen. Jedes Mal, wenn wir Objekte erstellen, werden sie erstellt innerhalb Haufen in Java .

Java Heap Raum ist in drei Bereiche unterteilt oder Generation aus Gründen der Garbage Collection genannt Young Generation, Alte oder verbeamtet Erzeugung und Permanent Generation . Permanent Generation wird Müll bei voller gc gesammelt in Hotspot JVM

Die Young Generation ist, wo alle neuen Objekte zugeordnet sind und im Alter. Als die junge Generation füllt, führt dies zu einer kleineren Garbage Collection. Eine junge Generation voller toter Objekte sehr schnell gesammelt. Einige überlebenden Objekte sind gealtert und schließlich zu der alten Generation bewegen.

Der alte Generation wird verwendet, überlebende Objekte speichern lang. Typischerweise wird ein Schwellenwert für die junge Generation Objekt festgelegt und wenn das Alter erfüllt ist, wird das Objekt der alten Generation bewegt. Schließlich wird die alte Generation Bedürfnisse gesammelt werden. Dieses Ereignis wird eine große Garbage Collection genannt.

Die Permanent Generation enthält Metadaten, die von der JVM erforderlich, um die Klassen und Methoden in der Anwendung verwendet zu beschreiben. Die permanente Generation wird von der JVM zur Laufzeit bevölkert basierend auf Klassen in Verwendung durch die Anwendung.

PermGen wurde ersetzt metaSpace , da Java 8 Release. PermSize & MaxPermSize Parameter wird nun ignoriert. Werfen Sie einen Blick dieses dzone Artikel von Pierre - Hugues Charbonneau über verstehen mLokal .

 image description hier

eingeben

Bildquelle: http://www.oracle .com / webfolder / TechNetwork / tutorials / obe / java / GC01 / index.html

Siehe gleiche Artikel für weitere Details.

Alle Objekte in der Halde überleben, wenn sie referenziert werden. Wenn sie nicht mehr sind, wird die Garbage Collector (GC) ihr Gedächtnis zurückzugewinnen.

PermGen, Young und Tenured sind diferent clasifications von Objekten (oder Räume in der Halde, wo sie sein können).

PermGen: Diese Objekte werden immer da sein, sie sind nicht Müll gesammelt. Klassen-Objekte sind dort internierten Strings, usw. Ich weiß nicht, ob es ein GC gibt es (wenn das System leeren Klassen ... aber es ist nicht eine normale Sache)

Young:. , wenn ein Objekt erstellt wird, ist es hier

Tenured:. ein Objekt geht diese Klassifikation / Kategorie, wenn es überlebt N GC Pässe (überleben = GC geht aber dieses Objekt referenziert wird, so dass es nicht zurückgewonnen werden kann)

Abhängig von GC verwendet und einige Parametrisierung, GC geht mehr oder weniger oft.

Dann Garbage Collection in dem Heap verschiedene Ansätze zum Maange Objekten. Diese Klassifizierung von Objekten hilft, es zu tun.

Hier ist eine andere ausgezeichnete (obwohl lange) Artikel auf, wie zum Abstimmen / Größe GC-Parameter, die Sie können helfen zu verstehen, noch mehr:

https://docs.oracle.com/ JavaSE / 8 / docs / technotes / guides / vm / gctuning /

Eine sehr nützliche lesen, wenn Sie GC Probleme und müssen wissen, sind mit, wie GC-Protokolle zu lesen, oder Notwendigkeit zu verstehen, wie Ihre aktuelle GC Sammler funktioniert.

Wenn Sie Remote anschließen Überwachung eines laufenden Systems in Echtzeit Speichernutzung und GC läuft überprüfen Sie dieses Werkzeug, um zu sehen:

http://java.sun.com/performance/jvmstat/visualgc.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top