【发布时间】:2019-06-03 18:13:29
【问题描述】:
我正在使用内存不足并导致 JVM 崩溃的主机上的 Java 应用程序。
JVM 为 8。例如,我在 16gb 主机(运行 Linux)上将 Xms 和 Xmx 设置为 10240m。随着时间的推移,我会监控 JVM 堆(例如,使用 JMX 或 java 代理)并且使用情况保持一致并在范围内。 GC 定期运行并清理,没有一个内存空间随时间呈上升趋势。
但在主机操作系统上,我监控内存使用情况 - 通过 ps - vsize 和 size 参数保持一致,但 pmem 会随着时间的推移而增加(我认为 rss 也是如此,但才刚刚开始监控它)。 pmem 使用率达到 99%,然后 jvm 分配内存失败并退出。我怀疑rss 会随着时间的推移而增加(它已经开始朝那个方向发展了)。
这是否表明 JVM 正在运行的 Java 应用程序中存在内存泄漏?我假设 JVM 本身不太可能有内存泄漏。在-javaagent 运行的代理被广泛使用,所以也不认为是这样。这是一个很好的猜测吗?如果它是基于应用程序的内存泄漏,什么样的东西可能会泄漏,或者什么是找到它的好方法?像 JMX 这样的东西似乎并没有提供任何东西,它看起来像是分配在 JVM 不知道的内存中的东西。
谢谢。
【问题讨论】:
标签: java memory-leaks