使用G1收集器时JVM是否泄漏内存?

时间:2012-06-17 20:28:07

标签: java garbage-collection jvm jvm-hotspot g1gc

使用G1收集器时,是否有人在使用JVM(Hotspot)泄漏内存时遇到问题?

我已经将堆大小修复为60GB(-ms和-ms都设置为60G),但java进程的大小(根据ps命令的vsz列)开始时大约为64GB,但是在7小时内增加到84GB。

使用并行收集器,过程大小在20小时内保持稳定,大约65GB左右。

有没有其他人与G1收藏家有类似的问题?我正在运行一个非常简单的基准测试,而且我没有使用任何直接缓冲内存或其他堆外内存(我知道)。

Java版本是1.7.0,更新5

(我已经向甲骨文提出了一个关于此问题的错误,但我认为如果有人有解决方法,我也会在这里查看。)

1 个答案:

答案 0 :(得分:1)

有没有其他人与G1收藏家有类似的问题?

很快 - 是的。

这是关于导致内存泄漏的主题:

Creating a memory leak with Java

它包含有关 G1

的信息
  

使用InflaterInputStream传递新的java.util.zip.Inflater()   c-tor(例如PNGImageDecoder)而不是调用end()   吹气。好吧,如果你传递c-tor w /只是新的,没有机会......和   是的,在流上调用close()不会关闭inflater(如果是的话)   手动传递为c-tor参数。这不是真正的泄漏,因为它   终结者发布......当它认为有必要时。直到那   那一刻它吃本机内存如此糟糕,它可能导致linux oom_killer   杀死这个过程而不受惩罚。主要问题是最终确定   java非常不可靠,G1在7.0.2之前变得更糟。道德的   故事:尽快发布原生资源,终结者是   太穷了。

泄漏也在这里提到:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7152954