如何在JVM中查看MaxPermSize?

时间:2011-03-03 04:45:34

标签: java grails jvm permgen

在TomCat上部署Web应用程序时,我遇到了可怕的PermGen:Out of memory错误。我已经尝试了许多可能的解决方案,但它们没有成功(有时它可以工作,通常它没有)。我想知道“BuildConfig.groovy”中的配置是否生效:

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

有人知道查看JVM实际应用的MaxPermSize吗?

3 个答案:

答案 0 :(得分:3)

您可以在JDK / bin目录中使用JVisualVM来监控有关Java进程的所有内容。

答案 1 :(得分:3)

直接回答你的问题,java.lang.management.ManagementFactory有方法来获取java使用的所有内存池的信息,包括PermGen空间和其他非堆内存池:

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

for (MemoryPoolMXBean bean : memoryPoolMXBeans) {
    //Iterate over pools here
}

答案 2 :(得分:1)

我相信jsdk中有几个实用程序 - 尝试jstat -gcpermcapacity。另一个有时可能有用的技巧是ps -fwwwC java(假设你在linux机器上运行它)