稳定的 JVM 但系统内存增加
Stable JVM but system memory increase
我是 运行 java 在 Ubuntu 16.04 服务器上的应用程序。经过大量调查后,我发现 JVM 堆大小或多或少是恒定的。无论如何,没有内存增加。
然而,当我查看使用 htop
的服务器时,服务器的内存消耗以惊人的速度增长。我不确定到底是什么原因造成的,但它 100% 源自 java 过程。
我查看了 hprof
文件,但我真的不知道我在找什么。
我是运行两个可能负责的库,但我对他们不是很熟悉;
- OrientDB (plocal)
- Hazelcast
我不确定这两者是否会导致 JVM 外的内存增加。
任何关于帮助确定问题的最佳计划的建议都会很棒。
感谢@the8472、@davmac @qwwdfsad 和@andrey-lomakin 的评论。我很欣赏问题中提供的细节,但我试图避免提供可能导致整只兔子倒下的不相关数据。
我系统地测试了每个建议,结果发现问题出在OrientDB。我不能说 100% 以下哪个解决了问题(可能两者都解决了)。根据@andrey-lomakin 的建议,我从 2.1.19
升级到 2.2-rc1
。在执行此操作时,应用程序 批量插入 开始抛出异常,因此我将它们全部转换为单个线性查询。一旦竞争,内存泄漏就消失了。
作为旁注,以防它在测试 direct IO leak 时影响其他人 我确实惊讶地发现 -Djdk.nio.maxCachedBufferSize=...
可以与 Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
一起使用。
我是 运行 java 在 Ubuntu 16.04 服务器上的应用程序。经过大量调查后,我发现 JVM 堆大小或多或少是恒定的。无论如何,没有内存增加。
然而,当我查看使用 htop
的服务器时,服务器的内存消耗以惊人的速度增长。我不确定到底是什么原因造成的,但它 100% 源自 java 过程。
我查看了 hprof
文件,但我真的不知道我在找什么。
我是运行两个可能负责的库,但我对他们不是很熟悉;
- OrientDB (plocal)
- Hazelcast
我不确定这两者是否会导致 JVM 外的内存增加。
任何关于帮助确定问题的最佳计划的建议都会很棒。
感谢@the8472、@davmac @qwwdfsad 和@andrey-lomakin 的评论。我很欣赏问题中提供的细节,但我试图避免提供可能导致整只兔子倒下的不相关数据。
我系统地测试了每个建议,结果发现问题出在OrientDB。我不能说 100% 以下哪个解决了问题(可能两者都解决了)。根据@andrey-lomakin 的建议,我从 2.1.19
升级到 2.2-rc1
。在执行此操作时,应用程序 批量插入 开始抛出异常,因此我将它们全部转换为单个线性查询。一旦竞争,内存泄漏就消失了。
作为旁注,以防它在测试 direct IO leak 时影响其他人 我确实惊讶地发现 -Djdk.nio.maxCachedBufferSize=...
可以与 Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
一起使用。