【发布时间】:2012-01-11 19:28:28
【问题描述】:
我正在探索 Java 中的内存使用情况,以了解为什么我的程序会泄漏内存。在我的主 while 循环中剥离代码后,随着时间的推移,我的内存使用量仍然会增加。思考一个空程序的内存使用情况:
class Nothing
{ public static void main(String[] args)
{ while(true); }
}
我还是看到了内存的增加:
所以我的问题是:为什么还有锯齿图案?为什么 GC 运行时没有保存所有内存(每次 gc 运行(山谷)使用的内存增加 10-20Kb(与之前的山谷相比))?
编辑:
java 版本“1.6.0_29”
Java(TM) SE 运行时环境(内部版本 1.6.0_29-b11)
Java HotSpot(TM) 客户端虚拟机(build 20.4-b02,混合模式,共享)
操作系统:Windows 7 Enterprise-32 位
【问题讨论】:
-
我没有看到增加。内存上升,然后收集下来。看起来使用的最大内存随着时间的推移是恒定的。
-
另一个尝试在应用程序中查找内存泄漏的工具是Plumbr。它应该比与分析器搏斗并试图从所有这些信息中推断出一些东西要容易得多。
标签: java memory-leaks while-loop