【发布时间】:2011-12-10 09:24:21
【问题描述】:
我看到人们评论 Java 堆内存是连续的,而人们却说相反。那么,有人可以给我一个最终的答案并解释这个问题吗?另外,Java Heap 中是否有某种数据结构,就像 Java Stack 中一样?
【问题讨论】:
标签: java jvm heap-memory
我看到人们评论 Java 堆内存是连续的,而人们却说相反。那么,有人可以给我一个最终的答案并解释这个问题吗?另外,Java Heap 中是否有某种数据结构,就像 Java Stack 中一样?
【问题讨论】:
标签: java jvm heap-memory
引用JVM spec:堆的内存不需要是连续的。所以你的代码不应该对堆的连续性做出假设。
【讨论】:
真正的答案是,你不知道也不应该关心。有不同的 JVM,除了规范没有人承诺任何事情。
【讨论】:
它取决于 JVM,但绝对不能保证是连续的。 HotSpot 使用分代堆,而 IBM JDK 和 JRockit 不使用。我相信 IBM 和 JRockit 垃圾收集过程都使用了扫描/压缩算法,这在实践中应该会产生一个连续的堆。
【讨论】: