首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JVM在eden空间为100%时崩溃

JVM在eden空间为100%时崩溃
EN

Stack Overflow用户
提问于 2012-08-15 13:03:42
回答 2查看 12.5K关注 0票数 2

我有一个生产系统,它的JBoss应用服务器运行在JDK 1.6.0_24,JBoss 4.3上。服务器不时崩溃,JVM创建的转储文件具有一致的结果:

代码语言:javascript
复制
{Heap before GC invocations=6421 (full 4675):
  PSYoungGen      total 521536K, used 518784K [0xdbc00000, 0xfbc00000, 0xfbc00000)
  eden space 518784K, 100% used [0xdbc00000,0xfb6a0000,0xfb6a0000)
  
  from space 2752K, 0% used [0xfb950000,0xfb950000,0xfbc00000)
  to   space 2752K, 0% used [0xfb6a0000,0xfb6a0000,0xfb950000)
    
 PSOldGen        total 1572864K, used 1572855K [0x7bc00000, 0xdbc00000, 0xdbc00000)
  object space 1572864K, 99% used [0x7bc00000,0xdbbfdeb8,0xdbc00000)
 PSPermGen       total 524288K, used 92683K [0x5bc00000, 0x7bc00000, 0x7bc00000)
  object space 524288K, 17% used [0x5bc00000,0x61682c30,0x7bc00000)
81507.318: [Full GC [PSYoungGen: 518784K->518784K(521536K)] [PSOldGen: 1572855K->1572855K(1572864K)] 2091639K->2091639K(2094400K) [PSPermGen: 92683K->92683K(524288K)], 1.5334976 secs] [Times: user=1.53 sys=0.00, real=1.53 secs] 
Heap after GC invocations=6421 (full 4675):
 PSYoungGen      total 521536K, used 518784K [0xdbc00000, 0xfbc00000, 0xfbc00000)
  eden space 518784K, 100% used [0xdbc00000,0xfb6a0000,0xfb6a0000)
  from space 2752K, 0% used [0xfb950000,0xfb950000,0xfbc00000)
  to   space 2752K, 0% used [0xfb6a0000,0xfb6a0000,0xfb950000)
 PSOldGen        total 1572864K, used 1572855K [0x7bc00000, 0xdbc00000, 0xdbc00000)
  object space 1572864K, 99% used [0x7bc00000,0xdbbfdeb8,0xdbc00000)
 PSPermGen       total 524288K, used 92683K [0x5bc00000, 0x7bc00000, 0x7bc00000)
  object space 524288K, 17% used [0x5bc00000,0x61682c30,0x7bc00000)
}

对于JAVA_OPTS,我们有:

-server -Xms2048m -Xmx2048m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Dsun.lang.ClassLoader.allowArraySyntax=true -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m -verbosegc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+CMSPermGenSweepingEnabled -XX:-跟踪类加载 -XX:-TraceClassUnloading

因此,在我看来,2GB就足够了,而且可以使用更多的内存,所以应该不会有任何问题。

有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2012-08-15 16:23:05

你的记忆用完了。将堆大小设置为2G,年轻一代为500米,老代为1500米,填充它可以使用的最大2G (幸存者空间为空但低,它们可能太低,无法从伊甸园空间获取任何物体。)

您应该尝试增加最大堆大小,如果仍然存在问题,则需要监视您的内存使用情况,以检查在内存使用率已经很高的情况下是否有任何泄漏或请求过多新对象的进程。

票数 2
EN

Stack Overflow用户

发布于 2012-08-15 20:09:49

增加您的Xmx值。对于伊甸园空间物体来说,没有任何地方可以将OldGen以100%的速度泄漏到其中。

考虑使用类似于JConsole的方法来附加到违规应用程序的PID,并监视JVM内存的使用情况。这将有助于确定某些与JBoss的交互是否导致堆崩溃,或者是否是内存缓慢泄漏。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11969793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档