Как лучше исследовать утечку памяти в NetBeans - PullRequest
4 голосов
/ 28 ноября 2010

Я пишу веб-паук.Это работает хорошо, за исключением, кажется, утечки памяти.Программа будет работать нормально в течение примерно 15 минут, а затем произойдет сбой.

Если я контролирую ее с помощью функции «Профиль» в NetBeans, я вижу, что со временем объем памяти увеличивается, пока в итоге я не получу java.lang.OutOfMemoryError и программа полностью аварийно завершает работу.

На рисунке ниже показаны снимки памяти объектов, использованных через одну минуту и ​​через 15 минут (непосредственно перед тем, как произойдет сбой.) Есть ли способ узнать, где находятся эти объекты (мойглавные виновники byte[] и char[]) создаются или что все еще ссылается на них (и поэтому предотвращает их уничтожение сборщиком мусора)?

Или я понятия не имею, что яговорим о?

alt text

Спасибо, я ценю помощь.

Ответы [ 2 ]

2 голосов
/ 28 ноября 2010

Вы, вероятно, не ошиблись со своим предположением, но, возможно, не используете правильный инструмент?

Я не знаю NetBeans, но я знаю, что Yourkit Profiler и JProfiler являются очень мощными инструментами для этих целей.виды анализов.Вы можете пройтись по куче и проанализировать «горячие точки».Оба инструмента имеют пробную лицензию, поэтому вы можете попробовать их, чтобы увидеть, какой из них подходит вам больше всего.

1 голос
/ 28 ноября 2010

Когда вы используете профилировщик для анализа памяти, вы можете включить запись трасс стека для размещения объектов.

Когда вы работаете в этом режиме, вы можете щелкнуть правой кнопкой мыши по классу и отобразить трассировку стека, в которой создаются объекты. Это должно дать вам достаточно информации, чтобы отследить утечку памяти.

Возможно, вы захотите прочитать и эту статью: http://netbeans.org/community/magazine/html/04/profiler.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...