史上最强图,图解:大厂面试题,Young GC和Full GC分别在什么情况下会发生? - Go语言中文社区

史上最强图,图解:大厂面试题,Young GC和Full GC分别在什么情况下会发生?


 

在原文基础上重新绘制了一下进行Young GC 、Full GC 的条件及处理过程(原文链接 https://blog.csdn.net/dingshuo168/article/details/98790647

 

 

为了方便记忆,我把图逐步简化为,下列三幅图:

 

 

 看着图3,我来写出过程:

  1、左5型,绕过了空间担保(绕过紫色框),直接进行了Young GC。不用空间担保,意味着Young GC后,即使新生代所有的对象都存活,也都可以放入老年代,所以只会进行Young GC

  2、锚型,空间担保成功(跨越紫色框),先Young GC,后Old GC(也可能不进行)。空间担保成功,意味着Young GC后,大概率老年代空间够晋升对象用,不需要进行Old GC,那么先进行Young GC吧,Young GC过程中会有一部分对象晋升到老年代,这时候有两种情况:

  (情况1)、发现老年代空间不够,只能转而进行 Old GC ,然后接着YoungGC。

  (情况2)、老年代空间够,不用Old GC

  3、中5少横型,空间担保失败(分叉于紫色框),先Old GC ,后Young GC。空间担保失败,意味着Young GC后,大概率老年代空间不够晋升对象用,需要进行Old GC。那么先进行Old GC吧,Old GC完成后进行Young GC(大家别忘记为什么要进行Old GC,是为了更好的进行Young GC,免得先进行Young GC到一半才发现空间不够用,再来Old GC)

好了,我看着图3,把大概的流程写完了。大家仔细看最上面的详细流程图,相信最后也能想着图3 ,写出整个流程

本文是《从 0 开始带你成为JVM实战高手》内容总结,版权问题,特此声明

 

 

 

 

 

如果购买,成功后加QQ群找群主返现10元

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/dingshuo168/article/details/98962879
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-16 19:23:00
  • 阅读 ( 1310 )
  • 分类:面试题

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