2009-05-06 2 views

ответ

5

Возможно, вы захотите попробовать детектор утечки памяти, который поставляется с JRockit Mission Control вместе с Eclipse MAT. Это мощная комбинация. Оба инструмента могут свободно использоваться для разработки.

С помощью JRockit Mission Control вы можете проверять кучу онлайн и просматривать точные номера объектов определенного типа, которые являются живыми, без необходимости принимать многократные снимки времени. Вы можете сразу увидеть, есть ли у вас редактор, просмотр или слушатель, оставшийся после кучи после закрытия View/Editor. Обычно это слушатель фреймворка, который держится на вашем представлении/редакторе. Помните, что вы должны пойти в Windows-> Preferences-> Memory Leak Detector-> Trend и установить Наименьшее использование кучи для сообщения в 0.0 для всех экземпляров объектов.

alt text http://download.oracle.com/docs/cd/E11035_01/jrockit/intro/wwimages/memleak2.gif

С MAT вы можете использовать кратчайший путь, чтобы пронизывать корень, чтобы найти цепь, которая держит на объект вытекающей.Ниже

alt text http://dev.eclipse.org/blogs/memoryanalyzer/files/2008/04/path2gc_all.png

Измените код и проверить с Leak Detector памяти, что объект мусор при закрытии редактора/вида.

3

Вам нужен какой-то профилирующий инструмент.

На затмении есть проект Memory Analyzer (wiki, blog).

Кроме того, это выглядит как TPTP также делает профилирование.

0

Если вы находитесь в окнах, самый простой способ - просто контролировать, например, eclipse.exe в диспетчере задач при использовании этого инструмента. Если ваш исполняемый файл RCP имеет другое имя, это то, что вам нужно будет контролировать. В Unix вы можете использовать аналогичный инструмент (возможно, proc)?

Выполнять наиболее интенсивные задачи (или если вы подозреваете, что определенные функции вызывают проблему, используйте их). ЕСЛИ объем памяти, используемой eclipse.exe, не уменьшится после того, как ваши интенсивные задачи завершатся, вы, вероятно, получите утечку. В результате это приведет к ошибке из памяти.

Вы можете ускорить ошибку из памяти, уменьшив объем доступной памяти для приложения с помощью параметра «-Xmx» в eclipse.ini (или .ini). Например. -Xmx256m означает, что доступно максимум 256 мегабайт. Очевидно, что этого параметра все равно должно быть достаточно для запуска вашего приложения, но более низкая настройка приведет к более частому сбору мусора и сделает утечки более очевидными.

0

Вам нужен профайлер памяти (как упомянули другие.) Когда у вас есть хороший инструмент, вы можете легко найти проблемы.

Мы используем: http://www.yourkit.com/

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

В принципе, вы делаете снимок действий, которые вы делаете, а затем смотрите на предметы, которые были выделены и не выпущены.

Редактировать: Я забыл добавить, этот инструмент интегрируется прямо в затмение.

1

Простейшее решение поставляется с Java JDK: Java VisualVM.

Он расположен в каталоге BIN (jvisualvm.exe под Windows), так как JDK 6 Update 7.

включает также профайлер памяти, куча ходок и Eclipse integration.

https://visualvm.dev.java.net/images/getstarted/vvm-anagram-profiler.png (слишком плохо, я не разрешено использовать теги изображений)

См https://visualvm.dev.java.net/