1

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

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

有谁知道以某种方式查看JVM实际应用的MaxPermSize?

4

3 回答 3

4

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

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

for (MemoryPoolMXBean bean : memoryPoolMXBeans) {
    //Iterate over pools here
}
于 2011-06-09T10:00:21.360 回答
3

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

于 2011-03-03T06:25:09.457 回答
1

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

于 2011-03-03T04:55:19.510 回答