Тип ссылки | Когда объект собирается GC? | Можно получить объект через get()? | Основные применения |
Strong Reference | Никогда, пока есть хотя бы одна сильная ссылка. | ✅ Да | Стандартная работа с объектами. |
SoftReference | При нехватке памяти. Но JVM не гарантирует, что объект будет жить до возникновения OutOfMemoryError. Поведение SoftReference зависит от реализации JVM и настроек GC. | ✅ Да | Кэширование с автоматической очисткой. |
WeakReference | При любом следующем проходе GC, если нет сильных или мягких ссылок. | ✅ Да | Карты кэширования, когда объект может исчезнуть. |
PhantomReference | После того как объект стал недостижимым и перед окончательным освобождением памяти. | 🚫 Нет (всегда null) | Управление ресурсами после удаления объекта Для отслеживания очистки объекта практически всегда используется ReferenceQueue. |
HashMap | WeakHashMap | |
Ссылки на ключи | Сильные | Слабые |
Записи удаляются GC | Нет | Да |
Размер карты стабилен | Да | Нет |
Подходит для кэша | Ограниченно | Для некоторых сценариев |