finaliser()

Noctarius

Top Contributor
Genau wie mein Vorredner sagt:
Der GC ist nicht angehalten den Speicher abzuräumen und damit alte, nicht mehr benutze Objekte zu entsorgen.

Generell ist die Verwendung von Finalizern (im Gegensatz zu anderen Sprachen) in Java als Antipattern bekannt. Es gibt (außer Frameworks welche den Lifecycle selber verwalten) keine wirklich saubere Variante um zu erkennen wenn ein Objekt nicht mehr gebraucht wird. Prinzipiell kann es passieren, dass selbst wenn dein Programm den ganzen Tag läuft, du niemals auch nur einen GC zu Gesicht bekommen würdest (etwas übertrieben und mit den "richtigen" GC-Einstellungen).
 

tuttle64

Bekanntes Mitglied
Aus einem SCJP-Buch steht die wichtige Regel bei der Vewendung von gc() : You can ask the JVM to run the gc, but you cannot force the gc to run. Even if the gc runs there is no guarantees the JVM will remove all unused objects from memory.
 

Oben