Как определить размер Permgen в приложении Java (т. Е. Программно)?
-
28-09-2019 - |
Вопрос
Есть ли способ измерить в настоящее время использовал Размер постоянного поколения (Permgen) в моем приложении Java? Я не могу использовать внешние инструменты профилирования, такие как VisualVM.
Даже лучше будет оценка потребления памяти класса Java в Prengen. Это почти пропорционально размеру файла Bytecode?
Решение
Вы можете использовать MemoryMXBean, который поставляется с JDK. Но я не думаю, что есть способ запросить использование Pruggen из строя приложения. Документы о Memorymxbean.
Другие советы
Вы можете использовать jvisualvm. Инструмент от JDK с Visual GC. Плагин для мониторинга всех областей кучи JVM, включая Premgen.
Если вы не в Windows, вы можете попробовать jmap который поставляется с JDK.
Вы можете использовать jmap
команда:
jmap [опция] (для подключения к запуску процесса)
jmap [Опция] (для подключения к файлу сердечника)
jmap [Option] [Server_id @] (для подключения к удаленному серверу отладки)
где варианты являются одним из:
-Не: печатать резюме кучи Java
-Перемстат: печатать статистику постоянного поколения
Размер Permgen не имеет ничего общего с размером ваших файлов классов. Размер Permgen по умолчанию в соответствии с Солнцем составляет 64 МБ. Если вы хотите увеличить его, вы можете установить его прямо использовать:
-XX:PermSize=164m
в вашей командной строке Java или скрипта запуска. Это также то, как вы можете знать, что он установлен, не полагаясь на внешний инструмент.
РЕДАКТИРОВАТЬ:
Прочитайте эту статью, чтобы определить примерно, сколько Prurgen в настоящее время используется программно (то есть без внешних инструментов):
http://frankkieviet.blogspot.com/2006/10/how-to-fix-dreaded-permgen-space.html.