Sobes.tech
Назад к вопросам
Junior — Middle
63

Можешь перечислить типы ссылок, существующие в Java и их особенности?

Компании, где спрашивали
Viasat tech

Ответ от нейросети

sobes.tech AI

В Java существуют следующие типы ссылок, которые влияют на сборку мусора и управление памятью:

  1. Strong Reference (сильная ссылка)

    • Обычная ссылка, которую мы используем по умолчанию.
    • Объект, на который есть сильная ссылка, не будет удалён сборщиком мусора.
  2. Soft Reference (мягкая ссылка)

    • Используется для кэширования.
    • Объекты с мягкими ссылками удаляются только при нехватке памяти.
    • Класс: java.lang.ref.SoftReference
  3. Weak Reference (слабая ссылка)

    • Объекты с слабыми ссылками удаляются при следующем цикле сборки мусора, если нет сильных ссылок.
    • Используется для реализации слабых кэшей.
    • Класс: java.lang.ref.WeakReference
  4. Phantom Reference (фантомная ссылка)

    • Используется для отслеживания момента, когда объект уже готов к удалению.
    • Не позволяет получить объект через метод get() (возвращает null).
    • Применяется для более тонкого контроля очистки ресурсов.
    • Класс: java.lang.ref.PhantomReference

Пример создания слабой ссылки:

import java.lang.ref.WeakReference;

String strong = new String("Hello");
WeakReference<String> weak = new WeakReference<>(strong);

strong = null; // теперь объект доступен только через слабую ссылку

String value = weak.get(); // может вернуть null, если объект уже собран