Heim Java javaLernprogramm Detaillierte Erläuterung der JVM-Speicherbereichsaufteilung und des Garbage-Collection-Mechanismus

Detaillierte Erläuterung der JVM-Speicherbereichsaufteilung und des Garbage-Collection-Mechanismus

Jun 23, 2017 pm 03:11 PM
内存 区域 垃圾

Wenn wir Java-Code schreiben, müssen wir uns in den meisten Fällen nicht darum kümmern, ob oder wann Ihr neues Objekt freigegeben wird. Weil es in der JVM einen automatischen Garbage-Collection-Mechanismus gibt. Im vorherigen Blog haben wir unten über die Speicherverwaltungsmethoden von MRC (manuelle Referenzzählung) und ARC (automatische Referenzzählung) in Objective-C gesprochen Werde es überprüfen. Der aktuelle JVM-Speicherrecyclingmechanismus verwendet keine Referenzzählung, sondern hauptsächlich „Kopierrecycling“ und „adaptives Recycling“.

Natürlich gibt es neben den beiden oben genannten Algorithmen noch weitere Algorithmen, die im Folgenden ebenfalls vorgestellt werden. In diesem Blog werden wir zunächst kurz über die regionale Aufteilung der JVM sprechen und dann auf dieser Grundlage den Garbage-Collection-Mechanismus der JVM vorstellen.

1. Kurze Beschreibung der JVM-Speicherbereichsaufteilung

Natürlich dieser Teil ist eine kurze Diskussion. Schauen wir uns die Aufteilung des Speicherbereichs der JVM an, um den Weg für die Erweiterung des Garbage-Collection-Mechanismus zu ebnen. Natürlich gibt es im Internet viele detaillierte Informationen zur Aufteilung der JVM-Speicherbereiche, bitte googeln Sie diese selbst.

Basierend auf der Aufteilung des JVM-Speicherbereichs habe ich einfach das folgende schematische Diagramm gezeichnet. Der Bereich ist hauptsächlich in zwei große Blöcke unterteilt. Die von uns erstellten Objekte werden im Heap-Bereich zugewiesen . Der Garbage Collector recycelt hauptsächlich Speicher im Heap-Bereich. Der andere Teil ist der

Nicht-Heap-Bereich

Der Nicht-Heap-Bereich umfasst hauptsächlich den „Code-Cache-Bereich (Code-Cache)“, der zum Kompilieren und Speichern verwendet wird lokaler Code. Die „Eternal Generation (Perm Gen)“, die die eigenen statischen Daten der JVM speichert, der „Java Virtual Machine Stack (JVM Stack), der Verweise auf Methodenparameter und lokal speichert Variablen und zeichnet die Reihenfolge der Methodenaufrufe auf“ und „Lokaler Methodenstapel (Lokaler Methodenstapel)“.  

Der Garbage Collector stellt hauptsächlich ungenutzte Speicherbereiche im Heap-Bereich wieder her und organisiert die entsprechenden Bereiche. Im Heap-Bereich wird es basierend auf der Überlebenszeit des Objektspeichers oder der Größe des Objekts in „

junge Generation

“ und „alte Generation“ unterteilt. Objekte der „jungen Generation“ sind instabilund anfällig für Müll, während Objekte der „alten Generation“ relativ stabil sind und weniger wahrscheinlich Müll erzeugen. Der Grund für die Trennung besteht darin, entsprechend den Eigenschaften der Speicherblöcke in verschiedenen Bereichen verschiedene Speicherwiederherstellungsalgorithmen anzuwenden, um die Effizienz der Speicherbereinigung im Heap-Bereich zu verbessern. Nachfolgend erfolgt eine ausführliche Einführung.

2. Einführung in gängige Speicherrecycling-Algorithmen Wir haben ein kurzes Verständnis von Schauen wir uns neben dem oben genannten

Die Aufteilung der Speicherbereiche in JVM

einige gängige Speicherrecycling-Algorithmen an. Natürlich wird der unten vorgestellte Speicherrecycling-Algorithmus nicht nur in JVM verwendet, wir werden auch die Speicherrecycling-Methode in OC überprüfen. Im Folgenden werden hauptsächlich „Referenzzählrecycling“, „Kopierrecycling“, „markiertes Sortierrecycling“ und „Generationsrecycling“ aufgeführt.

1. Referenzzählung Speicherrecycling Referenzanzahl (

Referenzanzahl

) Der Speicher Der Recyclingmechanismus ist der Speicherrecyclingmechanismus, der derzeit in den Sprachen Objective-C und Swift verwendet wird. In früheren Blogs haben wir auch ausführlich über das Speicherrecycling mit Referenzzählung gesprochen. Solange eine Referenz vorhanden ist, wird der Referenzzähler um 1 erhöht. Wenn der Referenzzähler 0 erreicht, wird der Speicherblock zurückgefordert. Natürlich kann diese Speicherbereinigungsmethode problemlos einen „Referenzzyklus“ bilden. Zirkelverweise im Referenzzähler von

