Какой хороший бесплатный инструмент для исследования неумышленного удержания объекта в Java?

Моя многопоточная программа Java вылетает из-за того, что она заканчивается из кучного пространства, и я не думаю, что это нужно. Предполагая, что виновником является непреднамеренное удержание объекта, какой хороший бесплатный инструмент для расследования того, какие объекты непреднамеренно сохраняются?

Моя IDE - Eclipse.

Ответ 1

Вот список инструментов с открытым исходным кодом, на которые вы можете посмотреть: http://java-source.net/open-source/profilers. Конечно, JMap и JConsole также являются возможными решениями.

Ответ 2

Инструмент, подобный Eclipse MAT поможет найти жадных свиней памяти и даже детектор утечки памяти.

Профилировщик памяти Visual VM также может помочь, если вам нужно идти на более низком уровне.

Ответ 3

В прошлый раз, когда я просматривал бесплатные профилировщики, они были не так хороши, как установленные коммерческие.

Я рекомендую оценить

и инвестировать деньги за лицензию инструмента, который вам больше всего нравится.

Хороший профилировщик по сравнению с плохим может легко сэкономить вам день отладки и немедленно заплатить за лицензию (и для людей, которые отлично справляются с этими хорошими инструментами).

Все три подключения к Eclipse и позволяют начать профилирование непосредственно из Eclipse, из вашего текущего проекта, поэтому нет никакой утомительной работы по настройке CLASSPATH.

Ответ 4

Sun VisualVM является бесплатным, но я большой поклонник JProfiler, который является коммерческим приложением, хотя вы можете получить 30-дневную пробную версию.