Инструмент для просмотра объектов в Permgen - PullRequest
5 голосов
/ 24 сентября 2010

У меня есть некоторые проблемы с переполнением permgen.Какие инструменты я могу использовать, чтобы посмотреть, какие классы теперь загружены в permgen и сколько памяти они используют?Спасибо.

Ответы [ 2 ]

10 голосов
/ 24 сентября 2010

Возможно, у вас большая кодовая база или вы интернируете много строк.

Попробуйте jmap:

jmap -permstat <pid>

(Примечание: опция permstat недоступна в Windows)

Пример:

$ jmap -permstat 22982
Attaching to process ID 22982, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 17.0-b16
100691 intern Strings occupying 5641096 bytes.
finding class loader instances ..Finding object size using Printezis bits and skipping over...
done.
computing per loader stat ..done.
please wait.. computing liveness..done.
class_loader    classes bytes   parent_loader   alive?  type

<bootstrap>     303     1355992   null          live    <internal>
0xdd159fe8      9       94104   0xdd153c30      live    sun/misc/Launcher$AppClassLoader@0xae7fcfa0
0xdd153c30      0       0         null          live    sun/misc/Launcher$ExtClassLoader@0xae7b0178

total = 3       312     1450096     N/A         alive=3, dead=0     N/A

Вы также можете попробовать выгрузить кучу в файл и затем загрузить ее в Eclipse Memory Analyzer , который предоставит вам полезную информацию, такую ​​как отчет об утечках и дерево доминант.

jmap -dump:format=b,file=heap.bin 22982

При необходимости вы можете увеличить пространство PermGen с помощью опции -XX:MaxPermSize JVM.

0 голосов
/ 24 сентября 2010

Похоже, что вы ищете профилировщик.(например, jProfiler или для открытого источника: http://java -source.net / open-source / profilers )

...