В моем приложении у меня ошибка памяти PermGen, и я хочу посмотреть, что привело к ней.Как я могу узнать, что именно хранится в PermGen?
Я подключился к своему приложению через VisualVM.
Я хочу посмотреть, что именно потребляет столько памяти PermGen в моем приложении, но я не могу взять специальную «кучу PermGen» в VisualVM. Я могу взять только стандартный HeapDump.
Можно ли узнать, что именно потребляет всю мою память PermGen с помощью VIsualVM или какого-либо другого инструмента?
UPDATE Этот вопрос был помечен как «дубликат», но на самом деле я не вижу ответа на мой вопрос в теме упоминается. Проблема в том, что я не вижу способа точно указать, что потребляет память в моем пространстве перменто.
В настоящее время из этой темы я знаю следующие подсказки:
Run jmap -permstat и посмотреть, сколько PermGen используется стажер Струны. Хорошая идея, она работает: теперь я знаю, что String Pool не проблема в моем случае.
Запустить jmap -permstat и посмотреть, как память потребляется загрузчиками классов. Он работает, но в AppClassLoader есть сотни классов, это не очень помогает мне.
Запустите PrintStringTable.java, чтобы посмотреть, какие строки занимают память. Я не могу запустить его в моем Windows 7 PC, потому что я получаю
Установку для обработки ID XXXX, пожалуйста, подождите ... Ошибка подключения к процессу: Таймаут при попытке подключения к серверу отладки (пожалуйста запустите SwDbgSrv.exe).
Как бы то ни было, это не мое дело.
- Проследите за загрузкой классов во время выполнения, указав свойства JVM. Он работает, но не помогает мне понять, что уберет память, там загружены тысячи классов.
Поэтому я не вижу ответа на свой вопрос здесь. Я знаю, что PermGen потребляется не только самими классами, но и их статическими членами. Как я могу отслеживать, какие статические члены классов потребляют память?
Пожалуйста, дайте мне знать, если я пропустил этот ответ.
Классы и стоп-рамка идут в Пермингене. Есть ли у вас чрезмерные классы или потоки (каждый поток имеет свой собственный стек)? –
Вот решение: http://stackoverflow.com/questions/2842982/how-to-analyze-permgen-contents – znurgl
Статические методы/переменные также входят в файл permgen, а также любое использование string.intern() (до JDK7), среди прочего. – spudone