Назад к вопросам
СБЕР
Junior — Middle
68
Объясните, что такое слабая ссылка и как она отличается от сильной в управлении памятью?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Сильная ссылка (strong reference) — это обычная ссылка на объект в Java. Пока существует хотя бы одна сильная ссылка на объект, сборщик мусора не удалит этот объект из памяти.
Слабая ссылка (weak reference) — это ссылка, которая не препятствует сборщику мусора удалять объект. Если объект доступен только через слабые ссылки, он считается кандидатом на сборку мусора.
Пример использования слабых ссылок — кэширование, где объекты могут быть удалены при нехватке памяти, чтобы не удерживать их в памяти постоянно.
Пример кода:
import java.lang.ref.WeakReference;
public class WeakReferenceExample {
public static void main(String[] args) {
Object strong = new Object();
WeakReference<Object> weak = new WeakReference<>(strong);
System.out.println("Before nulling strong: " + weak.get()); // объект доступен
strong = null; // теперь объект доступен только через слабую ссылку
System.gc(); // попытка вызвать сборщик мусора
System.out.println("After GC: " + weak.get()); // может быть null, если объект собран
}
}