Objective-C

verursachen Speicherlecks. Variablen können als schwache oder starke Typen deklariert werden. Das heißt, wir können die Referenz als „Starke Referenz“ oder „Schwache Referenz“ definieren. Wenn „Starker Referenzzyklus“ erscheint, können wir eine der Referenzen auf schwacher Typ setzen. Dann wird dieser starke Referenzzyklus unterbrochen und es tritt kein „Speicherverlust“ auf. Problem. Weitere und detailliertere Informationen zum Thema „Reference Counted Memory Recycling“ finden Sie in den zuvor veröffentlichten verwandten Blogs zu OC-Inhalten.

Um besser zu verstehen, wie die Referenzzählung funktioniert, habe ich einfach das Bild unten gezeichnet. Die drei Referenzen a, b und c im Stapel links verweisen auf verschiedene Bereichsblöcke im Heap. Wenn in einem Speicherbereichsblock im Heap ein starker Verweis auf diesen Bereich vorhanden ist, wird dessen RetainCount um 1 erhöht. Wenn schwach auf verweist, wird retainCount nicht um 1 erhöht.

Schauen wir uns zunächst den ersten Speicherbereich an, auf den a verweist. Da in diesem Speicherblock nur a stark referenziert wird, gilt retainCount=1 Die Erinnerung wird es verstehen, recycelt zu werden. In diesem Fall tritt kein Speicherverlust auf.

Werfen wir einen Blick auf den Speicherbereich 2, auf den b zeigt. Sowohl b als auch Speicherblock 3 haben starke Verweise auf Speicherblock 2, also ist 2 retainCount=2. Speicherblock 2 hat auch einen starken Verweis auf Speicherblock 3, daher ist bei 3 der RetainCount = 1. Daher gibt es in dem Speicherbereich, auf den b zeigt, einen „starken Referenzzyklus“, denn wenn b nicht mehr auf diesen Speicherbereich zeigt, wird rc=2 zu rc=1. Da RetainCount nicht Null ist, werden diese beiden Speicherbereiche nicht freigegeben, und 2 wird nicht freigegeben, sodass die drei Speicherbereiche natürlich nicht freigegeben werden, dieser Speicherbereich jedoch nicht erneut verwendet wird, was zu „Speicherverlust". Wenn diese beiden Speicherbereiche besonders groß sind, können wir uns vorstellen, dass die Folgen gravierend sein werden.

Eine Situation wie eine C-Referenz führt nicht zu einem „

starken Referenzzyklus“, da eine der Referenzketten eine schwache Referenz ist. Wenn c nicht mehr auf den vierten Speicherblock verweist, ändert sich rc von 1 auf Null, und der Blockbereich wird sofort freigegeben. Nachdem Speicherblock 4 freigegeben wurde, ändert sich der RC von Speicherblock 5 von 1 auf 0, und Speicherblock 5 wird ebenfalls freigegeben. In diesem Fall treten keine Speicherlecks auf. In Objective-C wird diese Methode zum Recycling von Speicher verwendet. Natürlich gibt es in OC neben „starker Referenz“ und „schwacher Referenz“ auch einen automatischen Freigabepool. Mit anderen Worten, die Autorealease-Typreferenz wird nicht sofort freigegeben, wenn retainCount = 0, sondern erst freigegeben, wenn sie aus dem automatischen Freigabepool kommt. Ich werde hier nicht näher darauf eingehen.

 

2. Kopierspeicherrecycling

Nachdem wir über das Referenzzählrecycling gesprochen haben Wir wissen, dass die Referenzzählung leicht zu Problemen mit „zyklischen Referenzen“ führen kann. Um das durch „

zyklische Referenzen“ verursachte Speicherleckproblem zu lösen, werden die Konzepte „starke Referenz“ und „schwache Referenz“ eingeführt im OC. Als nächstes werden wir uns den Kopierspeicher-Recyclingmechanismus ansehen. Bei diesem Mechanismus besteht kein Grund zur Sorge über das Problem der „zyklischen Referenzen“. Einfach ausgedrückt ist der Kern des kopiebasierten Recyclings das „Kopieren“, aber die Voraussetzung ist das bedingte Kopieren. Bei der Garbage Collection werden die „lebenden Objekte“ in einen anderen leeren Heap-Bereich kopiert und anschließend der vorherige Bereich gemeinsam geleert. „Live-Objekte“ beziehen sich auf Objekte, die auf dem „Stapel“ entlang der Referenzkette des Objekts erreichbar sind. Natürlich muss nach dem Kopieren des Live-Objekts in den neuen „Heap-Bereich“ auch der Verweis auf den Stack-Bereich geändert werden.

