【问题标题】:Java memory usage breakdown - native library (DLL) usageJava 内存使用细目 - 本机库 (DLL) 使用
【发布时间】:2021-07-22 13:47:21
【问题描述】:
我的 Java 程序占用了大约 3GB 的大量内存,我设置了 xmx300MB。此外,不同的工具会报告不同的内存使用情况。
jcmd:576MB
任务管理器:967MB
资源监视器:3478MB
当我关闭程序时,任务管理器显示内存使用量下降了大约 3GB。我的问题是如何查看正在使用此内存的内容?由于我看到 jcmd 的输出,它似乎不是 java。我怀疑它可能是我的 Java 程序正在使用的 DLL。有什么工具可以在这里使用吗?
【问题讨论】:
标签:
java
memory
memory-leaks
【解决方案1】:
这是toolset and instructions。
您可以首先通过使用-XX:NativeMemoryTracking=summary(或detail)启用本机内存跟踪来确认您怀疑它是 DLL,然后使用jcmd VM.native_memory 重新检查以验证它不是 Java 进行本机内存分配。
如果您在 Native Memory Tracking 部分下没有看到明显的大块,那么您将离开 Java 领域并且必须尝试“来自 JVM 外部的本机内存泄漏”中列出的工具(jemalloc、valgrind、净化等)。