JProfiler: После сбора мусора собирает объект. Если в куче есть какой-нибудь живой объект, это утечка памяти? - PullRequest
3 голосов
/ 24 февраля 2012

Я использую JProfiler для профилирования своего приложения.Я заметил, что когда я запускаю сборщик мусора, все отмеченные Записанные объекты становятся зелеными и через некоторое время они снова сталкиваются с некоторой разницей в Созданных и Разрушенных объектах.Кстати, мое приложение все еще работает в настоящее время, сталкивается ли мое приложение с проблемой утечки памяти, или это обычно.Существует несколько снимков, которые могут помочь вам понять ситуациюenter image description here

Выше снимок, когда я запускаю сборщик мусора ...

Но через некоторое время эти полосы становятся зелеными и красными частично ...

1 Ответ

2 голосов
/ 24 февраля 2012

Как правило, вы можете сказать, что у вас утечка памяти, если размер, занимаемый определенным объектом, скажем, char [] , продолжает расти, несмотря на GC.

Обычно нормально, если после GC вы снова видите «Red» для объектов определенного типа. Я предполагаю, что ваше приложение выполняет некоторую работу и генерирует мусор. Так что это само по себе не проблема. Однако, если размер продолжает расти, проблема может быть .

Хорошая стратегия состоит в том, чтобы записать размер выделения данного объекта, скажем, char [] , до и после GC и посмотреть, сколько объектов собирается. Повторите это упражнение в течение определенного периода времени. Если размер не растет массово, у вас все будет хорошо.

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

...