JVM的各种垃圾回收器(GC)

1. Serial GC

   Serial GC 是用于单线程环境的垃圾回收器,它使用复制算法(Copy)进行年轻代的垃圾回收,而老年代则使用标记-整理(Mark-Compact)算法。由于它在进行垃圾回收时会暂停其他所有的工作线程(Stop-The-World),因此它不适合多核处理器或者要求高吞吐量的应用。

2. Parallel GC

   Parallel GC(也称为Throughput Collector)是一个并行的垃圾回收器,它在年轻代使用复制算法,在老年代使用标记-整理算法。Parallel GC的目标是增加应用程序的吞吐量。它可以在垃圾回收时使用多个线程,但是在垃圾回收执行期间同样会出现应用线程暂停。

3. CMS GC (Concurrent Mark Sweep)

   CMS GC是为了获取更短暂停时间而设计的。它主要用于老年代,并且使用标记-清除(Mark-Sweep)算法。CMS的设计目标是避免在垃圾回收时长时间的停顿。它包括几个阶段,其中大部分阶段都可以与应用线程并发执行。

4. G1 GC (Garbage-First)

    G1 GC是一种旨在替代CMS GC的服务器端垃圾回收器,它适用于拥有大内存的多核服务器。G1 GC通过将堆划分为多个区域(Region)并并行地进行垃圾回收来减少垃圾回收的暂停时间。G1的目标是提供高吞吐量同时也保证较低的暂停时间。

5. ZGC (Z Garbage Collector)

   ZGC是一种可伸缩的低延迟垃圾回收器,它主要针对大堆内存的系统,并且能够处理数TB级别的堆内存。ZGC几乎可以消除所有的暂停时间,即使是在垃圾回收时也能保持应用程序的运行。

6. Shenandoah GC

    Shenandoah GC是另一种低暂停时间的垃圾回收器,它与ZGC类似,旨在减少暂停时间,而不是提高吞吐量。Shenandoah实现了一种先进的并发标记和并发压缩算法,可以在应用线程运行时处理堆内存,从而极大地减少了停顿时间。

7. Epsilon GC (No-Op Garbage Collector)

    Epsilon GC是一个实验性的垃圾回收器,它基本上不执行任何垃圾回收操作。它被称为"No-Op(无操作)"垃圾回收器,主要用于性能测试,或者在完全管理堆内存分配和回收的特定应用程序中使用。

相关推荐

  1. JVM各种垃圾回收(GC)

    2024-03-10 22:12:03       23 阅读
  2. JVM-GC-G1垃圾回收

    2024-03-10 22:12:03       8 阅读
  3. jvm垃圾回收

    2024-03-10 22:12:03       43 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-10 22:12:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-10 22:12:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-10 22:12:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-10 22:12:03       20 阅读

热门阅读

  1. npm镜像源地址

    2024-03-10 22:12:03       22 阅读
  2. 研发笔记——localstorage实现tabel表格表头自定义

    2024-03-10 22:12:03       19 阅读
  3. 【蓝桥杯】节省时间

    2024-03-10 22:12:03       15 阅读
  4. 网络层转发分组的过程

    2024-03-10 22:12:03       21 阅读
  5. 应用安装

    2024-03-10 22:12:03       18 阅读
  6. http cookie,tcp syncookie 和 tcp fastopen 杂谈

    2024-03-10 22:12:03       24 阅读
  7. Ruby CanCanCan 动态定义方法

    2024-03-10 22:12:03       21 阅读
  8. 如何系统的去学c#

    2024-03-10 22:12:03       19 阅读
  9. 【Demo】游戏小地图

    2024-03-10 22:12:03       21 阅读