Unten sehen Sie ein vereinfachtes Diagramm des von uns gezeichneten Kopiertyps. Es unterteilt den Heap hauptsächlich in zwei Teile. Während der Speicherbereinigung werden lebende Objekte auf einem Heap auf einen anderen Heap kopiert. Der darunter liegende Heap-1-Bereich ist der aktuell verwendete Block, und der Heap-Bereich 2 ist der freie Bereich. Die nicht markierten Speicherblöcke im Heap-Bereich 1, also 2 und 3, sind Müllobjekte, die recycelt werden müssen. Und 1, 4 und 5 sind „lebende Objekte“, die kopiert werden müssen. Weil Block 1 über a auf dem Stapel erreichbar ist und die Blöcke 4 und 5 über c erreichbar sind. Obwohl die Blöcke 2 und 3 Referenzen haben, stammen sie nicht aus dem

Nicht-Heap-Bereich , d. h. die Referenzen der Blöcke 2 und 3 sind beide Referenzen aus dem Heap-Bereich, also Objekte, die recycelt werden müssen .

 

Nachdem Sie das Live-Objekt gefunden haben, müssen Sie als Nächstes das Live-Objekt kopieren und in den Heap-2-Bereich kopieren. Natürlich sind die Speicheradressen zwischen Objekten, die in den Heap-Bereich 2 kopiert werden, fortlaufend. Wenn Sie neuen Speicherplatz zuweisen möchten, können Sie ihn direkt aus einem freien Abschnitt des Heaps zuweisen. Dies ist effizienter bei der Zuweisung von Speicherplatz. Nachdem das Objekt kopiert wurde, muss die Referenzadresse aus dem „Nicht-Heap-Bereich“ geändert werden. Wie unten gezeigt.

 

Nachdem der Kopiervorgang abgeschlossen ist, können wir den gesamten Speicherplatz im Heap-Bereich 2 direkt recyceln. Das Folgende ist das Endergebnis nach dem Kopieren und Recycling. Nachdem der untere Heap-Bereich 1 geleert wurde, können die kopierten Objekte empfangen werden. Wenn die Speicherbereinigung im Heap-Bereich 2 durchgeführt wird, werden die Live-Objekte im Heap-Bereich 2 in den Heap-Bereich 1 kopiert.

Aus diesem Beispiel können wir ersehen, dass die Effizienz der „Kopieren“-Garbage Collection immer noch relativ hoch ist, wenn viel Speichermüll vorhanden ist, da relativ wenige kopierte Objekte vorhanden sind und der alte Heap-Speicherplatz direkt bereinigt werden kann beim Ausräumen. Wenn jedoch relativ wenig Müll vorhanden ist, kopiert diese Methode eine große Anzahl lebender Objekte und die Effizienz ist immer noch relativ gering. Diese Methode teilt auch den Heap-Speicherplatz in zwei Hälften. Mit anderen Worten, die Hälfte davon ist immer frei und die Auslastung des Heap-Speicherplatzes ist nicht hoch.

 

3. Markierungskomprimierungs-Wiederherstellungsalgorithmus

Aus dem Obigen Beim Garbage-Collection-Prozess „Kopieren “ wissen wir, dass die Effizienz bei viel Müll relativ hoch ist, bei wenig Müll jedoch die Effizienz der Arbeitsmethode relativ gering ist. Als nächstes werden wir einen anderen Markierungskomprimierungs-Recycling-Algorithmus vorstellen. Dieser Algorithmus ist effizienter, wenn weniger Müll vorhanden ist, aber wenn mehr Müll vorhanden ist, ist die Effizienz nicht hoch >“ bildet eine Ergänzung. Im Folgenden stellen wir den Markierungskomprimierungs-Recycling-Algorithmus vor. Markierung – Der erste Schritt der Komprimierung ist die Markierung, die die Markierung der „

lebenden Objekte

“ im Heap-Bereich erfordert. Wir haben im obigen Inhalt bereits darüber gesprochen, was ein „lebendes Objekt“ ist, daher gehen wir hier nicht auf Details ein. Anhand der Eigenschaften von „lebenden Objekten“ können wir erkennen, dass es sich bei den folgenden lebenden Objekten um die Speicherbereiche 1 und 3 handelt, also markieren wir sie.  

Nachdem die Markierung abgeschlossen ist, beginnen wir mit der Komprimierung, komprimieren die lebenden Objekte in einen Abschnitt des „Heap-Bereichs“ und löschen dann die verbleibenden Teile. Unten ist die Komprimierung der beiden lebenden Objekte 1 und 3. Reinigen Sie nach der Komprimierung den Raum darunter. Mit anderen Worten: Im Clean-Teil können neue Objekte zugewiesen werden.

 

Der Screenshot unten ist markiert, komprimiert und bereinigt. Bei der markierten komprimierten Speicherbereinigung kann der Speicherplatz im Heap-Bereich voll ausgenutzt werden. Wenn zu viel Speicher vorhanden ist und eine starke Fragmentierung vorliegt, werden mehr „lebende Objekte“ verschoben Der Wirkungsgrad ist relativ gering. Diese Methode kann in Verbindung mit „Kopieren“ verwendet werden, um basierend auf dem Müllstatus des aktuellen Heap-Bereichs auszuwählen, welche Recyclingmethode verwendet wird. Es ergänzt die Vorteile von

„Kopieren“

. Der Algorithmus, der die Recyclingmethoden „Kopieren“ und „Markieren-Komprimieren“ integriert, ist der „Generations“- Garbage-Collection-Mechanismus, der im Folgenden ausführlich vorgestellt wird.  

4. Generationsbasierte Müllabfuhr

" Generation

“ bedeutet die Einteilung von Objekten in verschiedene Generationen basierend auf ihrer Anfälligkeit für Müllerzeugung oder der Größe des Objekts, die in „junge Generation“, „alte Generation“ und „permanente Generation“ unterteilt werden können. Die „permanente Generation“ ist nicht im Haufen, deshalb werden wir nicht noch einmal darüber diskutieren. Basierend auf den Merkmalen der generationsübergreifenden Speicherbereinigung wird das folgende vereinfachte Diagramm gezeichnet. Im Halde sind die Bereiche hauptsächlich in „Junge Generation“ und „Alte Generation“ unterteilt. Die Erstellung des Speichers von Objekten in der „jungen Generation“ dauert nicht lange, er wird relativ schnell aktualisiert und ist anfällig für „Speichermüll“. Daher ist die Recyclingmethode „Kopieren“ für die Speicherbereinigung in der „jungen Generation“ erforderlich effizienter. Die „junge Generation“ kann in zwei Bereiche unterteilt werden, einer ist

Eden Space (Eden Garden) und Survivor Sprace (Überlebensbereich)

. Eden Space speichert hauptsächlich Objekte, die zum ersten Mal erstellt wurden, während Survivor Sprace die „lebenden Objekte“ speichert, die aus Eden Space überlebt haben. Der Survivor Sprace (Überlebensbereich) ist in zwei Blöcke unterteilt: Form und To, die zum Kopieren von Objekten zueinander zur Müllbereinigung verwendet werden. Die „alte Generation“ speichert einige „große Objekte“ und „Objekte“, die den

Survivor Sprace

überlebt haben. Im Allgemeinen sind die Objekte in der „alten Generation“ relativ stabil und generieren weniger In diesem Fall ist es effizienter, die Recyclingmethode „Markierung“ zu verwenden. „Generational Garbage Collection“ teilt und erobert hauptsächlich, indem es verschiedene Objekte nach ihren Merkmalen klassifiziert und geeignete Garbage Collection-Lösungen basierend auf den Merkmalen der Klassifizierung auswählt.  

3. Das spezifische Arbeitsprinzip der generationsübergreifenden Müllabfuhr

Natürlich kann die spezifische Garbage Collection von JVM je nach Threads in „Serielle Garbage Collection“, die einen einzelnen Thread zum Recycling verwendet, und „Parallele Garbage Collection“ unterteilt werden ". Je nach Aussetzungsstatus des Programms kann es in „Exklusives Recycling“ und „Gleichzeitiges Recycling“ unterteilt werden. Natürlich haben wir schon oft darüber gesprochen. „Parallel“ und „Parallelität“ sind definitiv nicht die gleichen Konzepte und dürfen nicht verwechselt werden. In diesem Blog wird nicht näher auf die oben genannten Methoden eingegangen. Wenn Sie interessiert sind, googeln Sie sie bitte.

Werfen wir einen Blick auf die vollständigen Schritte des spezifischen Arbeitsprinzips der „Generations-Garbage Collection“, um die Ausführungsmethode der „Generations-Garbage Collection“ intuitiv zu spüren.

1. Vor der Müllabfuhr

Das Bild unten wartet auf „

