1

我正在就 Java 中的垃圾收集以及使用的不同算法等进行基本的讨论。我对 GC 的体验只涉及 Hotspot JVM。

我只是想知道周围是否有任何 JVM 不使用分代收集概念(即年轻、老)?以防有人问我这个问题!

谢谢。

4

3 回答 3

2

有很多 JVM 实现(请参阅此页面以了解想法)。所以是的,其中一些可能不是基于弱代际假设。例如,JamaicaVM(嵌入式系统的硬实时 Java VM)等 JVM 可以做出其他假设,因为它们的目标应用程序与 Oracle JVM 不同。

然而,最常用的实现(Oracle JVM、IBM J9 和 Azul Zing)都是基于它的。

请注意,使用 G1 GC,Oracle JVM 添加了一种新类型的集合:分代和区域集合

希望有帮助!

于 2013-05-31T16:32:02.090 回答
1

Java 1.0 和 1.1 使用了标记清除收集器。

参考:http ://en.wikipedia.org/wiki/Java_performance#Garbage_collection

我也明白现代 JVM 在极端情况下会退回到标记-扫描-紧凑型收集器;例如,当您配置了 CMS 并且它跟不上时。

于 2013-05-30T16:30:04.023 回答
1

在 Java 7 之前,IBM JVM 默认使用 mark-sweep-compact 的变体(-Xgcpolicy:throughput 和 -Xgcpolicy:optavgpause)。请参阅:策略描述

于 2013-05-30T17:18:43.587 回答