В Java существуют сильные (strong), мягкие (soft), слабые (weak) и призрачные (phantom) ссылки.
Сильная ссылка:
java
Мягкая ссылка (SoftReference):
java
Слабая ссылка (WeakReference):
java
Призрачная ссылка (PhantomReference):
get().ReferenceQueue для выполнения действий после того, как объект становится доступным для сборки, но до того, как память будет фактически освобождена. Применяются для более сложного управления ресурсами, чем с использованием метода finalize().java
Основные отличия представлены в таблице:
| Тип ссылки | Критерий сборки мусора | Возможность получить объект через get() | Применение |
|---|---|---|---|
| Сильная | Только если нет сильных ссылок | Да | Обычное использование |
| Мягкая | Если не хватает памяти | Да (может быть null) | Кэши |
| Слабая | Если нет сильных ссылок | Да (может быть null) | Предотвращение утечек памяти (слушатели, контексты) |
| Призрачная | После очистки всех призрачных ссылок (в сочетании с ReferenceQueue) | Нет (всегда null) | Продвинутое управление ресурсами, замена finalize() |