Generationen-Müllabfuhr“ „Aus dem Bild unten können wir ersehen, dass ein Teil des zugewiesenen Objektspeichers im Heap nicht auf dem Stapel referenziert wird. Dies sind die Objekte, die recycelt werden müssen. Wir können sehen, dass der Haufen unten als Ganzes in „junge Generation“ und „alte Generation“ unterteilt ist und die junge Generation in drei Bereiche unterteilt werden kann: Eden Space, From und To. Was die Rolle der einzelnen Bereiche betrifft, haben wir sie bereits oben bei der Einführung der „Generations-Garbage Collection“ vorgestellt, daher werden wir sie in diesem Teil nicht im Detail vorstellen.

 

2. Generationsübergreifende Müllabfuhr

Das folgende Bild ist ein Vergleich der oben genannten Der Garbage-Collection-Prozess der Heap-Steuerung. Wie wir auf dem Bild oben sehen können, ist der Bereich „An“ ein leerer Bereich und kann kopierte Objekte aufnehmen. Da die „junge Generation“ dazu neigt, Speichermüll zu erzeugen, wird eine Methode zum „Kopieren“ des Speicherrecyclings übernommen. Wir kopieren die „Live-Objekte“ in den beiden Heap-Blöcken

Eden Space und From in den To-Bereich. Beim Kopieren müssen wir auch die Stapelreferenzadresse des kopierten Speichers ändern. Der Speicherplatz für „große Objekte“ im From- oder Eden-Bereich wird direkt in die „alte Generation“ kopiert. Da die Effizienz mehrerer Kopien „großer Objekte“ in den Bereichen Von und Bis relativ gering ist, fügen Sie sie direkt der „alten Generation“ hinzu, um die Recyclingeffizienz zu verbessern.

Für die Garbage Collection in der „alten Generation“ wird die „Mark-Compression“-Garbage Collection verwendet. Zunächst werden die lebenden Objekte „markiert“.

 

3. Das Ergebnis nach der Müllabfuhr

Unten ist das „ Punkte „Generieren“ spezifische Ergebnisse nach der Garbage Collection. Aus dem Diagramm unten können wir ersehen, dass die Live-Objekte in Eden Space und From in den To-Bereich kopiert werden und sich auch der Speicherplatz des Heap-Bereichs der „alten Generation“ stark verändert hat. Darüber hinaus gibt es in der „alten Generation“ mehr große Objekte, die aus dem Von-Bereich kopiert wurden. Die Einzelheiten sind wie folgt.

 

4. Eclipse GC-Protokollkonfiguration und -analyse

Oben wurde so viel gesagt, lassen Sie uns intuitiv erleben, wie Sie den Garbage-Collection-Prozess anzeigen und die Protokollinformationen der Garbage-Collection in Eclipse analysieren. Standardmäßig werden der Garbage-Collection-Prozess und das Protokolldrucken nicht angezeigt. Sie müssen relevante Konfigurationselemente in der laufenden Konfiguration hinzufügen, um das Garbage-Collection-Protokoll zu drucken. In diesem Abschnitt werfen wir einen Blick auf die Konfiguration der Garbage-Collection-Protokollierung in

Eclipse und analysieren dann diese Protokolldatensätze. Natürlich verwenden wir in diesem Blog Java8. Wenn Sie andere Versionen von Java verwenden, werden die gedruckten Protokollinformationen etwas anders sein, also beginnen wir mit diesem Teil.

1. Konfigurieren Sie die Laufeinstellungen von Eclipse

Fügen Sie die entsprechenden Konfigurationselemente in den Laufeinstellungen von Eclipse hinzu, die erst danach gedruckt werden Entsprechende Protokollinformationen. Wählen Sie unser Projekt aus und suchen Sie dann die Option

Konfigurationen ausführen..., um die Laufzeitkonfiguration durchzuführen.

 

Unten sehen Sie das Dialogfeld, das durch die obige Option geöffnet wird. Suchen Sie dann die Registerkartenleiste (x) = Argumente und fügen Sie die entsprechenden Parameter der virtuellen Maschine in VM-Argumente hinzu. Diese Parameter werden angezeigt zur Laufzeit als Projektparameter verwendet werden. Nachfolgend haben wir zwei Parameter hinzugefügt: -XX:+PrintGCTimeStamps und -XX:+PrintGCDetails. Anhand dieser beiden Parameternamen ist es nicht schwer, die den entsprechenden Parametern entsprechenden Funktionen zu erkennen. Eine besteht darin, den Zeitstempel der Garbage Collection zu drucken, und die andere darin, die Details der Garbage Collection zu drucken. Natürlich gibt es noch viele andere Parameter, z. B. die Parameter des spezifischen Algorithmus bei der Auswahl von „Garbage Collection“, die Parameter für die Auswahl von „seriell“ oder „parallel“ und einige Auswahlmöglichkeiten für „exklusiven“ oder „gleichzeitigen“ Müll . Recycelte Parameter. Ich werde hier nicht zu sehr ins Detail gehen, bitte googeln Sie es selbst.

 

