Junior — Middle
84
Жүйеде WeakReference-ке сілтеме жасалған объектінің жиналу уақыты қашан?
AI-дан жауап
sobes.tech AI
Объект, на который ссылается WeakReference, становится кандидатом на сборку мусора, когда на него больше нет сильных ссылок (strong references). В этот момент сборщик мусора может очистить объект, даже если на него есть слабая ссылка.
То есть, очистка объекта происходит во время выполнения сборки мусора, если:
- Нет ни одной сильной ссылки на объект.
- Есть только слабые ссылки (
WeakReference), которые не препятствуют сборке мусора.
После очистки объекта WeakReference.get() вернёт null.
Пример:
val strongRef = SomeObject()
val weakRef = WeakReference(strongRef)
// strongRef существует, объект не будет собран
println(weakRef.get()) // SomeObject
// Убираем сильную ссылку
strongRef = null
// После сборки мусора объект может быть очищен
System.gc()
println(weakRef.get()) // null, если объект собран
Таким образом, очистка происходит в момент сборки мусора, если объект не удерживается сильными ссылками.