我编写了一个简单的程序,并使用jconsole.exe来监视其堆大小.
public class HeapTest {
public static void main(String[] args) {
while(true) {
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是结果
我不明白为什么堆大小不断增长.我的程序中没有new()任何Object.
我的程序中使用的堆是多少?
我没有向jconsole.exe添加任何其他参数; 只需双击它,然后根据PID加载java进程.
环境:Windows 7下的Java 1.8.0_25
这里不存在内存泄漏。在 OSX 中也复制了它。它将是 VM 正常运行生成的簿记数据,包括 GC 的数据。eden上升,一旦GC发生,堆(eden)使用的内存减少,循环重新开始。
令人困惑的方面是,程序没有显式创建对象,但解释 JVM 会这样做并因此在下一次 GC 之前逐渐增加 eden 空间是有意义的。