038、JVM实战总结:200小时积累,6小时烹制,史上最强图,图解:大厂面试题,Young GC和Full 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:
图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分别在什么情况下会发生?相关推荐
- 036、JVM实战总结:糟糕!运行着的线上系统突然卡死无法访问,万恶的JVM GC!
提醒大家复习时,只看标题进行回想并尝试回答,然后再看内容. 1.前文回顾 前5周分析了JVM核心原理.出现GC的问题情形. 2.基于JVM运行的系统最怕什么? STW 造成的卡顿问题 3.年轻代gc到 ...
- JVM面试题(史上最强、持续更新、吐血推荐)
JVM面试题(史上最强.持续更新.吐血推荐) 文章很长,建议收藏起来慢慢读!疯狂创客圈总目录 语雀版 | 总目录 码云版| 总目录 博客园版 为您奉上珍贵的学习资源 : <尼恩Java面试宝典& ...
- JVM面试题(史上最强、持续更新、推荐)
史上最全 Java 面试题:JVM 篇 社群交流的面试真题 面试真题1:元空间会产生内存溢出么?在什么情况下会产生内存溢出? 具体问题:元空间会产生内存溢出么?在什么情况下会产生内存溢出?. java ...
- PMCAFF | 从200块到300万,史上最全自媒体报价单
作者 | 公关界的007(ID:PRSPY007) 今日"首席娱乐官"撕逼大战,再次让大家把目前聚焦自媒体,仿佛自媒体成了"印钞机",有的高则300万,有的低则 ...
- 史上最强 Tomcat8 性能优化实战!
作者:ThinkWon 链接:blog.csdn.net/ThinkWon/java/article/details/102744033 文章目录 目的 服务器资源 Tomcat配置优化 Linux环 ...
- android项目实战博学谷源码_Vue框架:史上最详细的Vue实战项目之喵喵电影(视频+源码)...
Vue是web前端中重要的框架之一,与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计,Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合.所以,对于web前端开 ...
- 【微信小程序】史上最全的《Java面试题及解析》,理论+实战双管齐下!
前言 Spring 5 于 2017 年 9 月发布了通用版本 (GA),它标志着自 2013 年 12 月以来第一个主要 Spring Framework 版本.它提供了一些人们期待已久的改进,还采 ...
- C#200个基础工具类,史上最全快收藏下载
场景 包含工具类部分如下: CSV文件转换;DataTable转实体;Excel操作类;FTP操作类;Html操作类;IP辅助类;JSON操作;JS操作;URL的操作类;XML操作类;处理多媒体的公共 ...
- 【史上最强实战项目合集】java项目20套 +完整版java学习视频
如果你是初学者,或者是自学者!你可以加小编微信(2782278837)!小编可以给你一些好的建议以及给你(免费)提供学习资料!你在学习上有什么问题都可以咨询小编!小编都会为你解答! 注:本公众号纯属个 ...
最新文章
- 字符串类型String总结
- DeepMind论文:深度压缩感知,新框架提升GAN性能
- cobaltstrike安装_CobaltStrike + Metasploit 组合安装
- 计算机第二阶段在线作业冯,中国石油大学(北京)《计算机应用基础》第一次在线作业 2...
- js文章QQ空间分享
- Memcached 使用 及.NET客户端调用
- Android WiFi开发
- .NET软件授权管理解决方案Eziriz .NET IntelliLock
- paip.php and or 语句用法作用
- YOLO算法原理详解
- libvlc.java_java – LibVlc android无法加载库
- 【附源码】计算机毕业设计JAVA自动化办公系统
- 海信100E8K和TCL 98Q10GPRO选哪个好
- 【网络工具】使用 iperf测试 udp组播
- 计算机组成原理中的直接映像,计算机组成原理--cache存储器的直接映像与变换...
- NKOJ 4247 老蒋的数列(乱搞)
- 如何实现国外域名调转到国内已备案ip
- Javascript_ES5_学习笔记
- Linux 下 MQ 的安装
- 计算机输入法入门,电脑入门——第章 学习中文输入法.doc
热门文章
- linux 文件字典排序,linux - 强制linux排序使用字典顺序 - 堆栈内存溢出
- oracle数据库监听问题,分享一个有意思的Oracle19c数据库监听异常
- Java垃圾回收GC概览
- linux下编译libyuv,linux.mk
- pynq 环境搭建_蚂蚁S9矿板ZYNQ7010开发板移植PYNQ_2.5
- dqn在训练过程中loss越来越大_深度强化学习——从DQN到DDPG
- python实现算法改进_独门秘籍,如何从零开始用Python实现感知算法?
- MATLAB中的线性插值
- python mssqlserver_python for MSSQLserver
- Minio 报错bucket name does not follow Amazon S3 standards