稳定的 JVM 但系统内存增加

Stable JVM but system memory increase

我是 运行 java 在 Ubuntu 16.04 服务器上的应用程序。经过大量调查后,我发现 JVM 堆大小或多或少是恒定的。无论如何,没有内存增加。

然而,当我查看使用 htop 的服务器时,服务器的内存消耗以惊人的速度增长。我不确定到底是什么原因造成的,但它 100% 源自 java 过程。

我查看了 hprof 文件,但我真的不知道我在找什么。

我是运行两个可能负责的库,但我对他们不是很熟悉;

我不确定这两者是否会导致 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) 一起使用。