2010-11-11 3 views
1

У меня проблемы с памятью кучи моего приложения, и я пытаюсь использовать VisualVM, чтобы найти утечки памяти. Я кое-что не понимаю. На вкладке «Sampler», когда я нажимаю кнопку «Память», я вижу несколько тысяч классов, имеющих экземпляры. Если я делаю то же самое на вкладке «Профайлер», я вижу гораздо меньше классов, и на этот раз они «Живые классы». Если я посмотрю на вкладке «Монитор», я вижу более 10.000 классов в Total Loaded. Можете ли вы мне помочь? Кроме того, если у меня есть более одного экземпляра для класса, есть ли способ узнать больше об этом экземпляре?Загруженные классы в VisualVM

спасибо.

ответ

2

Я бы порекомендовал вам сделать кучу, чтобы увидеть больше информации - живые представления не так хороши для этого.

Чтобы сделать дамп кучи:

  1. Locate приложение в списке приложений (/ дерево)
  2. правой кнопкой мыши на ней и взять кучу сваливать

Или нажмите на монитор и " heap dump "(справа):

+0

Теперь у меня есть куча кучи, и я открыл его в Memory Analyzer. После теста Leak Suspects у меня есть только следующее: Класс загрузчик/компонент «sun.misc.Launcher $ AppClassLoader @ 0x9750468» занимает 9 540 792 (74,72%) байта. Память накапливается в одном экземпляре «java.lang.Object []», загружаемом «<загрузчик системного класса») Как вы думаете, это может иметь какое-то отношение к утечкам памяти, загружено слишком много классов, а не выгружается? Возможно, вы можете предложить другие места для просмотра. Кроме того, количество загрузчиков классов составляет 785, а количество экземпляров превышает 250 000, даже если мое приложение сейчас находится в режиме ожидания. – Cristian

+0

Хм, какое это приложение? – dacwe

Смежные вопросы