在TomCat上部署Web应用程序时,我遇到了可怕的PermGen:Out of memory错误。我已经尝试了许多可能的解决方案,但它们没有成功(有时它可以工作,通常它没有)。我想知道“BuildConfig.groovy”中的配置是否生效:
grails.tomcat.jvmArgs = ["-Xmx1024m", "-XX:MaxPermSize=1024m"]
有人知道查看JVM实际应用的MaxPermSize吗?
答案 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机器上运行它)