Ja, das sind sie. Im Wesentlichen geht der GC von "bekannten Wurzeln" (statischen Variablen, lokalen Variablen von allen Stapelrahmen in all-threads), um Objekte zu finden, die nicht als Müll gesammelt werden können. Wenn es keine Möglichkeit gibt, von einem Stamm zu einem Objekt zu gelangen, kann es gesammelt werden.
EDIT: Tom hat darauf hingewiesen, was ich für wert hielt, in die Antwort selbst aufgenommen zu werden:
Technisch sind statische Variablen nicht Wurzeln - sie sind durch Klassen referenziert welche durch Klassenlader referenziert werden welche durch Klassen referenziert werden sind durch Objekt referenziert, die sind referenziert durch Wurzelreferenzen.
Der Unterschied ist wahrscheinlich irrelevant am meisten der Zeit, aber es ist gut zu wissen:)
Überprüfen Sie Folgendes: Wie behandelt Java Garbage Collector Selbstreferenzen .
Vielleicht möchten Sie java.lang.ref.WeakReference
Skeet ist wie immer auf das Geld angewiesen. Ich würde nur hinzufügen, dass die Situation, die Sie beschreiben, der Grund dafür ist, dass das Referenzzählen (eine Standardstrategie mit frühen C ++ - Smartpointern) nicht verwendet wird.
Tags und Links java garbage-collection