Sobes.tech
Назад к вопросам
Senior
5

Был ли опыт работы с нестандартным классом WeakReference (или похожим)?

Компании, где спрашивали
Магнус Тех

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

sobes.tech AI

В Java класс WeakReference используется для создания слабых ссылок на объекты, которые не препятствуют сборке мусора. Это полезно, когда нужно кэшировать объекты, но не удерживать их в памяти, если они больше не используются.

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

import java.lang.ref.WeakReference;

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

        System.out.println("Before nulling strongRef: " + weakRef.get());

        strongRef = null; // теперь объект доступен только через слабую ссылку
        System.gc(); // вызываем сборщик мусора

        System.out.println("After GC: " + weakRef.get()); // может быть null, если объект собран
    }
}

Такой подход помогает управлять памятью, например, при реализации кэшей, где объекты должны удаляться при нехватке памяти, но при этом быть доступными, если они еще живы. Аналоги слабых ссылок есть и в других языках и средах, например, WeakMap в JavaScript.