【发布时间】:2013-05-30 16:24:16
【问题描述】:
我正在就 Java 中的垃圾收集以及所使用的不同算法等进行一个基本的演讲。我的 GC 经验仅限于 Hotspot JVM。
我只是想知道周围是否有任何 JVM 不使用分代收集概念(即 Young、Old)?以防万一有人问我这个问题!
谢谢。
【问题讨论】:
标签: java garbage-collection jvm jvm-hotspot
我正在就 Java 中的垃圾收集以及所使用的不同算法等进行一个基本的演讲。我的 GC 经验仅限于 Hotspot JVM。
我只是想知道周围是否有任何 JVM 不使用分代收集概念(即 Young、Old)?以防万一有人问我这个问题!
谢谢。
【问题讨论】:
标签: java garbage-collection jvm jvm-hotspot
有很多 JVM 实现(见this page 有一个想法)。所以是的,其中一些可能不是基于Weak Generational Hypothesis。例如,JamaicaVM(用于嵌入式系统的硬实时 Java VM)等 JVM 可以做出其他假设,因为它们的目标应用程序与 Oracle JVM 不同。
但是,最常用的实现(Oracle JVM、IBM J9 和 Azul Zing)都是基于它的。
请注意,在 G1 GC 中,Oracle JVM 添加了一种新类型的集合:分代和区域集合
希望有帮助!
【讨论】:
Java 1.0 和 1.1 使用了标记清除收集器。
参考:http://en.wikipedia.org/wiki/Java_performance#Garbage_collection
我也明白现代 JVM 在极端情况下会退回到标记-扫描-紧凑型收集器;例如当您配置了 CMS 并且它跟不上时。
【讨论】:
在 Java 7 之前,IBM JVM 默认使用 mark-sweep-compact 的变体(-Xgcpolicy:throughput 和 -Xgcpolicy:optavgpause)。请参阅:description of policies。
【讨论】: