范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

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

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

对杨子满意吗?黄圣依妈来女婿北京的家做客他妈妈做得比他好丈母娘看女婿越看越喜欢。这一句话,也是要分人的。并非所有的岳母都对女婿很满意。黄圣依的妈妈就是如此。黄圣依的原生家庭黄圣依的父亲是清华大学毕业,妈妈是新民晚报的记者,外公是清华大学网红殷世航套路璐官宣分手,后称分手是做戏,辟谣新女友是假的网红殷世航又来搞事情了,在6月16日,殷世航发动态称已经和套路璐选择分手,并且称自己喜欢善解人意且眼里有光的女孩。但是对方套路璐也做出回应称希望殷世航能够幸福,每天都快乐,网友们猜张小斐爆红事件,揭露残酷世间真相你弱的时候坏人最多你好!李焕英上映20天,票房突破49亿,该片总票房已经超过了流浪地球的46。9亿,目前列于中国电影票房总榜第三位。这个票房影响力,对于顶流导演和主演而言,都是配得上弹冠相贺的绝佳成郑爽张恒事件再升级婚姻爱情,另一半人品好有多重要?郑爽张恒的狗血事件人尽皆知。两人你侬我侬的时候去美国找代孕生龙凤胎,分手的时候胎儿已经成型打不掉,郑爽以及全家坚决不要孩子,还阻挠张恒一家回国维权。张恒全程录音留证细思极恐,现在又泰国坠崖孕妇事件后续丈夫曾欠500万赌债,坐过12年牢5月15日,两年前泰国坠崖孕妇王暖暖再度更新了社交网络。她在镜头前不疾不徐地讲述当年那段惊心动魄的可怕经历。一坠崖事件回顾(一)被丈夫推入绝望深渊2019年6月9日,王暖暖和丈夫俞女人无论多大年纪,记住3个围巾的搭配公式,配毛呢大衣很高级冬天虽然是一个萧瑟又很寒冷的季节,但是很多人却很喜欢冬天,因为冬天的服饰搭配比起春夏季节来说花样更多,而且周边的小配置也能在保暖的同时,提升整个穿着的时髦度。在寒冷的季节里面要想起复古砖红色口红分享这4支滋润又显色,配毛呢大衣绝了如果你问我秋冬季节什么颜色的口红百搭,而且比较适合穿大衣,我会毫不犹豫的告诉你砖红色。砖红色的口红前几年就非常火,因为搭配的是雾面的质地,所以看上去有一种上世纪复古港星画报版的质感六一快乐!蔡少芬唐嫣溜娃,古力娜扎张艺兴佘诗曼等齐晒童年照六一儿童节快乐!祝福所有的大小朋友都像孩子一样纯真快乐无忧无虑。娱乐圈总是不断有喜事发生。先恭喜我们的世姐张梓琳诞下二胎女儿,她和二胎女儿深情凝望的样子,充满了母性的光辉。虽然没有钟丽缇14岁女儿只认识王一博,张伦硕反对早恋,jaden继父严厉青春期的孩子都有一个共同点那就是有自己的主见和小叛逆。青春期的妈妈也有一个共同点焦虑和卑微。张柏芝面对自己14岁的大儿子lucas就非常卑微,为了能成为儿子的朋友,她变成了听话的妈有钱进不了上海国际学校,6岁儿子哭着不肯学习,杨乐乐我自卑孟母三迁,这个故事很多人都懂得。这个故事是这样的孟子和母亲一开始住的地方离墓地很近,孟子就学会了一些祭拜之事。孟母觉得这个地方不适合孩子居住,便带着孟子居家搬迁到集市旁。到了集市旁张凯丽真不像大婶辈,短发配印花T恤美成30岁,还好女儿不在身边虽说岁月无情,美人终归会迟暮,但我们可以通过平时的保养和穿着打扮来延缓老态化,尤其是穿衣搭配上,更是可以起到鲜明的减龄效果。对于大龄女性们来说,偶尔尝试一下艳色系列的装扮实为不错的
秘密访客集齐张子枫普普和朱朝阳,MV看的人后背发凉这个劳动节,一共有8部电影要上映,其中秘密访客以23万人想看位居榜首。不说别的,光演员阵容,就足以让人期待了。郭富城段奕宏许玮甯张子枫荣杉彬王圣迪,前三位是演员,后三位是恐怖演员。原配女儿必须对老小三和渣爹和颜悦色?小舍得三观堪忧电视剧小舍得真的是越看越气,原配被老小三踩到头上欺负,原配女儿说了渣爹几句,渣爹居然还有脸怪女儿?在最新播出的几集中,原配赵娜腰伤卧床,多年前出轨的前夫南建龙去探望了一下原配,结果小舍得南俪,你可真是头白眼狼啊有多少人因为田雨岚,已经被气得对小舍得弃剧了?田雨岚和蔡菊英的存在,让很多人大开眼界。原来真的是人不要脸,天下无敌,蔡菊英自己心甘情愿当第三者,还总是一副受了天大委屈的白莲花模样。抱怨做艺人太难,拍个照片都嫌累,这届明星怎么了?爽子的208万日薪,成功激起了普罗大众对明星群体的仇恨。恨得不是他们拿高薪,而是他们拿着高薪还把观众当傻子。虽然可能很多流量明星的收入达不到爽子的高度,但毋庸置疑的是,现今中国的娱疑似林生斌嫂子,发文否认4岁孩子的存在,之后却清空账号林生斌嫂子否认四岁孩子存在,之后却清空账号。律师喊话林生斌诈捐,但法律却无法对他追责!一林生斌连发5条回应没能将自己洗白之后,他又成功神隐了。面对网上如洪水般的质疑,他只挑了几个不中国好声音停止海选,许多节目被叫停,选秀节目迎来终点?多档选秀节目被叫停,全国综艺海选停止,此后不再有选秀节目?5月23日对中国好声音节目组来说,是特别的一天。这一天他们发布了一则信息,信息当中提到他们不再海选了。这让人有些意外,这是李梦现身戛纳影展,作品再次入围主竞赛单元,选错礼服又矮又胖礼服是明星们出席各种活动时常常用到的服装,一件合适的礼服对明星们来说是非常重要的,穿礼服不但要求礼服选得好,适合明星本人的身材气质,而且还要搭配得当,穿得时尚,才能穿得好看。一件合吴亦凡绯闻女友曝光,13岁成一级运动员,曾晒激吻照吴亦凡女友曝光,曾晒激吻照,13岁成运动员很不简单帅气的明星在娱乐圈并不少,但五官精致到让人羡慕的是吴亦凡。吴亦凡演出的电影不多,不过他出演的程铮一角色让人记忆深刻。那一身孤独到网吴宣仪遭受网暴,愤怒发文,难道这个圈子的女孩都不配被善待?遭受网络暴力,吴宣仪发文,圈子里的女孩没被善待过!娱乐圈常有明星因为网暴承受不住压力,导致星途毁于一旦。还有些抑郁过重,直接失去生命。虽然娱乐圈多次发声,请大家谨言慎行,别用自己的相恋四年甜蜜约会,狗善CP曝光,张歆艺发文表示支持张歆艺发文支持狗善,二人相恋四年,甜蜜约会照曝光明星们因为平时接触外界的时间比较少,大部分时间都是在剧组里待着。所以,很多明星的爱人都是出自同一剧组。当然,在娱乐圈也会有各种情况的范冰冰出席红毯晚会,露肩裙像贵妇,罕见同台绯闻男友罕见范冰冰参加红毯,和绯闻男友同台,绿裙很张狂近期,范冰冰重出江湖,虽起点比较低,但这是一个新的开始。经过多年的雪藏,范冰冰的年纪也不小了,若是再不出现在娱乐圈,想必就会彻底地退圈