gpt4 book ai didi

java - 使用G1收集器时JVM泄漏内存?

转载 作者:太空宇宙 更新时间:2023-11-04 08:11:46 27 4
gpt4 key购买 nike

有人在使用 G1 收集器时遇到过 JVM(热点)内存泄漏问题吗?

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

使用并行收集器,进程大小在 20 小时的运行中保持稳定,约为 65GB 左右。

还有其他人在使用 G1 收集器时遇到过类似问题吗?我正在运行一个非常简单的基准测试,并且没有使用任何直接缓冲内存或其他堆外内存(据我所知)。

Java版本为1.7.0,更新5

(我已经向 Oracle 提出了一个关于此问题的错误,但我想我也应该在这里检查一下,以防有人有解决方法)。

最佳答案

还有其他人在使用 G1 收集器时遇到过类似问题吗?

很快 - 是的。

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

Creating a memory leak with Java

它包含有关G1的信息

Using InflaterInputStream passing new java.util.zip.Inflater() in the c-tor (PNGImageDecoder for instance) and not calling end() of the inflater. Well, if you pass in the c-tor w/ just new, no chance... and yes calling close() on the stream does not close the inflater if it's manually passed as c-tor parameter. This is not a true leak since it'd be released by the finalizer... when it deems it necessary. Till that moment it eats native memory so badly it can cause linux oom_killer to kill the process with impunity. The main issue is that finalization in java is very unreliable and G1 made it worse till 7.0.2. Moral of the story: release native resources as soon as you can, the finalizer is just too poor.

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

关于java - 使用G1收集器时JVM泄漏内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11074540/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com