在 TomCat 上部署 Web 应用程序时,我遇到了可怕的PermGen:Out of memory错误。我尝试了许多可能的解决方案,但都没有成功(有时有效,通常无效)。我想知道我在“BuildConfig.groovy”中的配置是否生效:
grails.tomcat.jvmArgs = ["-Xmx1024m", "-XX:MaxPermSize=1024m"]
有谁知道以某种方式查看JVM实际应用的MaxPermSize?
在 TomCat 上部署 Web 应用程序时,我遇到了可怕的PermGen:Out of memory错误。我尝试了许多可能的解决方案,但都没有成功(有时有效,通常无效)。我想知道我在“BuildConfig.groovy”中的配置是否生效:
grails.tomcat.jvmArgs = ["-Xmx1024m", "-XX:MaxPermSize=1024m"]
有谁知道以某种方式查看JVM实际应用的MaxPermSize?
在直接回答您的问题时,java.lang.management.ManagementFactory 具有获取有关 java 使用的所有内存池的信息的方法,包括 PermGen 空间和其他非堆内存池:
List<MemoryPoolMXBean> memoryPoolMXBeans = java.lang.management.ManagementFactory.getMemoryPoolMXBeans();
for (MemoryPoolMXBean bean : memoryPoolMXBeans) {
//Iterate over pools here
}
您可以使用 JDK/bin 目录中的JVisualVM来监视有关 java 进程的所有内容。
我相信 jsdk 中有几个实用程序 - 试试 jstat -gcpermcapacity。有时可能有用的另一个技巧是 ps -fwwwC java (假设您在 linux 机器上运行它)