Java:新一代使用100%,Eden Space使用100%,从空间使用100%



jmap -heap 给了我输出:

新一代使用100%,Eden空间使用100%,从空间使用

100%,到使用空间:0%,烫发一代使用:38%

这是 100% 的新伊甸园、来自太空 - 一个问题吗?

我的 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 正在使用中。

这就是世代集合的工作方式。你有年轻的空间(伊甸园,从,到)和旧空间(任期,烫发)。年轻的空间更小。一旦年轻的空间被填满(你的情况) - 所谓的小GC(年轻的GC)正在发生。

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

想法是拥有更频繁的快速次要 GC 和更少频率的完整 GC。

您可以在本文中阅读更详细的解释

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

jstat -gc

jstat -gcutil

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

一旦你知道什么是泄漏的,你就可以找到什么保存对对象的引用,例如

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

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

最新更新