o
könnte Garbage Collection erhalten, sobald sie nicht mehr erreichbar ist, egal ob sie endgültig ist oder nicht. Natürlich, solange execute
läuft, wenn es auf o
zugreifen muss, wird GC verhindert.
Wenn execute
ausgeführt wird und angenommen wird, dass Sie keine Referenzen auf o
gespeichert haben (z. B. in einer Sammlung), wird dies als bereit für die Garbage Collection gekennzeichnet.
Wenn die anonyme Klasseninstanz für die Garbage Collection infrage kommt, wird, wenn sich nichts anderes auf das Objekt bezieht, auf das o
beim Aufruf der Methode Bezug genommen hat, dieses Objekt für die Garbage Collection geeignet.
Endgültige Variablen, die die Garbage Collection verhindern, haben nichts besonderes zu bieten.
Es besteht keine Beziehung zwischen final
Schlüsselwort und der Lebensdauer der Variablen.
Es wird Müll gesammelt werden, wenn nicht mehr benötigt wird, und da es ein Parameter ist, kann dies außerhalb der Methode passieren (wenn es keine Referenz außerhalb gibt).
Das Schlüsselwort final
ist nur eine Einschränkung für den Compiler, die jede weitere Änderung des Verweises o
nach dem Aufruf der Funktion verbietet.
'final' hat keinen Einfluss auf GC. Das Objekt wird für die Erfassung verfügbar, wenn es nicht mehr erreichbar ist. In diesem Fall gibt es mindestens drei Referenzen, von denen jeder das stoppen kann: der 'final' Parameter, der verschwindet, wenn die Methode zurückkehrt; die Referenz des Anrufers; und die Kopie der letzten Variablen in der anonymen Klasseninstanz.
Tags und Links java garbage-collection final