【问题标题】:Heap/ PermGen setting issues in tomcat under eclipseeclipse下tomcat中的Heap/PermGen设置问题
【发布时间】:2013-05-19 10:35:15
【问题描述】:

同事在Eclipse/Tomcat运行参数中有如下设置,一直抱怨堆内存不足:

-XX:PermSize=512M
-XX:MaxPermSize=1024M
-Xmx1024m

如果我理解正确的话,max PermGenmax Heap 都是 1 GB。由于PermGen 是堆的特殊部分,这相当于将所有堆分配给PermGen。这是正确的吗?

根据Perm Space vs Heap Space,我可能是对的。这会导致问题吗?

Is Java PermGen Space Part of Total VM Memory,我的理解不正确。

【问题讨论】:

    标签: java eclipse garbage-collection jvm permgen


    【解决方案1】:

    你是对的。 >512MB 用于 PermGen,

    使用任何 Sun/Oracle JVM 自带的 JVisualVM 连接到正在运行的 eclipse 进程并检查实际情况

    【讨论】:

      【解决方案2】:

      启用 GC 日志记录,一旦 Eclipse 再次崩溃,您会看到问题的原因,日志会显示 PermGen 的大小。

      GC 日志记录:-XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=jvm.log -XX:+HeapDumpOnOutOfMemoryError -Xloggc:gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -showversion

      考虑到 PermGen 是否是堆的一部分,这实际上取决于您正在运行的热点版本。 GC 算法控制 PermGen 的大小,因此即使您设置 MAX=1GB,它也可能永远不会增长到那么大,并且由于某些其他问题您仍然可以得到 OOM。

      【讨论】:

        猜你喜欢
        • 2011-12-23
        • 2011-04-29
        • 1970-01-01
        • 2012-08-18
        • 2011-03-17
        • 2019-06-07
        • 1970-01-01
        • 2017-03-23
        相关资源
        最近更新 更多