Это не утечка, если вы удалили все ссылки на него. Если вы полностью очищаете свою карту, то это не источник утечки. Вы должны учитывать тот факт, что JVM выбирает не принадлежащее GC поколение очень часто, как не относящееся к вам - все, что имеет значение, это то, что у вас нет ссылки на него, поэтому JVM может GC это, если хочет.
Существуют различные стратегии, которые JVM могут использовать для управления GC, поэтому я говорю здесь в общих чертах, а не в деталях, но места с использованием GCing, как правило, очень дороги и оказывают большое влияние на приложение, поэтому JVM выбирает не делать это часто вообще.
Если вы посмотрите на количество используемого пространства кучи, вы увидите пилообразную схему, когда элементы добавляются и в конечном итоге собираются. Не беспокойтесь о том, где находится верх пилообразного устройства, заботьтесь о том, где находится дно (и насколько близко к максимальному доступному пространству кучи).
Один из способов проверить, действительно ли это утечка, - это загрузить приложение в течение длительного периода времени. Если у вас есть утечка, базовый объем памяти, который использует ваше приложение, со временем будет увеличиваться (нижняя часть пилообразного устройства). Если вы этого не сделаете, он останется постоянным. Если у вас есть утечка, вы можете использовать профилировщик, чтобы помочь найти ее.