[JAVA] Müllabfuhr - Teil 1 -

Zweck

Um über die Behandlung von Instanzen nachzudenken, die mir zu Beginn nicht bekannt waren, unterdrücken Sie zunächst die grundlegenden Spezifikationen von Java wie die Garbage Collection

Was ist eine Müllabfuhr?

Eine Funktion, die die der JVM bei Ausführung des Programms zugewiesene Speicherkapazität verwaltet und den Speicherbereich entsprechend freigibt, um Speicherverluste zu vermeiden.

Warum muss ich Speicher freigeben?

Bei der Programmierung, nicht auf Java beschränkt, wie in 1 gezeigt, werden verschiedene Variablen und Anweisungen im Speicher gespeichert und von der CPU entsprechend verarbeitet. Wenn es gespeichert wird, verbraucht es natürlich die Speicherkapazität des Speichers, so dass es notwendig ist, unnötige Variablen und Anweisungen zu löschen, um die dem Programm zugewiesene Kapazität nicht zu überschreiten. ** ** **

→ Wenn die Kapazität überschritten wird ... (Für Java) OutOfMemoryError wird angezeigt und das Programm wird zwangsweise beendet. 無題のプレゼンテーション.jpg

Zu diesem Zeitpunkt musste die Programmierseite in C-Sprache usw. den Speicherbereich im Code explizit freigeben, in objektorientierten Sprachen wie Java und funktionalen Programmiersprachen wie Haskell ist dies in Abb. 2 dargestellt. Es hat eine Funktion namens Garbage Collection, über die wir dieses Mal sprechen werden, und es verwaltet den Speicher fast automatisch. 無題のプレゼンテーション (1).jpg

Muss sich der Programmierer nicht um irgendetwas kümmern, wenn er es automatisch tut?

Da das Programm jedoch auch während der Ausführung des GC ausgeführt wird, ist es ein Problem, wenn unnötige Dinge ordnungsgemäß gelöscht werden. Daher wird ein bestimmter Standard von "unnötig" festgelegt, und GC wird gemäß diesem Standard betrieben. Im Fall von Java wird die Beurteilung durch die folgenden Faktoren vorgenommen.

** · Von keinem anderen Element referenziert **

Daher können je nach Design Speicherlecks auftreten. Darüber hinaus können abhängig von der Häufigkeit des GC-Betriebs die folgenden Probleme auftreten.

** ・ Die Verarbeitung verzögert sich aufgrund häufiger GC **

Da die Anwendung vorübergehend gestoppt wird, während der GC ausgeführt wird, treten Probleme auf, wenn der GC häufig auftritt. Außerdem kann die GC-Stoppzeit einfach länger werden. Obwohl dies beim nächsten Mal beschrieben wird, gibt es verschiedene Arten von GC, und abhängig von den Spezifikationen wird der Speicher möglicherweise nicht freigegeben, und es kann ein Speicherverlust auftreten, selbst wenn der GC arbeitet.

Vorschau beim nächsten Mal

Was ist GC in JavaVM?

Recommended Posts

Müllabfuhr - Teil 1 -
G1 Müllabfuhr in 3 Minuten
Java-Leistung Kapitel 5 Grundlagen der Garbage Collection
Java9-Sammlung
Ich habe versucht, über JVM / Garbage Collection zusammenzufassen