Heim Java javaLernprogramm JVM-Speicherverwaltung ------ Einführung in den Garbage Collector

JVM-Speicherverwaltung ------ Einführung in den Garbage Collector

Dec 28, 2016 pm 03:50 PM

Wir haben im vorherigen Kapitel verschiedene GC-Algorithmen besprochen. Was ist also ein Garbage Collector?
Um es für Laien auszudrücken: Wenn man eine Programmiersprache zur Implementierung eines Algorithmus verwendet, ist das resultierende Programm ein Garbage Collector. Nachdem wir nun über die Implementierung von Programmiersprachen gesprochen haben, wurde bei der Erörterung des Garbage Collectors bereits die spezifische Implementierung der virtuellen Maschine berücksichtigt.
Vielleicht wissen viele JAVA-Entwickler nicht, dass im JDK, das wir normalerweise verwenden, die Standard-JVM Hotspot ist. Mit anderen Worten, die JVM, die wir am häufigsten verwenden, ist die Implementierungsversion von Hotspot In LZ basiert dieses Mal alles auf der Hotspot-Version von JVM. Bitte beachten Sie dies.
Intuitiver können wir java -version eingeben, um die JVM-Version auf der Maschine zu überprüfen, die wir normalerweise entwickeln. Ich glaube, die meisten Affenfreunde sind mit diesem Befehl vertraut. Der Screenshot von LZs Maschine ist wie folgt.

JVM-Speicherverwaltung ------ Einführung in den Garbage Collector

Klassifizierung von Garbage Collectors

Wir haben oben erwähnt, dass Garbage Collectors eigentlich Programmiersprachenimplementierungen von Algorithmen sind. Da es sich um Programmiersprachen handelt, müssen Threads untrennbar miteinander verbunden sein. Als wir den Algorithmus zuvor erklärten, gingen wir immer davon aus, dass ein GC-Thread GC-Arbeit erledigt.
Daher werden Garbage Collectors grob in die folgenden drei Kategorien eingeteilt.
Serieller Kollektor: Er verfügt nur über einen GC-Thread und muss, wie bereits erwähnt, das Benutzerprogramm beim Ausführen anhalten (die Welt stoppen).
Parallelkollektor: Er verfügt über mehrere GC-Threads und muss auch das Benutzerprogramm anhalten (die Welt stoppen).
Gleichzeitiger Kollektor: Er verfügt über einen oder mehrere GC-Threads und muss das Benutzerprogramm in einigen Phasen anhalten (die Welt stoppen) und einen Teil der Phase gleichzeitig mit dem Benutzerprogramm ausführen.

Gleichzeitig und parallel

Nachdem ich die obigen Definitionen gelesen habe, glaube ich, dass einige Affenfreunde verwirrt sind. Manchmal sind sie Single-Threaded, manchmal Multi-Threaded und manchmal seriell. manchmal gleichzeitig, ist das alles Unsinn?
Zu Single-Thread und Multi-Thread muss man nicht mehr sagen. Das ist auch leicht zu verstehen. Parallel und parallel sind auch leicht zu unterscheiden.
Für viele Erklärungen zur Parallelität ist LZ der Meinung, dass es eine gibt, die am besten geeignet ist. Dies wird so erklärt: Parallelität bedeutet, dass zwei Aufgaben A und B unabhängig voneinander ausgeführt werden müssen, und nachdem Aufgabe A zuerst gestartet wird, beginnt Aufgabe B, bevor Aufgabe A endet.
Parallelität selbst ist relativ leicht zu verstehen. Welche Beziehung und Unterschied besteht also zur Parallelität?
Tatsächlich ist Parallelität eine Implementierungsmethode der Parallelität. LZ glaubt, dass Sie es vielleicht besser verstehen, wenn Sie dies sagen. Natürlich ist Parallelität nicht die einzige Möglichkeit, Parallelität zu erreichen. Eine andere Möglichkeit ist die Zeitscheibenumschaltung, mit der wir vertraut sind. Das heißt, Aufgabe A wird für eine Weile ausgeführt, Aufgabe B wird für eine Weile ausgeführt und dann abwechselnd ausgeführt.
Parallelität kann nur unter der Voraussetzung eines Multi-Core-Multiprozessors oder eines verteilten Systems (im Wesentlichen immer noch Multi-Core-Multiprozessor) auftreten, während eine alternative Ausführung oder Zeitscheibenumschaltung auf einem Single-Core-Prozessor erfolgt.

Garbage Collector im Hotspot

