Java Garbage Collection
Wenn ein Objekt in Java keine Referenzen hat, wird es zu Müll. Wenn es nicht rechtzeitig recycelt und der Speicher freigegeben wird, sammelt sich der Müll immer mehr an und schließlich ist nicht mehr genügend Speicher vorhanden!, und die JVM wird aufhören zu laufen.
Manche Leute sind verwirrt: Normalerweise zerstören wir Objekte beim Codieren nicht explizit. Wie kann das Programm also gut laufen?
Hier geht es um den heutigen Protagonisten, den Daemon-Thread GC, der nach einem bestimmten Algorithmus von Zeit zu Zeit Müllobjekte freigibt und gleichzeitig die hohe Verfügbarkeit gewährleistet Speicher und halten den normalen Betrieb des Prozesses aufrecht.
Schauen wir uns den folgenden Code an:
public class DemoDatatype {
public static void main(String[] args) {
new DemoDatatype();
System.gc();
System.out.println("over!");
}
@Override
protected void finalize() throws Throwable {
System.out.println("Arbeit vor Garbage Collection!");
super.finalize() ;
}
}
Programmausgabe: vorbei!
Wir haben ein Objekt „new DemoDatatype()“ erstellt, weil Ohne Referenz wird es schnell zum Müllobjekt, aber wird es definitiv recycelt? Zumindest zeigen die obigen Ergebnisse, dass es kein Recycling gibt, da der JVM über genügend Speicher verfügt und ich mir nicht die Mühe mache, Sie zu recyceln. Ich bin sehr ressourcenintensiv.
Es gibt eine statische Methode gc() unter der Klasse java.lang.System. Durch aktiven Aufruf können Sie den GC benachrichtigen: Hey, ich habe hier Müll, kommen Sie und helfen Sie sammle es. Es kann jedoch sein, dass der GC nicht unbedingt sofort auf Ihre Anfrage reagiert. Auf halber Strecke kann es zu einem Stau kommen, und es ist nicht klar, wann er eintreffen wird. Führen Sie gc() aus, um die Ergebnisse anzuzeigen:
public class DemoDatatype {
public static void main(String[] args) {
new DemoDatatype ( );
System.gc();
System.out.println("over!");
}
@Override
protected void finalize() throws Throwable {
System.out.println("Arbeit vor Garbage Collection!");
super.finalize();
}
}
Programmausgabe: vorbei!
Arbeit vor der Müllabfuhr!
Oder: Arbeiten vor der Müllabfuhr!
GC funktionierte, weil es im Leerlauf war, also reagierte es rechtzeitig, wurde aber nicht sofort ausgeführt, zufällige Ereignisse. GC führt die finalize()-Methode vor der Garbage Collection aus. Wir wissen, dass GC die beantragten Objekte nur durch ungewöhnliche Mittel kennt. Die Funktion von finalize() besteht darin, einige Ressourcen vor der Speicherbereinigung freizugeben, z. B. einige Ressourcen, die von gc nicht recycelt werden können, z. B. „nicht neuer“ Speicher, nicht geschlossene E/A usw. Verlassen Sie sich jedoch nicht auf finalize(), um Ressourcen freizugeben. Der GC ist möglicherweise nicht erreichbar und kann zu Speicherverlusten führen. Unter welchen Umständen wird GC ausgelöst? 1) GC ist ein Daemon-Thread. Als Mitglied der Dienstleistungsbranche hat er die niedrigste Priorität und wird daher nur gestartet, wenn die Anwendung inaktiv ist. 2) Wenn der Speicher nicht ausreicht und die Anwendung kurz vor dem Tod steht, tritt der GC vor, um Müll zu beseitigen und Speicher freizugeben. Wenn der Speicherverlust schwerwiegend ist, stoppt die JVM. GC-Arbeit verbraucht auch Systemressourcen. Wie vermeidet man unnötigen Overhead? 1) Erstellen Sie keinen Müll: Reduzieren Sie die Verwendung temporärer Objekte, lassen Sie sie nach der Verwendung leer. 2) Fordern Sie GC nicht aktiv an: Rufen Sie system.gc nicht explizit auf ()
3) Klären Sie den Lebenszyklus von Objekten und zerstören Sie sie aktiv 4) Vermeiden Sie die konzentrierte Erstellung einer großen Anzahl nutzloser Objekte, z. B. das Spleißen einer großen Anzahl von Zeichenfolgen
5) Achten Sie während des Codierungsprozesses auf Speicherlecks, um sicherzustellen, dass der Code korrekt ist.

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





Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4

Java ist eine beliebte Programmiersprache, die sowohl von Anfängern als auch von erfahrenen Entwicklern erlernt werden kann. Dieses Tutorial beginnt mit grundlegenden Konzepten und geht dann weiter zu fortgeschrittenen Themen. Nach der Installation des Java Development Kit können Sie das Programmieren üben, indem Sie ein einfaches „Hello, World!“-Programm erstellen. Nachdem Sie den Code verstanden haben, verwenden Sie die Eingabeaufforderung, um das Programm zu kompilieren und auszuführen. Auf der Konsole wird „Hello, World!“ ausgegeben. Mit dem Erlernen von Java beginnt Ihre Programmierreise, und wenn Sie Ihre Kenntnisse vertiefen, können Sie komplexere Anwendungen erstellen.
