java - Java 垃圾收集器是否特定于 Major GC?

标签 java garbage-collection

因此 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/

相关文章:

java - 静态场和网络游戏

java - Android 一个用于多个按钮的 OnClick 方法?

java - j2ee应用程序中涉及循环引用和数组的内存泄漏

c# - 为什么 GC 在我引用它时收集我的对象?

Java 8 如何确保我们的代码检查完整的证书链?

java - 访问 .class 文件中的符号表

java - java在 objective-c 中的并发hashmap的等价物

java - Java 的垃圾收集器会中断一个线程吗?

c++ - 适当破坏某些类(class)成员

java - ReferenceQueue 中的 WeakReference 是否会自动从队列中删除?