我写了一个简单的程序并使用 jconsole.exe 来监控它的堆大小。
public class HeapTest {
public static void main(String[] args) {
while(true) {
}
}
}
这是结果
我不明白为什么堆大小不断增长。我的程序中没有 new() 任何对象。
堆在我的程序中有什么用?
我没有向 jconsole.exe 添加任何额外的参数;双击它,然后根据PID加载java进程。
环境:windows 7下Java 1.8.0_25
最佳答案
这里没有内存泄漏。也在 OSX 中复制了它。这将是 VM 正常运行时生成的簿记数据,包括 GC 的数据。 eden 上升,一旦 GC 发生,堆(eden)使用的内存减少,重新开始循环。
令人困惑的方面是程序没有显式创建对象,但解释 JVM 将这样做是有意义的,因此伊甸园空间逐渐增加直到下一次 GC。
关于java - 为什么 JVM 堆不断增长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28689203/