欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > JVM中常见的垃圾回收器(Garbage Collectors)

JVM中常见的垃圾回收器(Garbage Collectors)

2025/4/8 1:59:24 来源:https://blog.csdn.net/u011144881/article/details/147018139  浏览:    关键词:JVM中常见的垃圾回收器(Garbage Collectors)

JVM中常见的垃圾回收器(Garbage Collectors)的分类和描述:

在这里插入图片描述

一、新生代收集器(Young Generation Collectors)

新生代收集器主要负责收集新创建的对象,这些对象通常存活时间较短。

Serial GC

• 单线程收集器,适用于小型应用或单核处理器。

• 进行垃圾回收时会暂停所有应用线程(Stop-The-World,STW)。

ParNew

• 多线程收集器,是Serial GC的多线程版本。

• 同样在垃圾回收时暂停所有应用线程。

ParallelGC

• 多线程收集器,使用多个线程进行垃圾回收,减少停顿时间。

• 同样在垃圾回收时暂停所有应用线程。

二、老年代收集器(Old Generation Collectors)

老年代收集器主要负责收集长期存活的对象。

CMS(Concurrent Mark-Sweep)

• 以并发方式进行垃圾回收,减少停顿时间。

• 可能产生较多的内存碎片。

Serial Old

• Serial GC的老年代版本,单线程收集器。

• 进行垃圾回收时会暂停所有应用线程。

Parallel Old

• ParallelGC的老年代版本,多线程收集器。

• 进行垃圾回收时会暂停所有应用线程。

三、整堆收集器(Full GC)

整堆收集器负责收集整个Java堆,包括新生代和老年代。

G1 GC

• 目标是减少停顿时间,使用标记-整理(Mark-Compact)算法。

• 进行垃圾回收时会暂停所有应用线程。

ZGC(Z Garbage Collector)

• 低延迟垃圾回收器,使用标记-整理算法。

• 进行垃圾回收时会暂停所有应用线程。

四、其他

Shenandoah GC

• Java 15中引入的实验性GC,目标是在非常短的停顿时间内回收大量垃圾。

• 使用增量式标记-清除算法,尽可能减少停顿时间。

Epsilon GC

• Java 14中引入的实验性GC,目标是在非常短的停顿时间内回收大量垃圾。

• 同样使用增量式标记-清除算法。

选择垃圾回收器时,需要考虑应用的响应时间要求、吞吐量、内存占用等因素。不同的垃圾回收器适用于不同的应用场景和需求。

热搜词