2014-11-24 86 views
0

我怀疑我的应用程序有内存泄漏。我有GC日志,当我看到它们时,我发现内存使用量约为9-10GB。然后我尝试将内存转储到该文件,文件大小约为5GB。JRockit的完全内存转储

的问题是,为什么转储没有大小了9GB,但只有5GB?我如何强制jrcmd转储完整内存?

命令,我使用:

jrcmd 11906 hprofdump filename=/path_to_dump/dump.hprof 

JVM:

Java(TM) Platform, Standard Edition for Business (build 1.5.0_28-b04) 
Oracle JRockit(R) (build R28.1.3-11-141760-1.5.0_28-20110301-1432-linux-x86_64, compiled mode) 

更新:

的问题是,由于GC日志内存空间还没有释放出来,以水平低于9GB 。将JDK工具截断转储为5GB。为什么?

回答

0

我认为JRockit的行为类似于热点:如果你的实时数据集只有5 GB则转储也只有5 GB。我假设你的9-10只有5 GB是活的。

+0

但由于GC登录我的记忆永远不会被释放低于9GB。为什么这些垃圾没有被GC释放,但被工具忽略了? – lbednaszynski 2014-11-24 15:08:38

+0

这些完整的GC还是增量GC?预计增量GC不能清除所有垃圾? – 2014-11-25 14:14:19

0

什么是您的GC日志是什么样子?

顺便说一句,你有没有试过被称为Memleak参考JRockit Mission控制工具?它可以用于查找内存泄漏。