Junior — Middle
Wanneer vindt het opruimen van het object waarnaar WeakReference verwijst plaats tijdens het systeemproces?
sobes.tech AI
Antwoord van AI
Het object waarnaar WeakReference verwijst, wordt een kandidaat voor garbage collection wanneer er geen sterke verwijzingen meer naar zijn. Op dat moment kan de garbage collector het object verwijderen, zelfs als er een zwakke verwijzing is.
Met andere woorden, het object wordt tijdens de uitvoering van de garbage collection verwijderd als:
- Er geen sterke verwijzingen naar het object zijn.
- Er alleen zwakke verwijzingen (
WeakReference) zijn die de garbage collection niet verhinderen.
Na het verwijderen van het object zal WeakReference.get() null teruggeven.
Voorbeeld:
val strongRef = SomeObject()
val weakRef = WeakReference(strongRef)
// strongRef bestaat, het object wordt niet verzameld
println(weakRef.get()) // SomeObject
// Verwijder de sterke verwijzing
strongRef = null
// Na garbage collection kan het object worden verwijderd
System.gc()
println(weakRef.get()) // null, als het object is verzameld
Dus, het verwijderen gebeurt op het moment van garbage collection, als het object niet wordt vastgehouden door sterke verwijzingen.