Ответ
В JVM есть несколько видов ссылок, управляемых java.lang.ref пакетом:
- Strong Reference – обычная ссылка, объект не удаляется GC, пока есть strong ссылки.
Object obj = new Object(); // strong reference
- SoftReference – объект удаляется, только если JVM не хватает памяти.
SoftReference<Object> softRef = new SoftReference<>(new Object());
- WeakReference – объект удаляется при следующем GC, даже если есть свободная память.
WeakReference<Object> weakRef = new WeakReference<>(new Object());
- PhantomReference – объект удаляется, но перед этим попадает в очередь ReferenceQueue.
Используются для кэшей (Soft), слушателей (Weak) или контроля финализации (Phantom).