Java堆内存是连续的吗?

时间:2011-10-18 19:38:17

标签: java jvm heap

我看到有人评论Java堆内存是连续的,人们说相反。那么,有人可以给我一个最终答案并解释这个问题吗?另外,Java堆中是否有某种数据结构,就像Java Stack中那样?

3 个答案:

答案 0 :(得分:11)

JVM spec引用:堆的内存不需要是连续的。所以你的代码不应该假设堆的连续性。

答案 1 :(得分:6)

真正的答案是,你不知道也不应该在意。有不同的JVM,除了规范之外,没有人能做出任何承诺。

答案 2 :(得分:2)

这取决于JVM,但绝对不能保证是连续的。 HotSpot使用世代堆,而IBM JDK和JRockit则不使用。我相信IBM和JRockit垃圾收集进程都使用扫描/压缩算法,这在实践中应该会产生连续的堆。