... er aufräumen soll?

guten Morgen,

ehrlich gesagt, wird für mich Java immer unverständlicher. Das Speichermanagement wird für mich immer intransparenter. Bisher ging ich immer davon aus, dass ein Objekt solange initiiert ist und bleibt, bis entweder die letzte Referenz darauf geschlossen wird oder ein dispose() aufgerufen wird. Diese einfache Logik machte für mich auch Sinn, weil ja jedes Java-Programm mit einer Klasse startet. Sobald jedoch diese Klasse, welche alle anderen Objekte erzeugt und implizit auch darauf referenziert stirbt, müssen auch die erzeugten Objekte sterben.

Nun habe ich mir jedoch das Singleton-Pattern angesehen. Auf dieses wird nicht referenziert. Es erzeugt sich selbst und bleibt im Speicher. Nun stellt sich mir die Frage: wie lange eigentlich? Und woher weiss der GC, dass er das Singleton aufräumen darf?

Das Singleton ist für mich eine globales Objekt. Nur dachte ich, dass es genauso etwas in Java nicht gäbe? Jedenfalls verträgt sich das nicht mit meiner OO-Anschauung...

Viele Grüße
kit