Heim  >  Artikel  >  Java  >  JVM Advanced Features – Garbage Collection-Algorithmus-Tutorial

JVM Advanced Features – Garbage Collection-Algorithmus-Tutorial

巴扎黑
巴扎黑Original
2017-06-26 11:41:531082Durchsuche

1. Mark-Clear-Algorithmus

Der Ausführungsprozess ist derselbe wie der Name ist in zwei Phasen unterteilt: Markieren und löschen

Markieren Sie zunächst die Objekte, die recycelt werden müssen. Nach Abschluss der Markierung werden die markierten Objekte einheitlich recycelt, wie in der Abbildung unten gezeigt .

Eine Einführung in den spezifischen Markierungsprozess finden Sie in der „Erreichbarkeitsanalyse“ im vorherigen Artikel zur Bestimmung des Objektüberlebensalgorithmus für die Garbage Collection

    Recycling Vorheriger Zustand >

Nachteile:

1. Die Effizienz ist nicht hoch, die Effizienz der beiden Aktionen Markieren und Löschen ist nicht zu hoch

2. Wie auf dem Bild zu sehen ist, enthält der Speicher nach dem Löschen eine große Anzahl von Fragmenten im Objekt. Der Nachteil besteht darin, dass es bei der Zuweisung von Speicherplatz zu großen Objekten zu   kommen kann dadurch, dass kein ausreichend großer zusammenhängender Raum gefunden werden kann, was dazu führt, dass im Voraus ein GC auftritt.

2. Kopieralgorithmus

Das Prinzip des Kopieralgorithmus besteht darin, den Speicherplatz in zwei Teile aufzuteilen Wenn eine Speicherbereinigung erforderlich ist, kopieren Sie die verbleibenden Objekte

im verwendeten Speicher in einen anderen Speicherbereich und löschen Sie dann den vorherigen Speicherbereich. Wie im Bild unten gezeigt

    

  

Zustand vor dem Recycling   

      

Re Radsportpostenstaat

 

Vorteile: Der Replikationsalgorithmus ist effizienter

Nachteile: Dies Der durch die geopferte Platz Algorithmus ist größer. Immerhin ist der nutzbare Speicherplatz halb so groß wie ursprünglich

3. Markieren Sie den Sortieralgorithmus

 

Dies ist ein Algorithmus, der häufig in der alten Generation verwendet wird, da Objekte in der alten Generation für eine lange Zeit gespeichert werden.

Der Markierungsprozess des Markierungs- und Sortieralgorithmus ist der gleiche wie der Markierungsreinigungsalgorithmus, die nachfolgenden Schritte sind jedoch unterschiedlich. Der Markierungs- und Sortieralgorithmus verschiebt die überlebenden Objekte an einem Ende,

Bereinigen Sie dann den gesamten Speicher auf der anderen Seite der Überlebensgrenze, wie unten gezeigt

 

Vorheriger Zustand

🎜> 4. Generationssammlungsalgorithmus

Aktuelle virtuelle Maschinen verwenden alle den Generationssammlungsalgorithmus . Dieser Algorithmus unterteilt den Speicher entsprechend den unterschiedlichen Überlebenszyklen von Objekten

Im Allgemeinen wird der Java-Heap in die neue Generation und die alte Generation unterteilt

5. Algorithmusnutzung der neuen Generation

In kommerziellen virtuellen Maschinen wird der Replikationsalgorithmus zum Garbage Collection der neuen Generation verwendet. der Objekte der neuen Generation haben eine sehr kurze Überlebenszeit

Daher ist es nicht notwendig, den Speicher in zwei Blöcke gleicher Größe aufzuteilen, so dass nur ein kleinerer Raum für das Kopieren überlebender Objekte übrig bleibt. Daher wird der

-Speicher normalerweise in einen größeren Eden-Bereich und zwei kleinere Überlebensbereiche unterteilt. Beim Recycling werden die überlebenden Objekte im Eden-Bereich und im Überlebensbereich in einen anderen Bereich kopiert

Im Survivor-Bereich, Eden und den gebrauchten Servivor aufräumen.

Das obige ist der detaillierte Inhalt vonJVM Advanced Features – Garbage Collection-Algorithmus-Tutorial. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Alles in Java ist ein ObjektNächster Artikel:Alles in Java ist ein Objekt