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

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

时间:2022-12-29 17:05:47浏览次数:51  
标签:面试题 Full Old Young 箭头 蓝框 GC 圆圈


 

 

   今天学习本讲,按照艾宾浩斯遗忘曲线应该复习: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圆圈:马上进行Young GC

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

 

图1:

 

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

 

 

图2:

 

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

 

 

 

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的前置条件都有“新生代空间不足时”,所以当“新生代空间不足时”Young GC一定会发生,只是发生的时机不同,从图中可以看到有三种情况:  

  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,顺带收了永久代垃圾

 



标签:面试题,Full,Old,Young,箭头,蓝框,GC,圆圈
From: https://blog.51cto.com/u_14724733/5978508

相关文章

  • 036、JVM实战总结:糟糕!运行着的线上系统突然卡死无法访问,万恶的JVM GC!
    提醒大家复习时,只看标题进行回想并尝试回答,然后再看内容。1、前文回顾前5周分析了JVM核心原理、出现GC的问题情形。2、基于JVM运行的系统最怕什么?STW 造成的卡顿问题3、年......
  • Springcloud学习笔记39--拦截器Interceptor详细使用
    原文链接:https://www.cnblogs.com/luckyplj/p/15839125.html1.拦截器Interceptor定义拦截器是在面向切面编程中应用的,就是在你的service或者一个方法前调用一个方法,或者......
  • [AtCoder Grand Contest 018] D: Tree and Hamilton Path (agc018D)
    原题链接​​​https://agc018.contest.atcoder.jp/tasks/agc018_d​​Description给出一棵N个点带边权的树现在有一个N个点的完全图,一条边x,y的长度是这两点的在树上最短......
  • [AtCoder Grand Contest 071] E: Jigsaw (agc071E)
    原题链接​​​https://agc017.contest.atcoder.jp/tasks/agc017_e​​Description给出N块拼图每块拼图宽度为3,高度为相同的H拼图由3个宽度为1的部分拼接而成,第一部分......
  • GCC 版本对应的 libstdc++ 库版本
    GCC版本GLibCC++ABIlibstdc++.so版本GCC3.0.0libstdc++.so.3.0.0GCC3.0.1libstdc++.so.3.0.1GCC3.0.2libstdc++.so.3.0.2GCC3.0.3......
  • 容斥原理与gcd的问题
    gcd个数的处理(i,j无限制)P2398GCDSUMi为1-n,j为1-m,求gcd为k的个数代码#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintM=1e5+5;......
  • AtCoder-abc230_g GCD Permutation 容斥
    J-GCDPermutation传送门:J-GCDPermutation知识点:素数筛、容斥定理、gcd题意:长度为n的一个排列a中,求满足\(gcd(i,j)!=1且gcd(a_i,a_j)!=1\)的i,j对数。i,j可以......
  • HR常见面试题(实用版)
    1.请你自我介绍一下你自己?回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有。其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技......
  • The CBO CPU Costing Model: Indexes vs. Full Table Scans
    As ​​previouslypromised​​​,IthoughtImightlookathowtheCBO goesaboutcostingaFullTableScan(FTS)withsystemstatisticsandtheCPUcosting......
  • CentOS7.9 安装 gcc-4.8.0
    查看GCC版本号是否已满足gcc-v下载包wgethttp://mirrors.concertpass.com/gcc/releases/gcc-4.8.0/gcc-4.8.0.tar.bz2解压包tarjxvfgcc-4.8.0.tar.bz2进入......