1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 038 JVM实战总结:200小时积累 6小时烹制 史上最强图 图解:大厂面试题 Young G

038 JVM实战总结:200小时积累 6小时烹制 史上最强图 图解:大厂面试题 Young G

时间:2019-10-07 06:22:10

相关推荐

038 JVM实战总结:200小时积累 6小时烹制 史上最强图 图解:大厂面试题 Young G

今天学习本讲,按照艾宾浩斯遗忘曲线应该复习:37 35 31 24 9。建议大家按照遗忘曲线来复习学过的内容。

这是本人花了6个小时,精心绘制的“垃圾回收”活动图,同时进行了文字总结,大家用心看一定能收获很多

1、前文回顾

Young GC指代年轻代gc,用Old GC指代老年代GC,用Full GC指代年轻代、老年代、永久代共同的gc。

2、Young GC的触发时机

新生代的Eden区域满了之后就会触发,用复制算法来回收 。

3、Old GC和Full GC的触发时机

看图说话(为了显示效果,把图分成了两幅):

绿色线表示正常进行垃圾回收;

粉色表示需要进行判断是否需要OldGC

红色线表示确定要进行OldGC;

棕色线表示需要进行判断,是YoungGC还是OldGC

3.1、先看图中蓝框圆圈

蓝框圆圈表示一个新起点,中间的数字表示第几步。

蓝框2圆圈:准备进行垃圾回收。走到这步说明必须要进行垃圾回收了,但怎么回收还不确定

蓝框3-X圆圈:马上进行Old GC

蓝框3-Y圆圈:马上进行YoungGC

蓝框5圆圈:马上进行Old GC,之前已经进行过了YoungGC

图1:

图2:

3.2、再从指向蓝框圆圈的箭头,向上分析各个箭头的路径来源

我们主要分析产生GC的条件,那么指向就分析指向YoungGC和OldGC的箭头路径,即指向(3-X)、(3-Y)、(5)的箭头路径

分析产生YoungGC的条件,就是分析指向(3-X)的实线箭头,实线箭头有2条,即产生YoungGC的条件有2个:

新生代空间不足时

1、不需要空间担保,直接Young GC

2、空间担保成功

分析产生OldGC的条件,就是分析指向(3-Y)、(4)的实现箭头,实线箭头有3条,即产生OldGC的条件有3个:

新生代空间不足时

1、未设置空间担保

2、空间担保失败

3、Young GC后,晋升到老年代,老年代剩余空间不足

(注意:老年代剩余在CMS默认值是:老年代总空间 * 92%,参数设置:-XX:CMSInitiatingOccupancyFaction)

总结:

细心的朋友已经发现,产生YoungGC和Old GC的前置条件都有“新生代空间不足时”,所以当“新生代空间不足时”YoungGC一定会发生,只是发生的时机不同,从图中可以看到有三种情况:

1、仅 Young GC 。

查看(3-Y)到(4)路径

2、Young GC + Old GC

查看(3-Y)到(5)路径

3、Old GC +Young GC

查看(3-X)到(4)路径和看(3-X)到(OOM)路径

所以这就是为什么每次Old GC都会伴随着一次Young GC。Old GC从来不会单独出现

4、永久代满了之后怎么办?

永久代满了会触发一次Full GC,顺带收了永久代垃圾

谢谢大家耐心看完,这些都是学习《从 0 开始带你成为JVM实战高手》的内容总结,相信大家学习了老师的专栏后也能画出比我更好的流程。加油!!!

本文是《从 0 开始带你成为JVM实战高手》内容总结,版权问题,特此声明。想学习老师专栏的同学可以扫描二维码:

购买成功后找我返现10元

038 JVM实战总结:200小时积累 6小时烹制 史上最强图 图解:大厂面试题 Young GC和Full GC分别在什么情况下会发生?

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。