Eine kurze Analyse des Heap- und Garbage-Collection-Mechanismus
In diesem Artikel konzentrieren wir uns hauptsächlich auf folgende Themen:: Wann werden die Objekte im Heap recycelt, nachdem das Java-Programm ausgeführt wurde? Wie recyceln?
Der Heap wird auch „GC-Heap“ genannt. Da Collectors jetzt grundsätzlich Generations-Collection-Algorithmen verwenden, kann der Java-Heap auch unterteilt werden in: neue Generation und alte Generation. Das Verhältnis beträgt 1:2; genauer gesagt ist die neue Generation in Eden-Bereich und Survivor-Bereich unterteilt, und das Verhältnis beträgt 8:1. Die folgende Abbildung zeigt die Struktur des Heaps:
Die Speicherzuweisung für Objekte im Heap beträgt Die Strategie ist streng geregelt:
Objekte weisen zuerst Speicher im Eden-Bereich der neuen Generation zu; > Große Objekte gelangen direkt in die alte Generation, hauptsächlich lange Zeichenfolgen und Arrays, die viel kontinuierlichen Speicherplatz erfordern
Langfristiges Überleben Objekte treten in die alte Generation ein. Wenn der Speicher im Eden-Bereich nicht ausreicht, initiiert die JVM einen MinorGC und das Alter des Objekts wird um eins erhöht. Das Standardalter des Objekts erreicht 15 und tritt in das Alter ein >
Dynamische Altersbestimmung. Die Summe der Größen aller Objekte desselben Alters ist größer als die Hälfte des Survivor-Raums. Objekte, die größer oder gleich diesem Alter sind, gelangen in die alte Generation - Der GC der neuen Generation bezieht sich auf den Minor GC, der in der neuen Generation häufig und schnell durchgeführt wird. GC der alten Generation (Major GC/Full GC) führt die Speicherbereinigung der alten Generation durch, normalerweise begleitet von mindestens einem kleineren GC. Langsam. In den folgenden Situationen wird eine vollständige GC ausgelöst:
Unzureichender Platz in der alten Generation;
Unzureichender Platz im Methodenbereich; >
- Rufen Sie System.gc() auf. Es wird empfohlen, dass die JVM eine vollständige GC durchführt -Term erhaltene Objekte der alten Generation, unzureichender Platz
Es ist nicht genügend zusammenhängender Platz für große Objekte vorhanden;
- Es gibt zu viele Objekte, die die Garbage Collection in der neuen Generation überleben, und S1 kann sie nicht unterbringen. Der garantierte Platz in der alten Generation reicht nicht aus. Der garantierte Platz bezieht sich darauf, ob der maximal verfügbare Platz kontinuierlich ist Der Raum in der alten Generation ist größer als der Gesamtraum aller Objekte in der neuen Generation.
- Fast alle Objekte werden auf dem Heap abgelegt. Woher wissen wir also, ob diese Objekte noch nützlich sind? Die JVM bietet zwei Methoden zur Bestimmung:
Referenzzählmethode
- : Das Objekt Fügt einen Referenzzähler hinzu, der um eins erhöht wird. Wenn die Referenz ungültig wird, verringert sich der Zählerwert um eins. Dies bedeutet, dass das Objekt nicht aktiv ist. Die Referenzzählmethode kann das Zirkelverweisproblem nicht lösen. Es gibt detaillierte Beispiele im Buch von Lehrer Zhou Zhipeng, das relativ leicht zu verstehen ist.
Methode zur Barrierefreiheitsanalyse
Starke Referenz, neues Objekt, der Müllsammler wird es niemals recyceln
Schwache Referenzen, sobald der Garbage Collector sie findet Funktioniert, es wird sofort recycelt ;
- Dummy-Referenz ist nutzlos und kann jederzeit recycelt werden.
Wir wissen bereits, was das ist Objekt ist Zeit wurde recycelt, also wie kann man es recyceln? Wir stellen die vier am häufigsten verwendeten Garbage-Collection-Algorithmen vor:
Der Garbage-Collection-Algorithmus ist eine Idee des Speicherrecyclings, und die spezifische Implementierung ist ein Garbage Collector. Eine kurze Einführung in häufig verwendete Müllsammler:
serieller Seriensammler. Einzelner Thread, andere Arbeiten müssen während der Speicherbereinigung angehalten werden. Kopieren für neue Schüler, Markieren und Sortieren für alte Schüler. Einfach und effizient;
ParNew Sammler. Multithread-Version von Serial;
Parallel Scavenge Collector, ein Multithread-Collector von Kopieralgorithmus. Achten Sie auf den Durchsatz, die Ausführungszeit des CPU-Codes / die insgesamt aufgewendete CPU-Zeit. Kopie der neuen Generation, Sortierung der Marke der alten Generation; Parallel Old Collector, die alte Generation von Parallel Scavenge
CMS Collector, der sich auf die kürzeste Pause konzentriert. Bei einem gleichzeitigen Collector arbeitet der Garbage-Collection-Thread (im Grunde) gleichzeitig mit dem Benutzer-Thread. Mark-and-Sweep-Algorithmus
-
Weitere Einzelheiten zum Garbage Collector finden Sie im Buch von Herrn Zhou Zhipeng.
- Empfohlenes Tutorial: „
JS-Tutorial“
Das obige ist der detaillierte Inhalt vonEine kurze Analyse des Heap- und Garbage-Collection-Mechanismus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Dieser Artikel wird Ihnen ein tiefgreifendes Verständnis des Garbage-Collection-Mechanismus in PHP vermitteln. Ich hoffe, er wird Ihnen hilfreich sein!

