因此 JVM 执行两种类型的垃圾收集过程:Minor GC 和 Major GC。并且有不同类型的垃圾收集器:串行、并行、CMS、G1C 等。这些垃圾收集器根据它们实现的不同算法执行不同的垃圾收集过程。
根据 CMS 的 Oracle 文档,
Minor collections can interleave with an ongoing major cycle, and are done in a manner similar to the parallel collector (in particular, the application threads are stopped during minor collections).
这是不是意味着所有的Garbage collectors都只表征和控制Major GC?换句话说,无论选择哪种垃圾收集器,Minor GC 的行为是否相同?
最佳答案
Collectors是JVMs的实现细节,以下仅涵盖Oracle/OpenJDK Hotspot:
最近的收集器,如 G1、ZGC、Shenandoah 高度集成,其中所有 GC 周期(主要/次要在这里过于简单化)都由特定于该收集器的代码管理。
另一方面,一些较旧的收集器更加模块化,允许您在某种程度上混合搭配。 Jon Masamitsu 的博文 Our Collectors概述了 G1 之前的收集器。 请注意,其中一些已在 jdk8 和 removed in jdk9 中弃用。
关于java - Java 垃圾收集器是否特定于 Major GC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57736177/