2. Drucken und Parsen von Recyclingprotokollen

Nach der Konfiguration des oben Nach den Parametern werden die entsprechenden Parameterinformationen ausgedruckt, wenn wir System.gc() verwenden, um eine erzwungene Speicherbereinigung durchzuführen. Zuerst müssen wir den Code zum Testen erstellen. Unten ist die Testklasse, die wir erstellt haben. Natürlich ist der Code in der Testklasse relativ einfach. Die Hauptsache ist, die Zeichenfolge zu erneuern, dann die Referenz auf Null zu setzen und schließlich System.gc() zum Recycling aufzurufen. Der spezifische Code lautet wie folgt:

package com.zeluli.gclog;public class GCLogTest {public static void main(String[] args) {
        String s = new String("Value");
        s = null;
        System.gc();
    }
}
Nach dem Login kopieren

Als nächstes stellen wir den Hauptinhalt der Protokollinformationen vor unten.

  • [PSYoungGen: 1997K->416K(38400K)] 1997K->424K(125952K), 0,0010277 Sekunden]

    • PSYoungGen gibt an, dass die „junge Generation“ parallel recycelt wird, 1997K->416K bedeutet „vor dem Recycling->nach dem Recycling“ im entsprechenden Bereich der jungen Generation“ Größe, während (38400K) die Gesamtgröße des Heaps der „jungen Generation“ darstellt. Die 1997K->424K (125952K) Daten auf der Rückseite stellen aus der Perspektive des gesamten Heaps ein Problem dar. 1997 KB (Speicher, der vor dem Heap-Recycling verwendet wird) -> 424 KB (Speicher, der nach dem Heap-Recycling verwendet wird) (125952 KB – der gesamte Speicherplatz des Heaps).

  • [ParOldGen: 8K->328K(87552K)]

    • ParOldGen recycelt die „alte Generation“ parallel. Die folgenden Parameter ähneln den oben genannten Parametern für das parallele Recycling der jungen Generation, daher werde ich nicht auf Details eingehen.

  • [Metaspace: 2669K->2669K(1056768K)]

    • bedeutet The Recyclingsituation des „Metadatenbereichs“, des Metaspace und des „Permanent Generation“-Bereichs, bei denen es sich um Bereiche handelt, die zum Speichern statischer Daten oder Systemmethoden verwendet werden.

 

Der Inhalt dieses Blogs endet hier Es gibt viel mehr Inhalte zur Garbage Collection in der JVM. Ich werde sie in Zukunft basierend auf der spezifischen Situation nacheinander vorstellen. Das war's für den heutigen Blog.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der JVM-Speicherbereichsaufteilung und des Garbage-Collection-Mechanismus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Der Drucker hat nicht genügend Speicher und kann die Seite nicht drucken. Excel- oder PowerPoint-Fehler Der Drucker hat nicht genügend Speicher und kann die Seite nicht drucken. Excel- oder PowerPoint-Fehler Feb 19, 2024 pm 05:45 PM

Wenn Sie beim Drucken von Excel-Arbeitsblättern oder PowerPoint-Präsentationen auf das Problem eines unzureichenden Druckerspeichers stoßen, kann dieser Artikel hilfreich für Sie sein. Möglicherweise erhalten Sie eine ähnliche Fehlermeldung, die besagt, dass der Drucker nicht über genügend Speicher zum Drucken der Seite verfügt. Es gibt jedoch einige Vorschläge, die Sie befolgen können, um dieses Problem zu beheben. Warum ist der Druckerspeicher beim Drucken nicht verfügbar? Nicht genügend Druckerspeicher kann zu einem Fehler führen, bei dem kein Speicher verfügbar ist. Manchmal liegt es daran, dass die Einstellungen des Druckertreibers zu niedrig sind, es kann aber auch andere Gründe haben. Große Dateigröße. Druckertreiber. Veraltet oder beschädigt. Unterbrechung durch installierte Add-ons. Fehlkonfiguration der Druckereinstellungen. Dieses Problem kann auch aufgrund niedriger Speichereinstellungen im Microsoft Windows-Druckertreiber auftreten. Reparaturdruck

Optimierung des großen Speichers. Was soll ich tun, wenn der Computer auf 16g/32g Speichergeschwindigkeit aktualisiert wird und es keine Änderung gibt? Optimierung des großen Speichers. Was soll ich tun, wenn der Computer auf 16g/32g Speichergeschwindigkeit aktualisiert wird und es keine Änderung gibt? Jun 18, 2024 pm 06:51 PM