Die Go-Sprache ist eine effiziente, sichere und gleichzeitige Programmiersprache. Das Design des Speicherverwaltungs- und Garbage-Collection-Mechanismus ist ebenfalls ein einzigartiges Merkmal. In diesem Artikel werden die Speicherverwaltungs- und Speicherbereinigungsmechanismen der Go-Sprache ausführlich entschlüsselt. 1. Speicherverwaltung In der Go-Sprache umfasst die Speicherverwaltung zwei Aspekte: Speicherzuweisung und Speicherfreigabe. 1.1 Speicherzuweisung In der Go-Sprache weisen wir Speicher über die integrierten Funktionen new und make zu. Unter anderem gibt new einen Zeiger auf den neu zugewiesenen Nullwert zurück, während make einen angegebenen Typ und seine Länge zurückgibt.

Die Speicherverwaltung in Java umfasst die Speicherbereinigung, es können jedoch dennoch Probleme auftreten. Zu den häufigsten Problemen zählen Speicherlecks und Speicherfragmentierung. Speicherlecks werden durch Objekte verursacht, die Referenzen enthalten, die nicht mehr benötigt werden, und können durch die Vermeidung von Zirkelverweisen, die Verwendung schwacher Referenzen und die Begrenzung des Variablenbereichs gelöst werden. Speicherfragmentierung wird durch häufige Zuweisung und Freigabe verursacht und kann durch die Verwendung von Speicherpools, großen Objektpools und kompakter Speicherbereinigung gelöst werden. Beispielsweise kann die Verwendung schwacher Referenzen Speicherlecks bewältigen und sicherstellen, dass der Garbage Collector Objekte zurückgewinnt, wenn sie nicht mehr benötigt werden.

Vertiefendes Verständnis der zugrunde liegenden Entwicklungsprinzipien von PHP: Speicherverwaltung und Garbage-Collection-Mechanismus Einführung: PHP wird als Programmiersprache auf hoher Ebene häufig in der Webentwicklung verwendet. Viele Entwickler sind mit der Syntax und den Funktionen von PHP vertraut, haben jedoch möglicherweise relativ wenig Verständnis für die zugrunde liegenden Entwicklungsprinzipien von PHP. In diesem Artikel werden die Speicherverwaltungs- und Garbage-Collection-Mechanismen in den zugrunde liegenden Entwicklungsprinzipien von PHP eingehend untersucht, um den Lesern ein besseres Verständnis des Betriebsmechanismus von PHP zu ermöglichen. 1. PHPs Speicherverwaltung Speicherzuweisung und -freigabe Die Speicherverwaltung in PHP wird von der Zend-Engine übernommen

Primitive Typen werden auf dem Stapel gespeichert und Referenztypen werden auf dem Heap gespeichert. JavaScript weist automatisch Speicher zu, wenn Variablen (Objekte, Zeichenfolgen usw.) erstellt werden, und gibt sie „automatisch“ frei, wenn sie nicht verwendet werden. Der Prozess der Freigabe wird Garbage Collection genannt.

Dank des automatischen Garbage-Collection-Mechanismus von Python müssen Objekte beim Erstellen in Python nicht manuell freigegeben werden. Dies ist sehr entwicklerfreundlich und befreit Entwickler von der Sorge um die Speicherverwaltung auf niedriger Ebene. Wenn Sie den Garbage-Collection-Mechanismus jedoch nicht verstehen, ist der von Ihnen geschriebene Python-Code oft sehr ineffizient.

Erkundung des Garbage-Collection-Mechanismus und der Speicherverwaltungsfunktionen der Go-Sprache. Einführung: Mit der Entwicklung des Internets stellen Entwickler immer höhere Anforderungen an Programmiersprachen. Als statisch typisierte, kompilierte Sprache hat die Go-Sprache seit ihrer Einführung aufgrund ihres effizienten Garbage-Collection-Mechanismus und ihrer Speicherverwaltungsfunktionen große Aufmerksamkeit auf sich gezogen. Ziel dieses Artikels ist es, den Garbage-Collection-Mechanismus der Go-Sprache und ihre Speicherverwaltungsfunktionen eingehend zu untersuchen und den Lesern anhand spezifischer Codebeispiele zu helfen, diese Funktionen besser zu verstehen und zu nutzen. 1. Garbage-Collection-Mechanismus 1.1 Mark-Scan-Algorithmus der Go-Sprache

Eingehende Analyse: Die vielfältige Entwicklung des JVM-Garbage-Collection-Mechanismus erfordert spezifische Codebeispiele 1. Einführung Mit der Entwicklung der Informatik spielt der Garbage-Collection-Mechanismus eine entscheidende Rolle in der JVM (Java Virtual Machine). Die vielfältige Weiterentwicklung des JVM-Garbage-Collection-Mechanismus soll die Leistung und Speicherverwaltung von Java-Programmen verbessern. Dieser Artikel bietet eine detaillierte Analyse der spezifischen Entwicklung des JVM-Garbage-Collection-Mechanismus und stellt spezifische Codebeispiele bereit, um den Lesern ein besseres Verständnis zu erleichtern. 2. Die Grundprinzipien des Garbage-Collection-Mechanismus zur Erläuterung des JVM-Garbage-Collection-Mechanismus
