Моя многопоточная программа Java отказывает, потому что она исчерпывает пространство "кучи", и я не думаю, что она должна. Принятие преступника является неумышленным объектным хранением, что состоит в том, чтобы исследовать хороший бесплатный инструмент, какие объекты неумышленно сохраняются?
Моим IDE является Eclipse.
Вот список инструментов с открытым исходным кодом, на которые вы можете обратить внимание: http://java-source.net/open-source/profilers . Конечно, JMap и JConsole также являются возможными решениями.
VisualVM от Sun - это бесплатно, но я большой поклонник JProfiler , которое является коммерческим приложением, хотя вы можете получить 30-дневную пробную версию.
Такой инструмент, как Eclipse MAT, поможет найти жадные свичи памяти и даже имеет детектор утечек памяти.
Профилировщик памяти из Visual VM также может помочь, если вам нужно перейти на более низкий уровень.
Когда я в последний раз заглядывал в бесплатные профилировщики, они были не так хороши, как известные коммерческие.
Я рекомендую оценить
и вложить деньги в лицензию на инструмент, который вам больше всего нравится.Хороший профилировщик, по сравнению с плохим, может легко сэкономить вам день работы по отладке и сразу заплатить за лицензию (и за людей, выполняющих отличную работу по разработке этих хороших инструментов).
Все три подключаются к Eclipse и позволяют вам начать профилирование прямо из Eclipse, из вашего текущего проекта, поэтому нет утомительной работы по настройке CLASSPATH.
Я бы начал с инструментов, которые поставляются с JDK, jconsole и jmap. Есть хорошая статья о мониторинге JVM на java.sun.com.