JVM middle
Виды ссылок: Strong, Soft, Weak, Phantom?
Ответ
Strong: обычная, GC не трогает. Soft: GC собирает при нехватке памяти (кэши). Weak: GC собирает при первой же сборке независимо от памяти (WeakHashMap). Phantom: get() всегда null, уведомление через ReferenceQueue для постфинализационной очистки.
Разбор: Soft-ссылки собираются при нехватке памяти (хороши для кэшей), Weak — при ближайшей сборке независимо от памяти (WeakHashMap), Phantom всегда даёт get()==null и нужны для постфинализационной очистки через ReferenceQueue. Дистракторы переставляют Soft и Weak местами, ошибочно заставляют Phantom возвращать объект и приписывают Strong «несборку даже при OOM» (на самом деле сильно достижимый объект просто не собирается, что и приводит к OOM).
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.