Middle
52
questionbank

Защищают ли все виды ссылок объект от удаления?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Нет, не все. Только сильные (strong) ссылки защищают объект от сборки мусора. Слабые (weak), фантомные (phantom) и мягкие (soft) ссылки этого не делают.

Вот их основные отличия:

  • Сильная (Strong) ссылка: Стандартная ссылка в Java/Kotlin. Если на объект есть хотя бы одна сильная ссылка, он не будет собран сборщиком мусора. Присваивается по умолчанию.
  • Мягкая (Soft) ссылка: Объект, на который ссылается мягкая ссылка, может быть собран сборщиком мусора только если JVM остро нуждается в памяти. Полезно для кеширования. Реализуется через SoftReference.
  • Слабая (Weak) ссылка: Объект, на который ссылается слабая ссылка, может быть собран сборщиком мусора в любой момент, если на него нет сильных ссылок. Используется для реализации кешей, которые не блокируют сборку мусора. Реализуется через WeakReference.
  • Фантомная (Phantom) ссылка: Объект, на который ссылается фантомная ссылка, уже поставлен в очередь на сборку мусора (finalize уже вызван или не переопределен), но еще не был полностью удален. Нужна для отслеживания процесса сборки и освобождения ресурсов. Реализуется через PhantomReference.

Пример слабой ссылки:

java