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