当前位置: 首页 > 面试题库 >

介绍一下CMS,G1收集器?

凌嘉志
2023-03-14
本文向大家介绍介绍一下CMS,G1收集器?相关面试题,主要包含被问及介绍一下CMS,G1收集器?时的应答技巧和注意事项,需要的朋友参考一下

1 CMS 收集器

CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。它非常符合在注重用户体验的应用上使用。

CMS(Concurrent Mark Sweep)收集器是 HotSpot 虚拟机第一款真正意义上的并发收集器,它第一次实现了让垃圾收集线程与用户线程(基本上)同时工作。

从名字中的Mark Sweep这两个词可以看出,CMS 收集器是一种 “标记-清除”算法实现的,它的运作过程相比于前面几种垃圾收集器来说更加复杂一些。整个过程分为四个步骤:

  • 初始标记: 暂停所有的其他线程,并记录下直接与 root 相连的对象,速度很快 ;
  • 并发标记: 同时开启 GC 和用户线程,用一个闭包结构去记录可达对象。但在这个阶段结束,这个闭包结构并不能保证包含当前所有的可达对象。因为用户线程可能会不断的更新引用域,所以 GC 线程无法保证可达性分析的实时性。所以这个算法里会跟踪记录这些发生引用更新的地方。
  • 重新标记: 重新标记阶段就是为了修正并发标记期间因为用户程序继续运行而导致标记产生变动的那一部分对象的标记记录,这个阶段的停顿时间一般会比初始标记阶段的时间稍长,远远比并发标记阶段时间短
  • 并发清除: 开启用户线程,同时 GC 线程开始对为标记的区域做清扫。



从它的名字就可以看出它是一款优秀的垃圾收集器,主要优点:并发收集、低停顿。但是它有下面三个明显的缺点:

  • 对 CPU 资源敏感;
  • 无法处理浮动垃圾;
  • 它使用的回收算法-“标记-清除”算法会导致收集结束时会有大量空间碎片产生。

2 G1 收集器

G1 (Garbage-First) 是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足 GC 停顿时间要求的同时,还具备高吞吐量性能特征.

被视为 JDK1.7 中 HotSpot 虚拟机的一个重要进化特征。它具备一下特点:

  • 并行与并发:G1 能充分利用 CPU、多核环境下的硬件优势,使用多个 CPU(CPU 或者 CPU 核心)来缩短 Stop-The-World 停顿时间。部分其他收集器原本需要停顿 Java 线程执行的 GC 动作,G1 收集器仍然可以通过并发的方式让 java 程序继续执行。
  • 分代收集:虽然 G1 可以不需要其他收集器配合就能独立管理整个 GC 堆,但是还是保留了分代的概念。
  • 空间整合:与 CMS 的“标记--清理”算法不同,G1 从整体来看是基于“标记整理”算法实现的收集器;从局部上来看是基于“复制”算法实现的。
  • 可预测的停顿:这是 G1 相对于 CMS 的另一个大优势,降低停顿时间是 G1 和 CMS 共同的关注点,但 G1 除了追求低停顿外,还能建立可预测的停顿时间模型,能让使用者明确指定在一个长度为 M 毫秒的时间片段内。

G1 收集器的运作大致分为以下几个步骤:

  • 初始标记
  • 并发标记
  • 最终标记
  • 筛选回收

G1 收集器在后台维护了一个优先列表,每次根据允许的收集时间,优先选择回收价值最大的 Region(这也就是它的名字 Garbage-First 的由来)。这种使用 Region 划分内存空间以及有优先级的区域回收方式,保证了 GF 收集器在有限时间内可以尽可能高的收集效率(把内存化整为零)。

 类似资料:
  • 本文向大家介绍详细介绍一下 CMS 垃圾回收器?相关面试题,主要包含被问及详细介绍一下 CMS 垃圾回收器?时的应答技巧和注意事项,需要的朋友参考一下 CMS 是英文 Concurrent Mark-Sweep 的简称,是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器。对于要求服务器响应速度的应用上,这种垃圾回收器非常适合。在启动 JVM 的参数加上“-XX:+UseConcMarkSwee

  • CMS 垃圾回收器是Concurrent Mark Sweep,是一种同步的标记-清除,CMS分为四个阶段: 初始标记,标记一下GC Root能直接关联到的对象,会触发“Stop The World”; 并发标记,通过GC Roots Tracing判断对象是否在使用中; 重新标记,标记期间产生对象的再次判断,执行时间较短,会触发“Stop The World”; 并发清除,清除对象,可以和用户线

  • 网站 etcd官网 etcd @ github : 首页有大量资料链接 etcd @ google group 文档 etcd3 API: 还在TODO中… etcd v3 API: RFC 工具 etcdctl: etcd的命令行工具 Mirror Maker: etcd 的多数据中心支持方案,待研究 介绍资料 etcd3 etcd3: A new etcd: etcd3发布时官方介绍的blog

  • 本文向大家介绍介绍一下auc?相关面试题,主要包含被问及介绍一下auc?时的应答技巧和注意事项,需要的朋友参考一下 介绍auc,那么就介绍ROC,auc反映的是从样本集中抽出样本,预测这个样本是正例的概率比预测这个样本是反例的概率大的概率,做法是由于每种样本出现的概率已知,将其由小到大进行排序,依次作为截断概率,小于该概率预测为负例,大于该概率预测为正例,这样每个样本都有一个预测值,可以计算出样本

  • 主要内容:区别一: 使用范围不一样,区别二: STW的时间,区别三: 垃圾碎片,区别四: 垃圾回收的过程不一样,CMS回收垃圾的4个阶段,CMS的总结和优缺点,G1回收器的特点,G1回收垃圾的4个阶段,什么情况下应该考虑使用G1,控制G1回收垃圾的时间CMS收集器和G1收集器的区别 区别一: 使用范围不一样 CMS收集器是老年代的收集器,可以配合新生代的Serial和ParNew收集器一起使用 G1收集器收集范围是老年代和新生代。不需要结合其他收集器使用 区别二: STW的时间 CMS收集器以最

  • 网站 grpc官网 grpc-java gRPC Java实现. javadoc: grpc java 的javadoc地址 grpc google groups grpc-ecosystem 文档 grpc-common 是官方提供的文档和例子, 但是内容实际是指向下面的grpc.io上的Documentation. Documentation@grpc.io 是grpc.io提供的文档,这个适