Как я могу просмотреть MaxPermSize в JVM? - PullRequest
1 голос
/ 03 марта 2011

Я встречаюсь с ужасной PermGen: Недостаточно памяти Ошибка при развертывании веб-приложения на TomCat.Я перепробовал много возможных решений, но они не работают (иногда это работает, обычно это не так).Интересно, вступит ли в силу мой конфиг в "BuildConfig.groovy":

grails.tomcat.jvmArgs = ["-Xmx1024m", "-XX:MaxPermSize=1024m"]

Кто-нибудь знает, как посмотреть MaxPermSize, фактически примененный JVM?

Ответы [ 3 ]

3 голосов
/ 03 марта 2011

Вы можете использовать JVisualVM в каталоге JDK / bin, чтобы отслеживать все, что связано с процессом Java.

3 голосов
/ 09 июня 2011

В прямом ответе на ваш вопрос java.lang.management.ManagementFactory имеет метод для получения информации обо всех пулах памяти, используемых java, включая пространство PermGen и другие пулы памяти без кучи:

List<MemoryPoolMXBean> memoryPoolMXBeans = java.lang.management.ManagementFactory.getMemoryPoolMXBeans();

for (MemoryPoolMXBean bean : memoryPoolMXBeans) {
    //Iterate over pools here
}
1 голос
/ 03 марта 2011

В jsdk есть пара утилит, в которые я верю - попробуйте jstat -gcpermcapacity. Другой прием, который иногда может быть полезен, это ps -fwwwC java (при условии, что вы запускаете это на Linux-коробке)

...