当前位置: 首页 > 产品中心 > 分选机
分选机

有哪几种垃圾回收器各自的优缺点是什么?

来源:BBAPP体育官网下载    发布时间:2025-04-01 01:17:06

产品介绍

  Serial:单线程的收集器,收集垃圾时,必须stop the world,使用复制算法。它的最大特点是在进行垃圾回收时,需要对所有正在执行的线程暂停(stop the world),对于有些应用是难以接受的,但是如果应用的实时性要求不那么高,只要停顿的时间控制在N毫秒之内,大多数应用还是能接受的,是client级别的默认GC方式。

  Parallel Scavenge:新生代收集器,复制算法的收集器,并发的多线程收集器,目标是达到一个可控的吞吐量,和ParNew的最大区别是GC自动调节策略;虚拟机会根据系统的运作时的状态收集性能监控信息,动态设置这些参数,以提供最优停顿时间和最高的吞吐量;

  Serial Old:Serial收集器的老年代版本,单线程收集器,使用标记整理算法。

  CMS:是一种以获得最短回收停顿时间为目标的收集器,标记清除算法,运作过程:初始标记,并发标记,重新标记,并发清除,收集结束会产生大量空间碎片;

  G1:标记整理算法实现,运作流程最重要的包含以下:初始标记,并发标记,最终标记,筛选回收。不会产生空间碎片,可以精确地控制停顿;G1将整个堆分为大小相等的多个Region(区域),G1跟踪每个区域的垃圾大小,在后台维护一个优先级列表,每次根据允许的收集时间,优先回收价值最大的区域,已达到在有限时间内获取尽可能高的回收效率;

  CMS(Concurrent Mark Sweep,并发标记清除) 收集器是以获取最短回收停顿时间为目标的收集器(追求低停顿),它在垃圾收集时使得用户线程和 GC 线程并发执行,因此在垃圾收集过程中用户也不会感到明显的卡顿。

  从名字就不难得知,CMS是基于“标记-清除”算法实现的。CMS 回收过程分为以下四步:

  初始标记 (CMS initial mark):主要是标记 GC Root 开始的下级(注:仅下一级)对象,这样的一个过程会 STW,但是跟 GC Root 直接关联的下级对象不会很多,因此这样的一个过程其实很快。

  并发标记 (CMS concurrent mark):根据上一步的结果,继续向下标识所有关联的对象,直到这条链上的最尽头。这样的一个过程是多线程的,虽然耗时理论上会比较长,但是其它工作线程并不会阻塞,没有 STW。

  重新标记(CMS remark):顾名思义,就是要再标记一次。为啥还要再标记一次?因为第 2 步并没有阻塞其它工作线程,其它线程在标识过程中,很有一定的概率会产生新的垃圾。

  并发清除(CMS concurrent sweep):清除阶段是清理删除掉标记阶段判断的已经死亡的对象,由于不需要移动存活对象,所以此阶段也是可以与用户线程同时并发进行的。

豫ICP备18000688号-1 网站地图