应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

不管卷不卷,面试还是得问问你G1原理

  所有的垃圾回收器的目的都是朝着减少STW的目的而前进,G1(GarbageFirst)回收器的出现颠覆了之前版本CMS、Parallel等垃圾回收器的分代收集方式,从2004年Sun发布第一篇关于G1的论文后,直到2012年JDK7发布更新版本,花了将近10年的时间G1才达到商用的程度,而到JDK9发布之后,G1成为了默认的垃圾回收器,CMS也变相地相当于被淘汰了。G1结构
  G1抛弃了之前的分代收集的方式,面向整个堆内存进行回收,把内存划分为多个大小相等的独立区域Region。
  一共有4种Region:自由分区FreeRegion年轻代分区YoungRegion,年轻代还是会存在Eden和Survivor的区分老年代分区OldRegion大对象分区HumongousRegion
  每个Region的大小通过XX:G1HeapRegionSize来设置,大小为132MB,默认最多可以有2048个Region,那么按照默认值计算G1能管理的最大内存就是32MB204864G。
  对于大对象的存储,存在Humongous概念,对G1来说,超过一个Region一半大小的对象都被认为大对象,将会被放入HumongousRegion,而对于超过整个Region的大对象,则用几个连续的Humongous来存储(如下图H区域)。
  G1优势
  上面我们也提到,垃圾回收器的最终目的都是为了减少STW造成的停顿,比如之前老的垃圾回收器CMS这种带来的停顿时间是不可预估的。
  而G1最大的优势就在于可预测的停顿时间模型,我们可以自己通过参数XX:MaxGCPauseMillis来设置允许的停顿时间(默认200ms),G1会收集每个Region的回收之后的空间大小、回收需要的时间,根据评估得到的价值,在后台维护一个优先级列表,然后基于我们设置的停顿时间优先回收价值收益最大的Region。
  那么,这个可预测的停顿时间模型怎么计算和建立的?主要是基于衰减平均值的理论基础,衰减平均是一种数学方法,用来计算一个数列的平均值,给近期的数据更高的权重,强调近期数据对结果的影响,代码如下:hotspotsrcsharevmgcimplementationg1g1CollectorPolicy。hppdoublegetnewprediction(TruncatedSeqseq){returnMAX2(seqdavg()sigma()seqdsd(),seqdavg()confidencefactor(seqnum()));}
  davg表示衰减值
  sigma表示一个系数,代表信贷度,默认值为0。5
  dsd表示衰减标准偏差
  confidencefactor表示可信度系数,用于当样本数据不足(小于5个)时取一个大于1的值,样本数据越少该值越大。
  基于这个模型,G1希望根据用户设置的停顿时间(只是期望时间,尽量努力在这个范围内完成GC)来选择需要对哪些Region进行回收,能回收多大空间。
  比如过去10次回收10G内存花费1s,如果预设的停顿时间是200ms,那么就最多可以回收2G的内存空间。空间分配扩展
  既然G1还是存在新生代和老年代的概念,那么新生代和老年代的空间是怎么划分的呢?
  在G1中,新增了两个参数G1MaxNewSizePercent、G1NewSizePercent,用来控制新生代的大小,默认的情况下G1NewSizePercent为5,也就是占整个堆空间的5,G1MaxNewSizePercent默认为60,也就是堆空间的60。
  假设现在我们的堆空间大小是4G,按照默认最大2048个Region计算,每个Region的大小就是2M。
  初始新生代的大小那么就是200M,大约100个Region格子,动态扩展最大就是604G2。4G大小。
  不过显然,事情不是这么简单,实际上初始化新生代的空间大小逻辑还是挺复杂的。
  首先,我们通过原有参数Xms设置初始堆的大小,Xmx设置最大堆的大小还是生效的,可以设置堆的大小。可以通过原有参数Xmn或者新的参数G1NewSizePercent、G1MaxNewSizePercent来设置年轻代的大小,如果设置了Xmn相当于设置G1NewSizePercentG1MaxNewSizePercent。接着看是不是设置了XX:NewRatio(表示年轻代与老年代比值,默认值为2,代表年轻代老年代大小为1:2),如果1都设置了,那么忽略NewRatio,反之则代表G1NewSizePercentG1MaxNewSizePercent,并且分配规则还是按照NewRatio的规则。如果只是设置了G1NewSizePercent、G1MaxNewSizePercent中的一个,那么就按照这两个参数的默认值5和60来设置。如果设置了XX:SurvivorRatio,默认为8,那么Eden和Survivor还是按照这个比例来分配
  按照这个规则,我们新生代和老年代的空间分配基本就完成,如果说新生代走默认的规则,每次动态扩展空间大小怎么办?
  有一个参数叫做XX:GCTimeRatio表示GC时间与应用耗费时间比,默认为9,就是说GC时间和应用时间占比超过10才进行扩展,扩展比例为20,最小不能小于1M。回收过程
  G1的回收过程分为以下四个步骤:初始标记:标记GCROOT能关联到的对象,需要STW并发标记:从GCRoots的直接关联对象开始遍历整个对象图的过程,扫描完成后还会重新处理并发标记过程中产生变动的对象最终标记:短暂暂停用户线程,再处理一次,需要STW筛选回收:更新Region的统计数据,对每个Region的回收价值和成本排序,根据用户设置的停顿时间制定回收计划。再把需要回收的Region中存活对象复制到空的Region,同时清理旧的Region。需要STW。
  总的来说这是一个偏向记忆的回收过程,知道就行了。
  相对于之前我们存在分代概念的GC来说,G1其实也是类似的过程,总体可以分为这两种:年轻代GC,年轻代Region在超过我们默认设置的最大大小之后就会触发GC,还是用的我们熟悉的复制算法,Eden和Survivor来回倒腾,这里不再赘述。MixedGC混合回收,混合回收类似于之前我们的FullGC概念,既会回收年轻代的Region,也会回收老年代的Region,还有我们新的Humongous大对象区域。触发规则根据参数XX:InitiatingHeapOccupancyPercent(默认45)值,也就是说老年代Region达到整个堆内存的45时触发MixedGC。其他问题
  上面应该把基本概念都解释完了。
  比如什么是G1?G1有什么特点?他的优点是什么?划分Region后怎么分配空间?怎么进行垃圾回收?什么时候进行YGC?什么时候进行FGC?可靠的停顿时间模型建立方式?
  除此之外,其实还有一些较为复杂的问题,比如之前我们说分代收集有跨代引用的问题,划分Region之后应该也有对不对,那怎么解决的?
  还有之前我们说并发收集阶段怎么解决用户线程和收集线程互不干扰的?
  这些更深一点的问题其实在现在已经卷到需要问三色标记了吗?已经说到了很多了,下面我们再详细点说明下在G1中的一些不同点。记忆集
  在这篇文章中我们提到过一次关于RememberedSet的概念,为了避免GC时扫描整个堆内存,用来标志哪些区域存在跨代引用,对于G1来说也一样,只不过G1的记忆集会更复杂一点。
  每个Region中都存在一个HashTable结构的记忆集,Key为其他Region的起始地址,Value是其他CardTable卡表的索引集合。
  原来我们的卡表指向的是卡页的内存地址段,代表我引用了谁,现在的记忆集则是代表着谁引用了我,因此收集的过程会更复杂一点,并且需要额外的1020的堆内存空间来维持。
  维护记忆集的方式也和卡表类似,通过写屏障来实现。原始快照SATB
  在三色标记中我们也提到过,并发标记用户线程和收集线程一起工作会产生问题,解决方案CMS使用的是增量更新,G1则是用原始快照。总结
  写这些东西比较费劲,因为总在想在理解的基础上怎么写的更通俗易懂,但是发现好像并不容易,因为自己也都是看完没过多久就忘记了,所以记录下来,能看懂就行了,实在不行就去看书。
  周老师的深入Java虚拟机写的比较简单,很多东西要去搜资料和书结合看才能看明白,另外一本书写的也不是很好,作者感觉只是堆砌知识点,看起来很费劲,美团写的那篇文章也是一大堆名词,不知道的人看的简直蛋疼。
  我应该,比他们写的更通俗一点就好了?参考:
  彭成寒《JVMG1源码分析和调优》
  周志明《深入理解Java虚拟机第三版》
  美团:JavaHotspotG1GC的一些关键技术

