Объяснение
Сборщик мусора освобождает недостижимые объекты. Цикл ссылок не обязательно является утечкой для трассирующего GC. Удерживаемая из глобального кеша ссылка делает объект достижимым, даже если он больше не нужен продукту.
Задача для самостоятельного решения
Почему бесконечно растущий кеш не очищается GC?
Показать разбор ответа
Его записи достижимы из корня программы. Нужны ограничение размера, TTL или вытеснение. Сборщик не знает бизнес-смысла слова «ненужный».