【发布时间】:2011-09-12 18:41:45
【问题描述】:
我正在从 Ant 或 Eclipse 运行 JUnit 测试套件。 PermGen 限制为 200 MB,堆限制为 1000 MB。
Java VisualVM 报告将 PermGen 分配为 200 MB,将堆分配为 350 MB。那是 550 MB。
但是,此进程的总虚拟集大小为 2.5 GB,驻留集大小为 1.8 GB。我知道应该有一些开销,但是如果 PermGen 和堆是 0.5 GB 并且进程使用 1.8 GB,那么缺少的 1.3 GB 在哪里?如何诊断和修复它?
【问题讨论】:
-
你使用任何原生库吗?它们的本机内存分配不会显示在 VisualVM 中。另外,没有 VisualVM 的进程大小是否相同?
-
除了来自 Sun 的标准 JVM 之外,没有本地库。没有 VisualVM 也一样。
-
@Konrad 你在使用任何内存分析工具来查看吗?
-
Ubuntu Linux,来自 Sun 的 Java 6。
标签: java memory memory-leaks