Bei mechanischen Festplatten oder SATA-Solid-State-Laufwerken werden Sie die erhöhte Software-Laufgeschwindigkeit spüren. Wenn es sich um eine NVME-Festplatte handelt, spüren Sie sie möglicherweise nicht. 1. Importieren Sie die Registrierung in den Desktop und erstellen Sie ein neues Textdokument, kopieren Sie den folgenden Inhalt, fügen Sie ihn ein, speichern Sie ihn als 1.reg, klicken Sie dann mit der rechten Maustaste, um den Computer zusammenzuführen und neu zu starten. WindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement]"DisablePagingExecutive"=d

Mar 18, 2024 pm 02:19 PM

Kürzlich hat Xiaomi mit dem Xiaomi 14Pro ein leistungsstarkes High-End-Smartphone herausgebracht, das nicht nur über ein stilvolles Design verfügt, sondern auch über interne und externe schwarze Technologie verfügt. Das Telefon verfügt über Spitzenleistung und hervorragende Multitasking-Fähigkeiten, sodass Benutzer ein schnelles und reibungsloses Mobiltelefonerlebnis genießen können. Die Leistung wird jedoch auch vom Speicher beeinflusst. Viele Benutzer möchten wissen, wie sie die Speichernutzung des Xiaomi 14Pro überprüfen können. Wie überprüfe ich die Speichernutzung auf dem Xiaomi Mi 14Pro? Einführung in die Überprüfung der Speichernutzung des Xiaomi 14Pro. Öffnen Sie die Schaltfläche [Anwendungsverwaltung] in den [Einstellungen] des Xiaomi 14Pro-Telefons. Um die Liste aller installierten Apps anzuzeigen, durchsuchen Sie die Liste und suchen Sie die App, die Sie anzeigen möchten. Klicken Sie darauf, um die Seite mit den App-Details aufzurufen. Auf der Seite mit den Bewerbungsdetails

Bei Windows-Eingaben kommt es zu Hängenbleiben oder hoher Speicherauslastung [Fix] Bei Windows-Eingaben kommt es zu Hängenbleiben oder hoher Speicherauslastung [Fix] Feb 19, 2024 pm 10:48 PM

Die Windows-Eingabeerfahrung ist ein wichtiger Systemdienst, der für die Verarbeitung von Benutzereingaben von verschiedenen Geräten mit menschlicher Schnittstelle verantwortlich ist. Es startet automatisch beim Systemstart und läuft im Hintergrund. Allerdings kann es manchmal vorkommen, dass dieser Dienst automatisch hängt oder zu viel Speicher belegt, was zu einer verringerten Systemleistung führt. Daher ist es wichtig, diesen Prozess rechtzeitig zu überwachen und zu verwalten, um die Systemeffizienz und -stabilität sicherzustellen. In diesem Artikel erfahren Sie, wie Sie Probleme beheben können, bei denen die Windows-Eingabe einfriert oder eine hohe Speicherauslastung verursacht. Der Windows Input Experience Service verfügt über keine Benutzeroberfläche, ist jedoch eng mit der Handhabung grundlegender Systemaufgaben und Funktionen im Zusammenhang mit Eingabegeräten verbunden. Seine Aufgabe besteht darin, dem Windows-System dabei zu helfen, jede vom Benutzer eingegebene Eingabe zu verstehen.

Gibt es einen großen Unterschied zwischen 8g- und 16g-Speicher in Computern? (Wählen Sie 8 g oder 16 g Computerspeicher) Gibt es einen großen Unterschied zwischen 8g- und 16g-Speicher in Computern? (Wählen Sie 8 g oder 16 g Computerspeicher) Mar 13, 2024 pm 06:10 PM

Wenn unerfahrene Benutzer einen Computer kaufen, sind sie neugierig auf den Unterschied zwischen 8g und 16g Computerspeicher? Soll ich 8g oder 16g wählen? Als Antwort auf dieses Problem wird es Ihnen der Herausgeber heute ausführlich erläutern. Gibt es einen großen Unterschied zwischen 8g und 16g Computerspeicher? 1. Für normale Familien oder normale Arbeiten kann 8G-Laufspeicher die Anforderungen erfüllen, sodass es während der Verwendung keinen großen Unterschied zwischen 8g und 16g gibt. 2. Bei der Verwendung durch Spielebegeisterte beginnen große Spiele derzeit grundsätzlich bei 6 g, wobei 8 g der Mindeststandard ist. Wenn der Bildschirm derzeit 2k groß ist, führt eine höhere Auflösung nicht zu einer höheren Bildratenleistung, sodass zwischen 8g und 16g kein großer Unterschied besteht. 3. Für Benutzer der Audio- und Videobearbeitung wird es offensichtliche Unterschiede zwischen 8g und 16g geben.

