Как найти утечку памяти Java

Как вы находите утечку памяти в Java (используя, например, JHat)? Я попытался загрузить дамп кучи в JHat, чтобы получить базовый вид. Тем не менее, я не понимаю, как я должен быть в состоянии найти корневую ссылку (ссылка) или как там это называется. По сути, я могу сказать, что существует несколько сотен мегабайт записей хеш-таблицы ([java.util.HashMap $ Entry или что-то в этом роде), но карты используются повсеместно ... Есть ли способ поиска больших карт или, может быть, найти общие корни деревьев больших объектов?

[Править] Хорошо, я до сих пор читал ответы, но давайте просто скажем, что я дешевый ублюдок (то есть меня больше интересует изучение того, как использовать JHat, чем платить за JProfiler). Кроме того, JHat всегда доступен, поскольку он является частью JDK. Если, конечно, с JHat нет другого пути, кроме грубой силы, но я не могу поверить в это.

Кроме того, я не думаю, что я смогу на самом деле изменить (добавление регистрациивсе размеры карты) и запустим его достаточно долго, чтобы я заметил утечку.

Ответы на вопрос(8)

Ваш ответ на вопрос