WeakHashMap используется для создания мапы, где ключи удерживаются "слабыми" ссылками. Это означает, что если на объект-ключ нет других сильных ссылок, помимо ссылки из WeakHashMap, то сборщик мусора может удалить этот объект и соответствующую запись из мапы.
Основные сценарии использования:
Отличие от HashMap:
| Признак | HashMap | WeakHashMap |
|---|---|---|
| Удержание ключей | Сильные ссылки. Ключи удерживаются, пока мапа существует или содержащая запись не удалена явно. | Слабые ссылки. Ключи могут быть удалены сборщиком мусора, если на них нет других сильных ссылок. |
| Поведение | Предсказуемое с точки зрения удаления ключей. | Ключи могут исчезать непредсказуемо из-за сборки мусора. |
| Использование | Общее назначение, где ключи должны сохраняться. | Сценарии, где нужно избежать утечек памяти, связанных с ключами. |
Пример:
java
Важно понимать, что сборщик мусора работает асинхронно, и удаление ключей из WeakHashMap происходит в неопределенный момент времени после того, как на объект-ключ перестают ссылаться сильные ссылки.