2012-03-27 2 views
1

Я борюсь с ошибкой памяти памяти пермг. У меня очень ограниченная способность проверять запущенную систему, поэтому я вынужден бродить по исходному коду. Чтобы уменьшить область поиска, я хочу найти только те методы, которые (возможно) потребляют память из области пермгенов.проверить, поддерживает ли метод перменную память

E.g. У меня есть набор методов root, которые определенно называются. Из этого набора мне нужно найти путь к методам, которые, вероятно, потребляют память из области пергмена (т. Е. Вызывается String.intern() и т. Д.). В настоящее время я столкнулся с двумя проблемами: как определить, потребляет ли метод пространство перменца, а второй - как я могу пройти через байтовый код, чтобы следовать пути выполнения?

Спасибо заранее, любая информация приветствуется!

ответ

2

Лучшим подходом было бы взять дамп памяти, а затем использовать Eclipse Memory Analyzer, чтобы выяснить, какие определения классов и строки занимают пространство в области PermGen.

Вы также можете добавить следующие флаги -XX: + CMSClassUnloadingEnabled -XX: + CMSPermGenSweepingEnabled, чтобы включить прокрутку области PermGen.

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