Java:新一代使用100%,伊甸园空间使用100%,使用空间100%

时间:2012-06-28 13:12:17

标签: java memory garbage-collection heap jmap

jmap -heap为我提供了输出:

新一代使用100%,伊甸园空间使用100%,使用空间100%,使用空间:0%,使用的烫发一代:38%

100%的New,Eden,From space - 这是一个问题吗?

我的JAVA OPTS是: -Xms10240m -Xmx14336m -XX:PermSize = 192m -XX:MaxPermSize = 256m -XX:NewSize = 8192m -XX:MaxNewSize = 8192m -XX:-DisableExplicitGC -XX:+ UseConcMarkSweepGC - XX:CMSInitiatingOccupancyFraction = 60

我看到很多快速的垃圾收集。但是使用像JConsole这样的工具没有内存泄漏

内存使用情况可以在这里看到: http://tinypic.com/view.php?pic=wo213&s=6

正在使用JDK 1.6。

3 个答案:

答案 0 :(得分:5)

这就是世代收藏的运作方式。 你有年轻的空间(伊甸园,从,到)和旧空间(任期,烫发)。年轻的空间更小。一旦年轻的空间充满(你的情况) - 正在发生一种叫做小GC(年轻的GC)的事情。

但是小GC应该很快。一旦旧的空间已满,就会发生GC(这更耗时)。

想法是让更频繁的快速小型GC和更少频繁的完整GC。

您可以在此article

中阅读更详细的说明

答案 1 :(得分:2)

我发现以下两个命令非常有用

jstat -gc

jstat -gcutil

答案 2 :(得分:-1)

也可以谨慎检查内存泄漏。使用visualVM或其他工具(例如Eckipse内存分析器)并将其附加到进程。

一旦你知道什么是泄漏,你就可以找到持有对象引用的内容,例如

jmap -dump:live,file=heap.dump.out,format=b <pid>

jhat heap.dump.out

另外,只是想知道,这是什么JVM版本,你为GC等传递的参数。