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

JVM知识总结(CMS收集器)

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

在这里插入图片描述

CMS收集器

CMS(Concurrent Mark Sweep)收集器是以获取最短回收停顿时间为目标的收集器。

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

它是标记-清除算法实现,整个过程可以分为以下步骤:

在这里插入图片描述

初始标记:

  • 暂停所有的其他线程stop the world,并记下GC Roots直接引用的对象,速度很快。

并发标记:

  • 从GC Roots的直接关联对象开始遍历整个对象链的过程,这个过程很长,但是不需要停顿用户线程,可以与垃圾收集线程一起并发运行。
    • 因为用户程序继续执行,可能会有导致已经标记过的对象状态发生变化。

重新标记:

  • 为了修正并发标记期间因为用户线程继续运行而导致标记产生变动的那一部分对象的标记记录。
    • 这个阶段的停顿时间一般会比初始标记阶段的时间稍长,远远比并发标记阶段时间短。
    • 主要用到三色标记里的增量更新算法做重新标记。

并发清理:

  • 开启用户线程,同时GC线程开始对未标记的区域做清扫。
    • 这个阶段如果有新增对象会被标记为黑色,不做任何处理。

并发重置:

  • 重置本次GC过程中的标记数据。

CMS的缺点

对CPU的资源敏感,会和服务器抢资源。

无法处理浮动垃圾,就是在并发标记和并发清理阶段产生的垃圾对象,只能等下一次GC来收集。

它使用的是标记-清除算法,那么就会导致收集结束后,会产生大量的内存碎片,不利于后续对象的存储。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Element学习(表格组件、分页组件)(2)
  • openwrt编译Dockerfile
  • TV-L1光流算法流程
  • C++ SQL ORM
  • 苹果离线打包机配置和打包
  • Typora v1.9.5解锁版下载、安装教程 (轻便简洁的Markdown编辑器)
  • android手动绘制矩形框
  • Spring Boot实战:拦截器
  • Python获取本机ip
  • 多久没有清理你的电脑磁盘了?轻松解锁免费轻量磁盘清理工具
  • 计网:http/1.1、http/2和http/3的改变和优化
  • 制造知识普及(八)--企业内部物料编码(IPN)与制造商物料编码(MPN)
  • WT2605C蓝牙语音芯片赋能对讲机新体验:无屏操控、音频解码与蓝牙音箱三合一
  • liunx装了torch-cuda,运行的却是cpu版的torch
  • Golang——逃逸分析
  • @jsonView过滤属性
  • 《剑指offer》分解让复杂问题更简单
  • 230. Kth Smallest Element in a BST
  • Android组件 - 收藏集 - 掘金
  • CEF与代理
  • JS题目及答案整理
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • mongodb--安装和初步使用教程
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • Puppeteer:浏览器控制器
  • 分类模型——Logistics Regression
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 我的业余项目总结
  • 详解NodeJs流之一
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 智能合约Solidity教程-事件和日志(一)
  • ​香农与信息论三大定律
  • # Maven错误Error executing Maven
  • #162 (Div. 2)
  • #ifdef 的技巧用法
  • #if等命令的学习
  • #Z2294. 打印树的直径
  • (03)光刻——半导体电路的绘制
  • (C#)获取字符编码的类
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (rabbitmq的高级特性)消息可靠性
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (回溯) LeetCode 40. 组合总和II
  • (三)Kafka离线安装 - ZooKeeper开机自启
  • (十二)Flink Table API
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .net解析传过来的xml_DOM4J解析XML文件
  • @SpringBootConfiguration重复加载报错
  • [ 物联网 ]拟合模型解决传感器数据获取中数据与实际值的误差的补偿方法