Wir haben oben kurz die Klassifizierung von Garbage Collector besprochen. In hotspotJVM verfügt jeder Typ von Garbage Collector über eine entsprechende Implementierung, wie folgt.
Implementierung des seriellen Kollektors: seriell (verwendet in der neuen Generation, unter Verwendung des Kopieralgorithmus), seriell alt (verwendet in der alten Generation, unter Verwendung des Markierungs-/Sortierungsalgorithmus)
Implementierung des parallelen Kollektors: ParNew (verwendet in der neuen Generation, unter Verwendung Kopieralgorithmus), Parallel Scavenge (verwendet in der neuen Generation, unter Verwendung des Kopieralgorithmus), Parallel alt (verwendet in der alten Generation, unter Verwendung des Markierungs-/Sortierungsalgorithmus)
Implementierung des gleichzeitigen Kollektors: gleichzeitiger Mark Sweep[CMS] (verwendet im alten Generation, unter Verwendung des Mark/Clear-Algorithmus)
Wie Sie sehen können, ist jeder der oben genannten Garbage Collectors für unterschiedliche Speicherbereiche konzipiert, da sie unterschiedliche Algorithmen verwenden. Sie werden normalerweise in der neuen Generation verwendet Generation verwenden alle den Kopieralgorithmus, und die für die alte Generation verwendeten verwenden den Mark/Clear- oder Mark/Complement-Algorithmus.
In praktischen Anwendungen müssen wir Garbage Collectors für die neue Generation und die alte Generation der JVM auswählen. Wir können sehen, dass es sowohl für die neue Generation als auch für die alte Generation drei Implementierungen gibt 3 *3=9 Auswahlmöglichkeiten. Dies ist jedoch nicht der Fall.

Tatsächlich gibt es für diese sechs Garbage Collectors nur sechs Möglichkeiten, da einige Garbage Collectors aus einer Reihe von Gründen, wie z. B. bestimmten Implementierungsmethoden, nicht zusammenarbeiten können, wie unten gezeigt.

JVM-Speicherverwaltung ------ Einführung in den Garbage Collector

Für das obige Bild ist der rote der serielle Kollektor, der grüne der parallele Kollektor und der einzige gelbe der gleichzeitige Kollektor. Die ersten drei sind die Sammler der neuen Generation und die unteren drei sind die Sammler der alten Generation. Wenn zwischen beiden eine Verbindung besteht, bedeutet das, dass beide zusammenarbeiten können.
Diese sechs Kombinationen sagen nicht aus, welche Kombination die stärkste und welche die schwächste ist. Auch hier gibt es nur die am besten geeignete, nicht die beste. Daher müssen wir ein gewisses Verständnis für jede Kombination haben, um bei der Verwendung einen geeigneteren Garbage Collector auswählen zu können.

Fazit

Das Obige ist der Inhalt der JVM-Speicherverwaltung ------ Einführung in den Garbage Collector. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


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)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 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)

Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte Mar 07, 2025 pm 06:09 PM

Dieser Artikel analysiert 2025 die vier besten JavaScript -Frameworks (React, Angular, Vue, Svelte) und verglichen ihre Leistung, Skalierbarkeit und Zukunftsaussichten. Während alle aufgrund starker Gemeinschaften und Ökosysteme dominant bleiben, sind ihr relatives Popul

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Problem behoben Spring Boot Snakeyaml 2.0 CVE-2022-1471 Problem behoben Mar 07, 2025 pm 05:52 PM

Dieser Artikel befasst sich mit der Verwundbarkeit von CVE-2022-1471 in Snakeyaml, einem kritischen Fehler, der die Ausführung von Remote-Code ermöglicht. Es wird beschrieben

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Mar 17, 2025 pm 05:35 PM

Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Mar 17, 2025 pm 05:44 PM

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

Node.js 20: wichtige Leistungssteigerung und neue Funktionen Node.js 20: wichtige Leistungssteigerung und neue Funktionen Mar 07, 2025 pm 06:12 PM

Node.js 20 verbessert die Leistung durch V8 -Motorverbesserungen erheblich, insbesondere durch schnellere Müllsammlung und E/A. Zu den neuen Funktionen gehören eine bessere Support von WebAssembly und raffinierte Debugging -Tools, die Produktivität der Entwickler und die Anwendungsgeschwindigkeit.

ICEBERG: Die Zukunft von Data Lake Tabellen ICEBERG: Die Zukunft von Data Lake Tabellen Mar 07, 2025 pm 06:31 PM

Iceberg, ein offenes Tabellenformat für große analytische Datensätze, verbessert die Leistung und Skalierbarkeit von Data Lake. Es befasst sich mit Einschränkungen von Parquet/ORC durch internes Metadatenmanagement und ermöglicht eine effiziente Schemaentwicklung, Zeitreisen, gleichzeitiger W

So teilen Sie Daten zwischen Schritten in der Gurke So teilen Sie Daten zwischen Schritten in der Gurke Mar 07, 2025 pm 05:55 PM

In diesem Artikel werden Methoden zum Austausch von Daten zwischen Gurkenschritten und dem Vergleich des Szenario -Kontextes, globalen Variablen, Argumentenübergabe und Datenstrukturen untersucht. Es betont Best Practices für Wartbarkeit, einschließlich präziser Kontextgebrauch, beschreibend

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden? Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden? Mar 17, 2025 pm 05:43 PM

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

See all articles