Поскольку вы говорите о методах, я полагаю, что вы смотрите на представление "Распределения" для обходчика кучи.Это представление показывает, где объекты были созданы , а не где объекты ссылаются .Есть скриншот, который объясняет запись выделения в JProfiler .
HashMap.put
не будет выделять много памяти, он просто создает небольшие объекты «Entry», которые используются для хранения ключей.пары значений.Объекты, которые занимают много памяти, создаются перед тем, как поместить их в хэш-карту.
Resultset.getString
и Statement.getString
создают объекты String, которые вы читаете из своей базы данных.Поэтому разумно предположить, что некоторые из этих объектов являются более долгоживущими.
Чтобы выяснить , почему объекты все еще находятся в куче, вы должны перейти в справочный вид, выбрать входящие ссылки иискать "путь к корню GC".Представление «самые большие объекты» также очень полезно для отслеживания чрезмерного использования памяти.