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