ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JVM九种垃圾收集器简单整理比较

2020-12-03 16:05:49  阅读:178  来源: 互联网

标签:标记 收集器 并发 算法 垃圾 JVM 九种 内存


  1. Serial:最早的垃圾收集器,新生代,单线程,使用标记-复制算法
  2. SerialOld :最早的垃圾收集器,老年代,单线程,使用标记-整理算法
  3. parNew : Serial的升级版,新生代,多线程,使用标记-复制算法,目前依然是不少Hot Spot虚拟机服务端的首选收集器,因为只有它能与CMS配合工作
  4. Parallel Scavenge :新生代,标记-复制算法,多线程,被称为“吞吐量优先收集器”(吞吐量 = 运行用户代码时间 / (运行用户代码时间 + 运行垃圾手机时间)),可以根据系统运行情况自适应调节Eden区和Survivor区的大小比例。
  5. Parallel Old :老年代,标记-整理算法,多线程,与Parallel Scavenge配合使用,适用于注重吞吐量或处理器资源较为稀缺的场合。
  6. CMS:以获取最短停顿时间为目标,老年代,基于标记-清除算法,有四个阶段:初始标记(STW,耗时最短),并发标记(并发,耗时较长),重新标记(STW,耗时略短),并发清除(并发耗时较长)。缺点:对处理器资源敏感,产生浮动垃圾,空间碎片。
  7. G1:全堆。将堆划分为多个大小固定的独立区域(region),并跟踪这些区域的垃圾堆积程度,在后台维护一个优先级列表,每次根据允许的收集时间,优先回收垃圾最多的区域(Garbage First)。有一类“大对象堆”,保存大小超过rigion一半的大对象。整体上基于“标记-整理”,局部又是基于“标记-复制”,不产生内存碎片,停顿时间可控,但内存消耗较大。
  8. Shenandoah:仅在OpenJDK中支持,使用连接矩阵代替了G1的记忆集。
  9. ZGC:以低延迟为首要目标的一款垃圾收集器。它是基于动态Region内存布局,(暂时)不设年龄分代,使用了读屏障、染色指针和内存多重映射等技术来实现可并发的标记-整理算法的收集器。在JDK 11新加入,还在实验阶段,主要特点是:回收TB级内存(最大4T),停顿时间不超过10ms。

标签:标记,收集器,并发,算法,垃圾,JVM,九种,内存
来源: https://blog.csdn.net/mschessy/article/details/109681097

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有