Quellen zufolge werden Samsung Electronics und SK Hynix nach 2026 gestapelten mobilen Speicher kommerzialisieren Quellen zufolge werden Samsung Electronics und SK Hynix nach 2026 gestapelten mobilen Speicher kommerzialisieren Sep 03, 2024 pm 02:15 PM

Laut Nachrichten dieser Website vom 3. September berichteten die koreanischen Medien etnews gestern (Ortszeit), dass die „HBM-ähnlichen“ mobilen Speicherprodukte mit Stapelstruktur von Samsung Electronics und SK Hynix nach 2026 kommerzialisiert werden. Quellen zufolge betrachten die beiden koreanischen Speichergiganten gestapelten mobilen Speicher als wichtige zukünftige Einnahmequelle und planen, den „HBM-ähnlichen Speicher“ auf Smartphones, Tablets und Laptops auszudehnen, um End-Side-KI mit Strom zu versorgen. Früheren Berichten auf dieser Website zufolge heißt das Produkt von Samsung Electronics LPWide I/O-Speicher und SK Hynix nennt diese Technologie VFO. Die beiden Unternehmen haben ungefähr den gleichen technischen Weg gewählt, nämlich die Kombination von Fan-Out-Verpackungen und vertikalen Kanälen. Der LPWide I/O-Speicher von Samsung Electronics hat eine Bitbreite von 512

Samsung gab den Abschluss der Verifizierung der 16-Layer-Hybrid-Bonding-Stacking-Prozesstechnologie bekannt, die voraussichtlich in großem Umfang im HBM4-Speicher zum Einsatz kommen wird Samsung gab den Abschluss der Verifizierung der 16-Layer-Hybrid-Bonding-Stacking-Prozesstechnologie bekannt, die voraussichtlich in großem Umfang im HBM4-Speicher zum Einsatz kommen wird Apr 07, 2024 pm 09:19 PM

Dem Bericht zufolge sagte Dae Woo Kim, Geschäftsführer von Samsung Electronics, dass Samsung Electronics auf der Jahrestagung 2024 der Korean Microelectronics and Packaging Society die Verifizierung der 16-schichtigen Hybrid-Bonding-HBM-Speichertechnologie abschließen werde. Es wird berichtet, dass diese Technologie die technische Verifizierung bestanden hat. In dem Bericht heißt es außerdem, dass diese technische Überprüfung den Grundstein für die Entwicklung des Speichermarktes in den nächsten Jahren legen werde. DaeWooKim sagte, dass Samsung Electronics erfolgreich einen 16-schichtigen gestapelten HBM3-Speicher auf Basis der Hybrid-Bonding-Technologie hergestellt hat. Das Speichermuster funktioniert in Zukunft normal für die Massenproduktion von HBM4-Speicher. ▲Bildquelle TheElec, wie unten: Im Vergleich zum bestehenden Bonding-Prozess müssen beim Hybrid-Bonding keine Unebenheiten zwischen den DRAM-Speicherschichten hinzugefügt werden, sondern es werden die oberen und unteren Schichten direkt mit Kupfer verbunden.

Micron: HBM-Speicher verbrauchen das Dreifache des Wafervolumens und die Produktionskapazität ist grundsätzlich für nächstes Jahr gebucht Micron: HBM-Speicher verbrauchen das Dreifache des Wafervolumens und die Produktionskapazität ist grundsätzlich für nächstes Jahr gebucht Mar 22, 2024 pm 08:16 PM

Diese Website berichtete am 21. März, dass Micron nach der Veröffentlichung seines vierteljährlichen Finanzberichts eine Telefonkonferenz abgehalten habe. Sanjay Mehrotra, CEO von Micron, sagte auf der Konferenz, dass HBM im Vergleich zu herkömmlichem Speicher deutlich mehr Wafer verbraucht. Micron sagte, dass der derzeit fortschrittlichste HBM3E-Speicher bei der Produktion derselben Kapazität auf demselben Knoten dreimal mehr Wafer verbraucht als Standard-DDR5, und es wird erwartet, dass HBM4 dieses Verhältnis in Zukunft weiter erhöhen wird, wenn die Leistung verbessert und die Verpackungskomplexität zunimmt . Unter Bezugnahme auf frühere Berichte auf dieser Website ist diese hohe Quote teilweise auf die niedrige Ertragsrate von HBM zurückzuführen. HBM-Speicher ist mit mehrschichtigen DRAM-Speicher-TSV-Verbindungen gestapelt. Ein Problem mit einer Schicht bedeutet, dass die gesamte

See all articles