当前位置: 首页 > article >正文

91-java cms垃圾回收器

Java中的CMS(Concurrent Mark Sweep)垃圾收集器是一种老年代垃圾收集器,适用于处理老年代的垃圾收集。它使用标记-清除算法,但通过并发的方式来减少垃圾收集对应用的影响

CMS垃圾收集器有以下几个阶段:

  1. 初始化标记(Initial Mark):这个阶段会停止所有的应用线程,并记录下直接与根节点相连的对象。

  2. 并发标记(Concurrent Mark):在初始化标记的基础上继续进行垃圾收集,同时应用线程继续运行。

  3. 并发预清理(Concurrent Preclean):为了减少标记阶段的开销,预先清理一些已经死亡的对象。

  4. 重新标记(Remark):停止所有应用线程,重新标记在并发标记阶段发生变动的对象。

  5. 并发清除(Concurrent Sweep):垃圾收集器线程开始清除未被标记的对象,而应用线程继续运行。

  6. 并发重置(Concurrent Reset):这个阶段为下一次GC做准备,重置记录的垃圾收集信息。

CMS垃圾收集器的优点是低延迟,但是其缺点也很明显,包括:

  • 对CPU资源非常敏感。

  • 无法处理浮动垃圾,可能导致"Concurrent Mode Failure",这时候会退化成旧的标记-清除算法进行垃圾收集,停止所有应用线程。

  • 因为并发执行,所以无法保证垃圾收集过程中的内存空间的一致性,可能产生不一致的垃圾收集器根。


http://www.kler.cn/news/304148.html

相关文章:

  • java 长连接中的sse与websocket含义, 两者的区别
  • C++ Qt开发:运用QJSON模块解析数据
  • 编写注册接口与登录认证
  • 动态代理相关知识点
  • Zabbix监控自动化
  • 查找算法--python
  • NS3的3.36版本将Eclipse作IDE
  • python读写CSV文件
  • ctf Mark loves cat (超详细记录)
  • Redis缓存和Mysql数据一致性问题
  • Mybatis接受查询结果的情况
  • 使用 @NotEmpty、@NotBlank、@NotNull 注解进行参数校验
  • 多线程爬虫接入代理IP:高效数据抓取的秘诀
  • 工具包(Commons-io)工具包(hutool)
  • flink中disableOperatorChaining() 的详解
  • R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习技术应用
  • 理解大型语言模型(LLM)中的隐藏层
  • 【Hot100】LeetCode—198. 打家劫舍
  • 解决缺少genconfig
  • Rust 变量基础知识
  • Linux:命令行参数
  • DX-5009N 10G交换机 SFP接口+猫棒 代替运营商光猫 【注册状态O5但是无法PPPoe拨号踩坑——交换机VLAN配置】
  • Leetcode面试经典150题-69.X的平方根
  • AI教你学Python 第4天:函数和模块
  • 【HTML】可展开的顶层菜单栏
  • 拳皇97确反笔记
  • Go语言现代web开发08 if和switch分支语句
  • Spring Boot Admin集成与自定义监控告警
  • 【C++ 高频面试题】指针和引用、关于内存泄漏和野指针问题
  • 云服务器中的MinIO 配置 HTTPS 过程(图文)