Назад к вопросам
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.