[JAVA] Beginnen Sie mit der Funktionsweise von JVM GC

Einführung

Es erwähnt den GC-Algorithmus und die Rolle jedes Bereichs im Heap-Bereich.

Es gibt verschiedene Arten von GC-Algorithmen. Die folgenden zwei sind die grundlegendsten.

Grundlegender Algorithmus

Mark & Sweep ist der Standard in Java. Dies allein hat jedoch die folgenden Probleme und wird tatsächlich erweitert und implementiert.

Herausforderungen von Mark & Sweep

  1. Speicherbereichsfragmentierung
  2. Stoppen Sie die Welt, während Sie GC machen
  3. Die Verarbeitungslast ist hoch, wenn GC auf alle Zielspeicherbereiche angewendet wird (Full GC).

1. Gegenmaßnahmen gegen die Fragmentierung des Heap-Bereichs => Kopieren

Wenn der unnötige Bereich wiederholt freigegeben wird, wird der leere Bereich uneben und unflexibel. Mit anderen Worten, die Verarbeitungskosten für die Erstellung eines neuen Objekts steigen.

Daher werden die folgenden Algorithmen kombiniert.

** Aus diesem Grund gibt es im Heap-Bereich Von-Bereich und Bis-Bereich. ** ** **

2. Gegenmaßnahmen gegen Ausfallzeiten => Gleichzeitige Kennzeichnung

--Mark & Sweep Mark wird parallel von Threads hinzugefügt, ohne das Java-Programm anzuhalten.

Es wird als gleichzeitiger Marker-Sweep bezeichnet, da dieser Algorithmus addiert wird.

3. Maßnahmen gegen Verarbeitungslast

Es verwendet einen Generations-GC-Algorithmus. Einfach ausgedrückt, ein neu erstelltes Objekt wird im neuen Bereich platziert, GC wird häufig auf den neuen Bereich angewendet, und die Objekte, die nach mehreren GCs überlebt haben, überleben weiterhin und werden im alten Bereich platziert. Ein Algorithmus namens FullGC, wenn er sich bewegt und alt ist, wird akkumuliert. Anstatt jedes Mal eine vollständige GC durchzuführen, beschränken Sie den Umfang der GC und verteilen Sie die Last der GC.

Referenz: GC nach Generation

** Aus diesem Grund gibt es im JVM-Heap-Bereich Neu und Alt. ** ** **

Es gibt verschiedene Arten von JVM-Speicherbereichen, die auf dem GC-Algorithmus basieren.

Aus dem bisherigen Inhalt kann folgendes verstanden werden.

Referenz

Java Heap Memory Management-Mechanismus

JVM-Optimierung

Beiseite

Ein Algorithmus namens Garbage First Garbage Collection kommt ...? Garbage-First Garbage Collection

Recommended Posts

Beginnen Sie mit der Funktionsweise von JVM GC
Erste Schritte mit DBUnit
Erste Schritte mit Ruby
Erste Schritte mit Swift
Erste Schritte mit Doma-Transaktionen
Erste Schritte mit der Doma-Projektion mit der Criteira-API
Erste Schritte mit Doma-Using Joins mit der Criteira-API
Erste Schritte mit Doma-Einführung in die Kriterien-API
Erste Schritte mit der Verarbeitung von Doma-Annotationen
Erste Schritte mit Java Collection
Erste Schritte mit JSP & Servlet
Erste Schritte mit Java Basics
Erste Schritte mit Spring Boot
Erste Schritte mit Ruby-Modulen
Erste Schritte mit Doma-Dynamic Erstellen von WHERE-Klauseln mit der Kriterien-API
Erste Schritte mit Reactive Streams und der JDK 9 Flow API
Erste Schritte mit Java_Kapitel 5_Praktische Übungen 5_4
[Google Cloud] Erste Schritte mit Docker
Erste Schritte mit Docker mit VS-Code
Zurück zum Anfang, Erste Schritte mit Java ② Steueranweisungen, Schleifenanweisungen
Fassen Sie die wichtigsten Punkte für den Einstieg in JPA zusammen, die Sie mit Hibernate gelernt haben
Erste Schritte mit dem Doma-Criteria API Cheet Sheet
Erste Schritte mit Ruby für Java-Ingenieure
Erste Schritte mit Docker für Mac (Installation)
Einführung in den Parametrisierungstest in JUnit
Einführung in Java ab 0 Teil 1
Erste Schritte mit Ratpack (4) -Routing & Static Content
Erste Schritte mit dem Language Server Protocol mit LSP4J
Erste Schritte mit dem Erstellen von Ressourcenpaketen mit ListResoueceBundle
Erste Schritte mit Java_Kapitel 8_Über "Instanzen" und "Klassen"
Links & Memos für den Einstieg in Java (für mich)
[Veraltet] Erste Schritte mit GC und Speicherverwaltung für JVMs, die ich nicht verstanden habe
Erste Schritte mit Java 1 Ähnliche Dinge zusammenstellen
Erste Schritte mit Kotlin zum Senden an Java-Entwickler
Ich habe versucht, mit Gradle auf Heroku zu beginnen
Erste Schritte mit Java-Programmen mit Visual Studio Code
Erste Schritte mit älteren Java-Ingenieuren (Stream + Lambda)
Beginnen Sie mit serverlosem Java mit dem leichtgewichtigen Framework Micronaut!
Organisieren Sie den Mechanismus von Java GC
GC mit jcmd anheben
Beginnen Sie mit Gradle
Erste Schritte mit Java und Erstellen eines Ascii Doc-Editors mit JavaFX
[Java] [Play Framework] Bis das Projekt mit Gradle gestartet wird
Jetzt ist es an der Zeit, mit der Stream-API zu beginnen
Erste Schritte mit der Git Hub Container Registry anstelle von Docker Hub