今天学习本讲,按照艾宾浩斯遗忘曲线应该复习: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:

图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的前置条件都有“新生代空间不足时”,所以当“新生代空间不足时”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,顺带收了永久代垃圾

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

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

购买成功后找我返现10元

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

  1. 036、JVM实战总结:糟糕!运行着的线上系统突然卡死无法访问,万恶的JVM GC!

    提醒大家复习时,只看标题进行回想并尝试回答,然后再看内容. 1.前文回顾 前5周分析了JVM核心原理.出现GC的问题情形. 2.基于JVM运行的系统最怕什么? STW 造成的卡顿问题 3.年轻代gc到 ...

  2. JVM面试题(史上最强、持续更新、吐血推荐)

    JVM面试题(史上最强.持续更新.吐血推荐) 文章很长,建议收藏起来慢慢读!疯狂创客圈总目录 语雀版 | 总目录 码云版| 总目录 博客园版 为您奉上珍贵的学习资源 : <尼恩Java面试宝典& ...

  3. JVM面试题(史上最强、持续更新、推荐)

    史上最全 Java 面试题:JVM 篇 社群交流的面试真题 面试真题1:元空间会产生内存溢出么?在什么情况下会产生内存溢出? 具体问题:元空间会产生内存溢出么?在什么情况下会产生内存溢出?. java ...

  4. PMCAFF | 从200块到300万,史上最全自媒体报价单

    作者 | 公关界的007(ID:PRSPY007) 今日"首席娱乐官"撕逼大战,再次让大家把目前聚焦自媒体,仿佛自媒体成了"印钞机",有的高则300万,有的低则 ...

  5. 史上最强 Tomcat8 性能优化实战!

    作者:ThinkWon 链接:blog.csdn.net/ThinkWon/java/article/details/102744033 文章目录 目的 服务器资源 Tomcat配置优化 Linux环 ...

  6. android项目实战博学谷源码_Vue框架:史上最详细的Vue实战项目之喵喵电影(视频+源码)...

    Vue是web前端中重要的框架之一,与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计,Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合.所以,对于web前端开 ...

  7. 【微信小程序】史上最全的《Java面试题及解析》,理论+实战双管齐下!

    前言 Spring 5 于 2017 年 9 月发布了通用版本 (GA),它标志着自 2013 年 12 月以来第一个主要 Spring Framework 版本.它提供了一些人们期待已久的改进,还采 ...

  8. C#200个基础工具类,史上最全快收藏下载

    场景 包含工具类部分如下: CSV文件转换;DataTable转实体;Excel操作类;FTP操作类;Html操作类;IP辅助类;JSON操作;JS操作;URL的操作类;XML操作类;处理多媒体的公共 ...

  9. 【史上最强实战项目合集】java项目20套 +完整版java学习视频

    如果你是初学者,或者是自学者!你可以加小编微信(2782278837)!小编可以给你一些好的建议以及给你(免费)提供学习资料!你在学习上有什么问题都可以咨询小编!小编都会为你解答! 注:本公众号纯属个 ...

最新文章

  1. 字符串类型String总结
  2. DeepMind论文:深度压缩感知,新框架提升GAN性能
  3. cobaltstrike安装_CobaltStrike + Metasploit 组合安装
  4. 计算机第二阶段在线作业冯,中国石油大学(北京)《计算机应用基础》第一次在线作业 2...
  5. js文章QQ空间分享
  6. Memcached 使用 及.NET客户端调用
  7. Android WiFi开发
  8. .NET软件授权管理解决方案Eziriz .NET IntelliLock
  9. paip.php and or 语句用法作用
  10. YOLO算法原理详解
  11. libvlc.java_java – LibVlc android无法加载库
  12. 【附源码】计算机毕业设计JAVA自动化办公系统
  13. 海信100E8K和TCL 98Q10GPRO选哪个好
  14. 【网络工具】使用 iperf测试 udp组播
  15. 计算机组成原理中的直接映像,计算机组成原理--cache存储器的直接映像与变换...
  16. NKOJ 4247 老蒋的数列(乱搞)
  17. 如何实现国外域名调转到国内已备案ip
  18. Javascript_ES5_学习笔记
  19. Linux 下 MQ 的安装
  20. 计算机输入法入门,电脑入门——第章 学习中文输入法.doc

热门文章

  1. linux 文件字典排序,linux - 强制linux排序使用字典顺序 - 堆栈内存溢出
  2. oracle数据库监听问题,分享一个有意思的Oracle19c数据库监听异常
  3. Java垃圾回收GC概览
  4. linux下编译libyuv,linux.mk
  5. pynq 环境搭建_蚂蚁S9矿板ZYNQ7010开发板移植PYNQ_2.5
  6. dqn在训练过程中loss越来越大_深度强化学习——从DQN到DDPG
  7. python实现算法改进_独门秘籍,如何从零开始用Python实现感知算法?
  8. MATLAB中的线性插值
  9. python mssqlserver_python for MSSQLserver
  10. Minio 报错bucket name does not follow Amazon S3 standards