Найти в Дзене
Java

💡 Java-совет: WeakHashMap для кэша без утечек памяти

Если ты используешь HashMap как кэш - будь осторожен. Пока карта жива, ключи и значения не будут удалены GC, даже если они больше нигде не используются. WeakHashMap решает эту проблему: • Ключи хранятся через weak reference • Если на ключ нет сильных ссылок в коде - GC может его удалить • Запись автоматически исчезает из мапы • Отлично подходит для кэшей, метаданных, listener-ов Пример идеи: • Положил объект в WeakHashMap • Убрал на него все обычные ссылки • GC очистил объект → запись исчезла сама Когда использовать: • Кэш, который не должен раздувать память • Вспомогательные данные, завязанные на жизненный цикл объекта • Framework-код, плагины, reflection-кэши Когда не стоит: • Если ключи должны жить строго контролируемо • Если логика зависит от стабильного наличия записи Коротко: HashMap - контроль у тебя WeakHashMap — контроль у GC 🧹 Полезный инструмент, если понимаешь его семантику.

💡 Java-совет: WeakHashMap для кэша без утечек памяти

Если ты используешь HashMap как кэш - будь осторожен. Пока карта жива, ключи и значения не будут удалены GC, даже если они больше нигде не используются.

WeakHashMap решает эту проблему:

• Ключи хранятся через weak reference

• Если на ключ нет сильных ссылок в коде - GC может его удалить

• Запись автоматически исчезает из мапы

• Отлично подходит для кэшей, метаданных, listener-ов

Пример идеи:

• Положил объект в WeakHashMap

• Убрал на него все обычные ссылки

• GC очистил объект → запись исчезла сама

Когда использовать:

• Кэш, который не должен раздувать память

• Вспомогательные данные, завязанные на жизненный цикл объекта

• Framework-код, плагины, reflection-кэши

Когда не стоит:

• Если ключи должны жить строго контролируемо

• Если логика зависит от стабильного наличия записи

Коротко:

HashMap - контроль у тебя

WeakHashMap — контроль у GC 🧹

Полезный инструмент, если понимаешь его семантику.