.php过程化cms的理解,浅谈CMS原理

CMS(Concurrent Mark Sweep)收集器以获取最短回收停顿时间为目标,是HotSpot虚拟机中第一款真正意义上的并发收集器,第一次实现了让垃圾收集线程与用户线程(基本上)同时工作。

秋招也快结束了。从今天开始,慢慢整理面试时准备的资料和之前看书做的笔记。部分内容单纯面向面试整理,牺牲深度换取广度,不过已经能够了解很多基本问题了。

过程初始标记(CMS initial mark):标记一下GC Roots能直接关联到的对象。需要STW,速度很快。

并发标记(CMS concurrent mark):进行GC Roots Tracing。不需要STW。会产生浮动垃圾。

重新标记(CMS remark):找到并发标记期间产生的浮动垃圾。需要STW,停顿时间一般会比初始标记稍长,但远比并发标记短。

并发清除(CMS concurrent sweep):清除已标记的垃圾。不需要STW。会产生浮动垃圾,只能等下一次GC清理。

9ac59f36f5712710ab1e643bcef967d9.png

重新标记的过程?为什么比并发标记的时间短?

不考虑标记对象年龄等操作,最容易想到的原因是:

对象数的区别:“并发标记”过程需要扫描所有对象,标记出不可达的对象(该清除)和可达的对象(不该清除);“重新标记”只需要扫描在“并发标记”过程中被标记为可达或新创建的对象,检查其是否在“并发标记”过程中被标记为可达之后,由于用户使用变的不可达了

并发环境的区别:“并发标记”是与用户线程一起工作的,并发瓶颈较窄(工作线程少+安全检查);“重新标记”需要stop the world,之后仅有“重新标记”的线程在工作,并发瓶颈宽的多

PS:关于对象数的区别要想清楚,在对象分配后,如果对象有一瞬间不可达,则该对象以后都将不可达,可对其清理。因此,重新标记时不需要检查这部分对象。

并发清除的过程?如何才能让用户边使用,边清除?

还是那句话:

在对象分配后,如果对象有一瞬间不可达,则该对象以后都将不可达,可对其清理。

所以,已经在“并发标记”和“重新标记”过程被标记为不可达的对象,以后都不会再被用户使用,清除这些对象对用户完全无影响。

唯一可能有影响的是整理内存的过程,不过也只需要同步使用对象和整理对象两个动作。

CMS的优点、缺点?

优点:

大部分时间可与用户线程并发工作

低停顿

缺点:

对CPU资源非常敏感。并发标记和并发清理与用户线程一起工作,如果用户线程也是CPU敏感的,那么必然影响用户线程。

无法处理浮动垃圾(Floating Garbage)。并发标记与并发清除过程会产生浮动垃圾,如果CMS之前预留的内存无法满足程序需要,就会出现一次“Concurrent Mode Failure”失败,这时虚拟机将退化使用Serial Old收集器,重新进行老年代的垃圾收集,这样停顿时间就很长了。可使用XX:CMSInitiatingOccupancyFraction参数设置触发CMS时的老年代空间比例(剩余空间就是预留空间),在JDK1.6中默认为92%。

基于“标记-清除算法”,收集结束时会有大量空间碎片产生,导致明明剩余空间充足,却无法为大对象分配足够的连续内存。可打开-XX:+UseCMSCompactAtFullCollection开关参数(默认打开)在进行Full GC之前整理内存碎片(称为“压缩”);使用-XX:CMSFullGCsBeforeCompaction参数(默认0)设置多少次不带压缩的Full CG之后才进行一次带压缩的Full GC。内存整理无法并行,还需要STW,需要适当调整内存整理的频率,在GC性能与空间利用率之间平衡。

PS:

浮动垃圾:由于CMS并发清理阶段用户线程还在运行着,伴随程序运行自然就还会有新的垃圾不断产生,这一部分垃圾出现在标记过程之后,CMS无法在当次收集中处 理掉它们,只好留待下一次GC时再清理掉。这一部分垃圾就称为“浮动垃圾”。在这期间用户可能创建新的对象。为了处理这部分浮动垃圾和对象,CMS在并发清理之前,需要预留出足够空间给并发清理期间的用户线程使用。一般会显示使用-XX:CMSInitiatingOccupancyFraction参数设置触发CMS时的老年代空间比例,如果老年代增长不是太快,可以适当提高比例,以减少Full GC的次数。

关于浮动垃圾和内存碎片的问题。HDFS namenode在堆内存达到100G规模时,通常设置75%触发Full GC,不开启压缩,优先考虑STW造成的延迟。

小爽无敌
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
写文章

热门文章

  • excel显著性检验_用Excel做回归分析 10527
  • bios设置计算机用户密码,bios开机密码设置或取消的设置教程 7972
  • c语言判断是否能被5或11整除,用c语言判断输入一个整数n能否被5和7同时整除 6749
  • 财管公式计算机哪个是开平方,技巧篇丨中级财管计算器使用及公式快捷输入 6017
  • python中pandas模块导入csv文件_Python之pandas导入导出数据 4285

大家在看

  • [附开题]flask框架的基于微信小程序的新疆特色民宿预定系统t0931(python+源码)
  • mysql8 压缩包版安装 488
  • 门控循环单元(GRU)及其预测和分类Python实现 29
  • Maven配置以及下载(含配置阿里镜像云) 369
  • Linux基础命令指南一(纯干货)

最新文章

  • java里的线程池 无限队列
  • ajax提交datagrid,AJAX DataGrid
  • css中用wave滤镜,使用waveurfer.js为CSS属性设置动画效果
2024年1篇
2021年147篇
2020年11篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码丹竹头百度爱采购吉祥网站seo优化石岩百度竞价包年推广福田品牌网站设计南澳网站排名优化大运营销型网站建设坂田优化罗湖网站推广系统福永网站优化排名罗湖网站制作设计大鹏百度爱采购木棉湾标王平湖模板推广罗湖设计网站吉祥阿里店铺托管坂田网站搜索优化布吉网站推广方案布吉推广网站光明如何制作网站坪地seo网站推广双龙推广网站布吉推广网站惠州高端网站设计光明网站排名优化民治网站优化按天计费南澳模板推广福永营销型网站建设大运网络广告推广观澜企业网站制作宝安企业网站建设歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化