Java Force Garbage Collection

Sheeraz Gul 20 Juni 2023
Java Force Garbage Collection

Dieses Tutorial zeigt, wie die Garbage Collection in Java erzwungen wird.

Java Force Garbage Collection

Nähert sich die Heap-Auslastung 100%, steigt das Risiko von OutOfMemoryError auf das Maximum. Zu diesem Zeitpunkt muss die JVM die Garbage Collection erzwingen und den Speicher freigeben.

Meistens können wir die JVM nicht zur Garbage Collection zwingen, aber wir können einige Methoden verwenden, um die Garbage Collection bei Bedarf durchzuführen.

Dieses Tutorial demonstriert die verschiedenen Methoden der Garbage Collection in Java.

Rufen Sie System.gc() für die Garbage Collection in Java auf

Die Methode System.GC() kann überall im Java-Code aufgerufen werden, um eine Garbage Collection durchzuführen. Es wird die Garbage Collection priorisieren, und wann immer es aufgerufen wird, wird eine Garbage Collection in Sekunden durchgeführt.

Die Syntax für diese Methode lautet:

System.gc();

Wir müssen nur System.gc() aufrufen, um die Garbage Collection irgendwo im Code durchzuführen. Dies funktioniert auf ähnliche Weise, um die Garbage Collection zu erzwingen.

Rufen Sie Runtime.getRuntime().gc() für die Garbage Collection in Java auf

Die Runtime.getRuntime().gc() ruft die System.gc() auf, also funktioniert es auf ähnliche Weise, um die Garbage Collection zu priorisieren. Die Runtime.getRuntime() führt Terminalbefehle im Java-Code aus.

Die Methoden Runtime.getRuntime().gc() und System.gc sind gleich. Die Syntax für diese Methode lautet:

Runtime.getRuntime().gc();

Rufen Sie diese Methode einfach wie die Syntax auf, und die JVM führt die Garbage Collection durch, um Speicherplatz freizugeben.

Verwenden Sie jcmd, um die Garbage Collection in Java zu erzwingen

Der Java-Diagnosebefehl jcmd ist ein integriertes Dienstprogramm von JDK, das eine Garbage-Collection-Routine auslöst. Diese Garbage Collection wird ausgelöst, wenn die JVM sicher eine Pause planen kann.

Der Befehl löst den gleichen Fehler wie jmap aus, wenn die JVM die Pause nicht durchführen kann.

Die Syntax für diesen Befehl lautet:

jcmd 1234 GC.run

Wobei die Nummer die Prozess-ID ist und GC.run verwendet wird, um die Garbage Collection aufzurufen.

Verwenden Sie Java Mission Control oder JConsole, um die Garbage Collection in Java zu erzwingen

Die Java Mission Control und JConsole bieten eine benutzerfreundliche Schnittstelle, die mit dem Befehl jcmd interagiert. Java Mission Control oder JConsole können die JVM zur Garbage Collection zwingen.

Das Tool JConsole bietet auf seiner Speicherverwaltungsseite eine Schaltfläche namens Run Garbage Collection. Indem wir darauf klicken, können wir JVM dazu zwingen, eine Garbage Collection durchzuführen.

Die Java Mission Control kann Entwicklern helfen, beliebige jcmd-Funktionalitäten auszuwählen, zu denen auch GC.run gehört, die per Knopfdruck ausgeführt werden können.

Beide Tools rufen hinter den Kulissen den Garbage-Collection-Befehl jcmd auf.

Verwenden Sie jmap, um die Garbage Collection in Java zu erzwingen

Die JMAP (Java Memory Map) bietet eine Methode zum Drucken des Histogramms des Heaps. Und wann immer der Befehl jmap aufgerufen wird, erzwingt er die Garbage-Collection-Routine, was nicht als der richtige Weg angesehen wird, um eine Garbage-Collection zu erzwingen.

Wenn die JVM eine Arbeitslast hat und die Garbage Collection nicht durchgeführt werden kann, gibt der Befehl jmap einen Fehler aus.

Siehe den Befehl:

jmap -histo:live 1234

Wobei live die Histogrammoption und die Zahl davor die Prozess-ID ist.

Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Verwandter Artikel - Java Garbage Collection