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

Чем отличаются различные виды ссылок в языке Java и как они влияют на сборку мусора?

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

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

sobes.tech AI

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

  1. Strong Reference (сильная ссылка) — обычная ссылка на объект. Пока есть сильные ссылки, объект не будет удалён сборщиком мусора.

  2. Soft Reference (мягкая ссылка) — объект с мягкой ссылкой удаляется только при нехватке памяти. Используется для кэширования.

  3. Weak Reference (слабая ссылка) — объект с слабой ссылкой может быть удалён при следующем проходе сборщика мусора, даже если есть слабые ссылки.

  4. Phantom Reference (фантомная ссылка) — используется для отслеживания момента, когда объект уже готов к удалению, но ещё не удалён. Позволяет выполнять дополнительные действия после удаления объекта.

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

import java.lang.ref.WeakReference;

public class WeakRefExample {
    public static void main(String[] args) {
        Object obj = new Object();
        WeakReference<Object> weakRef = new WeakReference<>(obj);

        obj = null; // Убираем сильную ссылку

        System.gc(); // Запускаем сборщик мусора

        if (weakRef.get() == null) {
            System.out.println("Объект удалён");
        } else {
            System.out.println("Объект ещё доступен");
        }
    }
}

Таким образом, выбор типа ссылки позволяет контролировать время жизни объектов и эффективность использования памяти.