1. (strongly) reachable |
-
Objekt ist ausschließlich durch Ketten von starken
Referenzen erreichbar
-
Garbage Collector darf dieses Objekt nicht freigeben
|
2. softly reachable |
-
Objekt ist nur durch Pfade erreichbar, die mindestens eine
Softreferenz enthalten (starke Referenzen sind auch zulässig)
-
Garbage Collector versucht ein softly reachable Objekt solange
wie möglich im Speicher zu behalten (erst kurz vor einem OutOfMemoryError
sollte der Referent gelöscht werden und in eine ReferenceQueue
eingefügt werden)
-
Objekte, auf die längere Zeit nicht zugegriffen wurde,
sollten dabei zuerst gelöscht werden
-
Anwendungsbereich: Caches
|
3. weakly reachable |
-
Objekt ist nur durch Pfade erreichbar, die mindestens eine
Weakreferenz enthalten (starke Referenzen und "softe" Referenzen sind auch
zulässig)
-
Garbage Collector entfernt immer ein weakly reachable Objekt,
d.h. alle Weak Referenzen zu diesem Objekt und alle weakly reachable Objekte,
die dieses Objekt durch eine Kette von starten und "soften" Referenzen
referenzieren, werden gelöscht
-
zum Zeitpunkt des Löschens oder kurz darauf wird die
Weak Referenz in eine ReferenceQueue eingefügt
-
Anwendungsbereich: Canonical Mappings (Zusätzliche Informationen
werden an ein Objekt angehängt, ohne daß seine Struktur verändert
wird. Sobald das Objekt vom Heap entfernt wird, sollen auch die externen
Informationen gelöscht werden.)
|
4. phantomly reachable |
-
Objekt ist nur durch Pfade erreichbar, die mindestens eine
Phantomreferenz enthalten (alle anderen Referenzen sind auch zulässig)
-
Garbage Collector fügt ein phantomly reachable Objekt
nur in eine ReferenceQueue ein (die Phantom Referenz wird weder
gecleared noch wird das Objekt vom Heap entfernt)
-
Phantom Objekte sind sozusagen schon finalized()
aber noch immer im Speicher
-
erst, wenn alle Phantom Referenzen auf das Objekt gecleared
wurden oder selber unreachable werden, wird das Objekt gelöscht
-
Anwendungsbereich: pre-mortem Cleanup (die Phantom Referenz
erscheint in einer ReferenceQueue, so daß die Anwendung weitere Aufräumarbeiten
starten kann)
|
5. unreachable |
-
es existiert kein Pfad vom Root Set zu diesem Objekt
-
Garbage wird beseitigt
|