JVM垃圾收集器之CMS垃圾收集器和G1垃圾收集器

CMS垃圾收集器

CMS垃圾收集器
CMS GC的英文名为:“Mostly Concurrent Mark and Sweep Garbage Collector” (最大-并发-标记-清除-垃圾收集器)。
作用范围: 老年代
算法: 并发标记清除算法。
启用参数:-XX:+UseConMarkSweepGC默认回收线程数:(处理器核心数量 + 3)/4
Java9之后使用CMS垃圾收集器后,默认年轻代就为ParNew收集器,并且不可更改,同时JDK9之后被标记为不推荐使用,JDK14就被删除了。

设计目标/优点:避免在老年代垃圾收集时出现长时间的卡顿,主要通过两种手段来达成此目标:

第一,不对老年代进行整理,而是使用空闲列表(free-list)来管理内存空间的回收
第二,在mark-and-sweep(标记-清除)阶段的大部分工作和应用线程一起并发执行。

适用场景:

GC过程短暂,低延迟,适合对延迟要求较高的系统

如果服务器是多核CPU,并且主要调优目标是降低GC停顿导致的系统延迟,那么使用CMS是个很明智的选择。通过减少每一次GC停顿的时间,很多时候会直接改善用户体验。因为多数情况下有部分CPU资源被垃圾回收器线程消耗,所以在CPU资源受限的情况下,CMS GC会比并行GC的吞吐量差一些(对于绝大部分系统,这个吞吐和延迟的差别应该都不明显)
在实际情况中,进行老年代的并发回收时,可能会伴随多次年轻代的minor GC。在这种情况下full GC的日志中就会掺杂着多次minor GC事件

CMS GC的几个大阶段

1、初始标记(CMS initial mark)
2、并发标记(CMS concurrent mark)
3、重新标记(CMS remark)
4、并发清除(CMS concurrent sweep)
其中:1、3会STW

G1收集器

G1待更新

相关推荐

  1. JVM垃圾收集CMS垃圾收集G1垃圾收集

    2024-03-13 09:48:04       23 阅读
  2. G1垃圾收集

    2024-03-13 09:48:04       21 阅读

最近更新

  1. TCP协议是安全的吗?

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

    2024-03-13 09:48:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-13 09:48:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-13 09:48:04       20 阅读

热门阅读

  1. git 工具常用命令

    2024-03-13 09:48:04       20 阅读
  2. 【Linux的shell原理 与 Linux权限】

    2024-03-13 09:48:04       18 阅读
  3. Git高级玩法:Rebase、Cherry-pick与Stash实战解析

    2024-03-13 09:48:04       18 阅读
  4. flask框架-03

    2024-03-13 09:48:04       17 阅读
  5. 使用Python检测贝叶斯网络的因果关系检测

    2024-03-13 09:48:04       17 阅读
  6. C++/CLI学习笔记3(快速打通c++与c#相互调用的桥梁)

    2024-03-13 09:48:04       16 阅读
  7. 【MySQL】范式

    2024-03-13 09:48:04       20 阅读
  8. SeaTunnel 2.3.4 Cluster in K8S

    2024-03-13 09:48:04       19 阅读
  9. Centos搭建Nacos集群

    2024-03-13 09:48:04       25 阅读
  10. 【力扣347前k个高频元素】

    2024-03-13 09:48:04       17 阅读
  11. jenkins

    2024-03-13 09:48:04       17 阅读
  12. Redis Pipeline(管道)与事务的区分

    2024-03-13 09:48:04       23 阅读