Frage

Ich versuche Was die Konzepte von zu verstehen jungen , alt und Dauer Generationen sind in der Java-Heap-Terminologie und genauer die Wechselwirkungen zwischen den drei Generationen.

Meine Fragen sind:

  • Was ist die junge Generation?
  • Was ist die alte Generation?
  • Was ist die permanente Generation?
  • Wie funktioniert die drei Generationen interact / beziehen sich auf einander?
War es hilfreich?

Lösung

Dies scheint ein weit verbreitetes Missverständnis. In Oracle JVM ist die permanente Generation nicht Teil des Haufens. Es ist ein separater Raum für Klassendefinitionen und die zugehörigen Daten. In Java 6 und früher internierten Saiten wurden auch in der permanenten Generation gespeichert. In Java 7 werden internierten Strings im Haupt Objektheap gespeichert.

Hier ist ein guter Beitrag auf permanente Erzeugung .

ich wie die Beschreibungen für jeden Raum gegeben in Oracle Führung auf JConsole :

  

Für die HotSpot Java VM, der Speicher   Pools für die serielle Garbage Collection   die folgende.

sind      
      
  • Eden Raum (Heap): Der Pool aus dem Speicher ursprünglich zugewiesen   Für die meisten Objekte.
  •   
  • Survivor Raum (Heap): Der Pool mit Objekten, die überlebt haben   die Speicherbereinigungs des Eden   Raum.
  •   
  • Tenured Generation (Heap): Der Pool mit Objekten, die bestanden haben   seit einiger Zeit in den Überlebenden Raum.
  •   
  • Permanent Generation (Nicht-Heap): Der Pool alle reflektierenden enthält   Daten der virtuellen Maschine selbst,   wie Klassen- und Methodenobjekte. Mit   Java VMs, dass die Datenfreigabe Verwendung Klasse,   Diese Generation ist unterteilt in   Nur-Lese-und Schreib-Lese-Bereiche.
  •   
  • Code-Cache (Nicht-Heap): Die HotSpot Java VM auch einen Code-Cache enthält,   enthaltenden Speicher, der verwendet wird für   Zusammenstellung und Speicherung von nativen   Code.
  •   

Java verwendet Generations-Speicherbereinigungs. Dies bedeutet, dass wenn Sie ein Objekt foo (was eine Instanz einer Klasse ist), desto mehr Garbage Collection Ereignisse es (wenn es noch Verweise darauf) überlebt, je weiter sie gefördert wird. Es beginnt in der jungen Generation (die sich in mehrere Räume unterteilt - Eden und Survivor). Und würde schließlich in der fest angestellten Generation am Ende, wenn es lange genug überlebt

Andere Tipps

  

Der Heap ist in jungen und alten Generationen wie folgt:

Young Generation : Es ist Platz, wo für kurze Zeit und in zwei Räume unterteilt gelebt:

  • Eden Raum : Wenn das Objekt mit neuem Keyword-Speicher erstellt zugewiesen in diesem Raum.
  • Survivor Raum : Dies ist der Pool, die Objekte enthält, die haben nach Java Garbage Collection von Eden Raum erhalten.

alte Generation : Dieser Pool im Grunde enthält tenured und virtuelle    (Reserviert) Raum und die Objekte werden halten, die überlebt    nachdem Garbage Collection von Young Generation.

  • Tenured Raum:. Dieser Speicherpool enthält Objekte, die nach mehreren Müllsammelmitteln Objekt überlebt, die nach der Garbage Collection von Survivor Raum überlebten

Permanent Generation:. Dieser Speicherpool als Name sagt auch permanente Klasse Metadaten und Deskriptoren Informationen enthalten, so PermGen Raum immer für Klassen reserviert und diejenigen, die zu den Klassen zum Beispiel statischer Elemente gebunden ist

  

Java8 Update:. PermGen wird ersetzt mit metaSpace , das sehr ähnlich ist
  Hauptunterschied ist, dass metaSpace Wiedergrößen dynamisch das heißt, es kann zur Laufzeit erweitern.
  Java metaSpace Raum: unbegrenzt (default)

Code-Cache (Virtual oder reserviert.): Wenn Sie HotSpot Java VM verwenden diese enthält Code-Cache-Bereich, enthalten Speicher, der für die Erstellung und Speicherung von nativen Code verwendet werden

eingeben Bild Beschreibung hier

Courtesy

  

Was ist die junge Generation?

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 überlebten Objekte sind gealtert und schließlich zu der alten Generation bewegen.

  

Was ist die alte Generation?

Die 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 ein Groß Garbage Collection

genannt
  

Was ist die permanente Generation?

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 mit metaSpace ersetzt wurde, da Java 8 Release.

PermSize & MaxPermSize werden die Parameter jetzt ignoriert werden

  

Wie funktioniert die drei Generationen interact / beziehen sich auf einander?

 image description hier

eingeben

Bildquelle & oracle TechNetwork Tutorial Artikel: http: //www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html

" Der General Garbage Collection Prozess " in oben Artikel beschreibt die Wechselwirkungen zwischen ihnen mit vielen Diagrammen.

Hier finden Sie aktuelle Zusammenfassung Diagramm:

 image description hier

eingeben

Die virtuelle Java-Maschine ist in drei Generationen organisiert: eine junge Generation, eine alte Generation, und eine permanente Generation. Die meisten Objekte werden zunächst in der jungen Generation zugeordnet. Die alte Generation enthält Objekte, die eine bestimmte Anzahl von jungen Generation Sammlungen überlebt haben, sowie einige große Objekte, die in der alten Generation direkt zugeordnet werden können. Die permanente Generation hält Objekte, dass der JVM bequem findet die Garbage Collector hat verwalten, wie Objekte beschreiben, Klassen und Methoden, sowie die Klassen und Methoden selbst.

Speicher in SunHotSpot JVM ist in drei Generationen organisiert: junge Generation, alte Generation und permanente Generation.

  • Young Generation. Die neu erstellte Objekte zu der jungen Generation zugeordnet sind
  • Alte Generation: Wenn die neuen Objektanforderungen für eine größere Heap-Speicher, wird es direkt in den alten gen zugeordnet. Auch Objekte, die ein paar GC-Zyklen überlebt haben, wird auf den alten gen d.h lange lebte Objekte Haus in alten gen gefördert.
  • Permanent Generation: Die permanente Generation hält Objekte, dass der JVM bequem findet die Garbage Collector hat verwalten, wie Objekte Klassen und Methoden zu beschreiben, sowie die Klassen und Methoden selbst
  • .

Zur Info:. Der permanente gen ist kein Teil des Java Heap betrachtet

Wie funktioniert die drei Generationen interact / beziehen sich auf einander?       Objekte (mit Ausnahme der große) werden zunächst an die junge Generation zugeordnet. Wenn ein Objekt bleibt nicht nach x lebendig. Sammelzyklen von Müll es wird auf den alten / tenured gen gefördert. Daher können wir sagen, dass die junge Generation die kurzlebigen Objekte enthält, während die alten gen die Objekte enthält, eine lange Lebensdauer haben. Die permanente gen nicht interact mit den anderen zwei Generationen.

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