二刷锦绣未央就算没有李未央,拓跋浚也不可能喜欢李长乐点击关注,阅读更多文章文:念小桥原创图:网络(如有侵权,请联系删除)01hr李长乐,尚书府嫡女,京城第一美人,从小就在父母的纵容溺爱和锦衣玉食中长大。使得她养成了心……琉璃为什么能够成为陈情令之后最成功的割韭菜者?以前平台方电视剧的主要收入,就是在电视剧开播前的广告收入。而现在平台方电视剧的收入,可谓是多元化。电视台除了在影视剧开播前插入广告之外,还可以设定栏目另外招商,例如……限娘令迎来正常审美,什么才是男性该有的气质?鹿晗成例子用娘这个词来形容男生是不礼貌的,可是不知道从什么时候开始,年轻人的审美逐渐娘化,柔弱的男生反而更受欢迎。而这一切,还是源于韩流的影响,那些长相精致的小鲜肉,比女生还要漂亮,有一……足协为12强赛也是拼了!派私人飞机接武磊参赛,陈戌源亲自督战此前在男足40强赛上,中国男足表现出色,以全胜战绩晋级,让球迷们看到了国足崛起的希望。接下来国足将要进行更加残酷的12强赛,面对更强的对手,国足必须拿出更好的表现去应对。而为了……吴京关注了易烊千玺和王俊凯,为何却落下了王源?要说当下最火热的组合,莫过于TFBOYS。这个从时代峻峰造星工厂走出来的男子演唱组合,人气几乎可以比肩90年代的小虎队。他们屡次获得最受欢迎内地组合奖,受欢迎程度可见一斑……名记曝篮网内幕签约阿德归功KD北京时间9月10日,湖人官方宣布签下德安德鲁乔丹。他与湖人的合同是年薪264万的老将底薪。湖人签下乔丹后,名单上已经有14人,平均年龄超过32岁,其中8人超过33岁。他们被某东……歪嘴笑的坏男人陈冠希撇开ampampquot艳照门,他的三观【2020年】轻言轻第13篇戳右边关注我,每天吃新瓜旧瓜012008年,因为艳照门,正火得如日中天的陈冠希宣布将无限期退出娱乐圈,就在他召开媒体发布会的那天,意外圈了不少……陈坤6岁那年饿着肚子去父亲家讨压岁钱,后妈变脸我们没钱给你那年春节,陈坤饿着肚子去父亲家里讨压岁钱,后妈当即变脸:想得美,我们哪里来的钱给你!父亲也把陈坤痛骂了一顿,赶出了家门。1976年,陈坤出生在重庆江北,6岁那年,他在外婆……中秋民间故事知多少一定要让孩子知道中秋节是我国的传统节日之一,我国的很多传统节日都有着美丽的传说故事,中秋节也不例外,作为中国人,一定要对中秋节有一定的了解,接下来我们就一起看看中秋节有什么故事和传说,中秋节有……30岁后活得很好的女人,大多都有这样7个特质,分享给需要的你我是用文字温暖你的夕言,点击上方蓝色按键关注我哦。最近在看《乘风破浪的姐姐》第二季,看着那英、张柏芝、杨钰莹,我突然就有一种感觉,那就是女人30岁以前活得好不好可以靠运气……抖机灵翻车了,从烧饼到杨鹤通,5天引起两次热议朋友们之间开开玩笑,本来是无可厚非的事情,但是开玩笑一定要分场合,尤其是公众人物更是如此,否则会造成一些不必要的负面影响。最近五天德云社连续出现了两次,因为烧饼和杨鹤通不……世道变了,大导演尔冬升被放鸽子,丁程鑫安慰,曾拖垮四部剧大导演的地位在影视圈很高,即使是外行人,也明白这个道理。以前的剧组,无论你是大牌明星,还是小演员,都要对导演非常尊敬。特别是大导演,就算是知名度很高的艺人,也要留下好印象……
开心鬼编剧过这么多作品!黄百鸣,监制、编剧、演员,1946年04月08日出生于中国香港九龙。1967年,他编剧的《搭错车》、《最佳拍档》《何必有我》和《阿郎的故事》四部作品他以编剧身份进入香港演艺圈。……AppleOne整合订阅计画即将推出iOS代码和苹果网域证实随着现在的生活水准越来越高,大家购买苹果的产品也是越来越多了,那么苹果的产品当中有很多的功能大家是未必知道如何去使用的,当然也包括要去多了解苹果新出的新功能之类的,那么今天小编……外媒英特尔将停产9代酷睿X系列处理器文章来源:科技讯据外媒报道称英特尔发布产品变更通知基于SkylakeX架构的酷睿X系列处理器将逐渐停产据介绍从2021年1月22日起英特尔将不再接受这些处理器的订单……新加坡将过渡出断路器措施分阶段实施这对司机来说意味着什么新加坡将在2020年6月2日走出断路器,逐步向常态过渡。为了控制疫情,新加坡经济将分三个阶段逐步恢复。然而,如果你打算在断路器后立即在陈列室购买新车,你将不得不改期购买。以下是……放大30倍动态版清明上河图走红,网友原来那时候流行穿短裤?近日,动态版《清明上河图》将张择端的原作放大30倍,突然在网上火起来了,在动态演绎下,画中的每个人都活灵活现,让人身临其境感受到北宋汴京的繁华景象,不仅震撼,也给网友带来不少欢……跳来跳去的女人婚姻中欲求不满的女人,到底害了谁?娜娜的丈夫去世了,她待在卧室趴在床上泪水从脸上划过。他走了,她的生活该怎么办?生前看似可有可无的人,离世后才发现原来他那么重要。想当初,他可是一直被娜娜诟病,嫌他不够浪漫……印度版奥希替尼有几种?价格售价分别多少钱一盒?本文由泰慧康海外医疗科普,咨询微信:thk298。甲磺酸奥希替尼片为第三代表皮生长因子受体(EGFR)酪氨酸激酶抑制剂(TKI),是首个获批用于既往EGFRTKI治疗时或……山河令喜丧鬼为什么见到温客行不用下跪,他们是什么关系?在电视剧《山河令》中,鬼谷里有十大恶鬼,分别是吊死鬼、无常鬼、黑无常、白无常、开心鬼、食尸鬼、长舌鬼、急色鬼、喜丧鬼、艳鬼。十大恶鬼虽然各个本领高强,但全都听命于鬼谷谷主,也就……宝宝几岁开始穿小内裤?乱穿内裤后果很严重,90的家长没有做对关于孩子多大穿内裤这事,很多家长都没个定论,尤其是一些新手父母,缺乏育儿知识,总是很晚才给宝宝准备内裤。殊不知,到了一定年龄还不给宝宝穿内裤,后果远比父母想得要严重。乱穿……国家一级演员宋春丽为拍戏终生未育,却在当奶奶的年纪当上了妈随着娱乐圈越来越流量化的发展,很多人都已经忘记了什么才是演技。杨超越:一个唱跳一般的女团出道演员,现如今她参演的《且听凤鸣》,演技尴尬到不忍直视,目光呆滞无感。杨超……印度必利劲购买渠道有哪些?一、必利劲是什么?必利劲在国内商品名又称为达泊西汀,是一款针对1864岁男性早谢(PE)研发的款葯品,由德国研发问世,也是获得国家葯品监督管理局唯一公认款有效延长夫妻爱爱时间葯……印度版必利劲正规购买渠道有哪些?印度被称为《世界葯房》这个誉称可不是浪得虚名,印度的仿制葯发展已经有了几十年时间了,如今印度生产的各种各I样仿制葯高达数千种,也销往全球上百个国家,印度仿制葯也成为印度主要经济……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网