我怀疑我的应用程序存在内存泄漏。我有GC日志,当我查看它们时,我发现内存使用量约为9-10 GC。然后我尝试将内存转储到该文件,文件大小约为5 5GB。
问题是为什么转储的大小不是9 5GB,而是5 5GB?如何强制jrcmd转储全部内存?
我使用的命令:
jrcmd 11906 hprofdump filename=/path_to_dump/dump.hprofJVM:
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日志,内存永远不会释放到低于9 9GB的级别。JDK工具将转储截断到5 5GB。为什么?
发布于 2014-11-24 23:04:27
我假设JRockit的行为类似于HotSpot:如果您的实时数据集只有5 GB,那么转储也只有5 GB。我假设你的9-10中只有5 GB是实时的。
发布于 2014-11-25 18:38:51
您的GC日志是什么样子的?
顺便说一句,你有没有试过JRockit任务控制工具Memleak?它对于查找内存泄漏非常有用。
https://stackoverflow.com/questions/27107603
复制相似问题