我正在基本讨论Java中的垃圾收集,以及使用的不同算法等。我对GC的体验只适用于Hotspot JVM。
我只是想知道周围是否有任何JVM不使用世代集合概念(即Young,Old)?以防万一有人问我这个问题!
感谢。
答案 0 :(得分:3)
有很多JVM实现(请参阅this page以获得一个想法)。所以是的,有些可能不是基于Weak Generational Hypothesis。例如,诸如JamaicaVM(用于嵌入式系统的硬实时Java VM)之类的JVM可以做出其他假设,因为它们不是针对与Oracle JVM相同的应用程序。
但是,最常用的实现(Oracle JVM,IBM J9和Azul Zing)都基于它。
请注意,使用G1 GC,Oracle JVM添加了一种新类型的集合:代际和区域集合
希望有所帮助!
答案 1 :(得分:1)
Java 1.0和1.1使用了标记扫描收集器。
参考:http://en.wikipedia.org/wiki/Java_performance#Garbage_collection
我也理解现代JVM在极端情况下会回落到标记扫描紧凑的收集器;例如当您配置了CMS并且无法跟上时。
答案 2 :(得分:1)
IBM JVM默认使用mark-sweep-compact变体(-Xgcpolicy:throughput和-Xgcpolicy:optavgpause)直到Java 7.请参阅:description of policies。