JVM 中一次完整的 GC 流程是什么样子的,对象如何晋升到老年代,
一次完整的gc过程
gc是通过垃圾收集器来实现的,现代垃圾收集器大部分都是基于分代收集理论设计的,也就是将对象划分为新生代,老年代。其中新生代分为Eden区和两块Survivor区,比例为8:1:1。
每次分配内存都只会使用Eden区和一块Survivor区,对象默认是放在Eden区,但是如果对象太大了,Eden区放不下,那么就会放入到老年代中,当发生gc时,就会把存活对象放到另一块Survivor上,如果这块survivor区不够,那么依赖老年代进行担保,假设这块为s0区,另一块是s1区。下一次Eden区满的时候,进行一次MinorGc,会将Eden区和S0区存活的对象放到s1中,如果s1,放不下就会放到老年代中。然后循环往复,始终保证s0和s1中又一个区域是空的,一个对象默认最多经历15次gc,一旦超过15次gc就会放入到老年代中。但是如果在Survivor空间中,相同年龄的对象超过Survivor空间的一半,并不会等到对象的年龄到达15才进入老年代,这些相同年龄的对象会直接进入到老年代中
对象晋升到老年代一共有四种情况
- 对象太大,Eden放不下
- 存放存活对象的Survivor区太小,不足以存下存活对象
- 经历超过默认15次gc或者设定的
- Survivor空间中相同年龄的所有对象总和大于等于Survivor空间的一半,那么这些对象就会直接进入到老年代中
JVM 中一次完整的 GC 流程是什么样子的,对象如何晋升到老年代,相关推荐
- JVM的内存结构,Eden和Survivor比例;JVM中一次完整的GC流程,对象如何晋升到老年代,说说你知道的几种主要的JVM参数;CMS 常见参数解析;.你知道哪几种垃圾收集器,各自的优缺点
47.JVM的内存结构,Eden和Survivor比例 49.JVM中一次完整的GC流程是怎样的,对象如何晋升到老年代,说说你知道的几种主要的JVM参数 50.-XX:+CMSScavengeBefo ...
- jvm对象从新生代到老年代_深入理解jvm内存模型以及gc原理
整体架构 Jvm = 类加载器 + 执行引擎 + 运行时数据区域 类加载器 ● 作用 类加载器是将编译好的class文件加载到内存中,并进行验证.初始化等步骤,形成能被jvm直接使用的类型. ● 加载 ...
- jvm对象从新生代到老年代_JVM内存管理、JVM垃圾回收机制、新生代、老年代以及永久代...
内存模型 JVM运行时数据区由程序计数器.堆.虚拟机栈.本地方法栈.方法区部分组成,结构图如下所示. JVM内存结构由程序计数器.堆.栈.本地方法栈.方法区等部分组成,结构图如下所示: 1)程序计数器 ...
- JVM 晋升到老年代的动态年龄判断
先说结论,方便复习: 新的动态年龄判断算法:Survivor区的对象年龄从小到大进行累加,当累加到 X 年龄时的总和大于50%(可以使用-XX:TargetSurvivorRatio=? 来设置保留多 ...
- 深入理解JVM—满足什么条件的对象才会进入老年代?
我们可能知道jvm调优,但是jvm调优到底是为了调整什么呢?或者说是优化什么?可能并不是特别清楚. 其实很简单,就是为了减少STW(stop the world),什么会造成这一现象呢,学过gc的应该 ...
- Major GC 是清理老年代。 Full GC 是清理整个堆空间—包括年轻代和老年代。
Major GC 是清理老年代. Full GC 是清理整个堆空间-包括年轻代和老年代.
- jvm性能调优实战 - 25模拟在Young GC过后因为放入下Survivor区域直接进入老年代
文章目录 Pre Code GC日志 GC日志分析 小结 思考 Pre 上篇文章给大家分析了一下对象是如何通过动态年龄判定规则进入老年代的,同时让大家自己动手去模拟写代码体验一下对象达到15岁之后自动 ...
- jvm对象从新生代到老年代_一文搞懂JVM新生代、老年代和永久代
Java堆是垃圾收集器管理的主要区域,因此很多时候也被称为"GC堆". 从内存回收角度看,由于现在收集器基本都采用分代收集算法,所以Java堆中还可以细分为:新生代和老年代.再细致 ...
- jvm配置参数,查看大对象直接分配到老年代
看下如下代码: 配置参数 -Xms60m -Xms60m -XX:NewRatio=2 -XX:SurvivorRatio=8 -XX:+PrintGCDetails 运行后看下如下,可以看到ParO ...
最新文章
- 环境微生物期刊—mBio介绍
- POJ1163 数字三角形
- 蓝桥杯第六届国赛JAVA真题----表格计算
- 首个月球旅客!SpaceX将送普通人上太空,马斯克暗示首单来自日本
- 谈谈未来简书首页拒稿界面的设计思路
- SQL:postgresql中,将geometry转换为geojson数据
- Hibernate笔记——hql总结
- 互换元素(swap,swap_ranges)
- elasticsearch启动报错:master not discovered yet
- 深圳保障性住房【公租房、安居房、人才房】简单说明
- python猴子偷桃_【Python】每日一练:猴子偷桃
- Android常用高质量框架
- java 线框图_你真的搞懂什么是线框图,什么是原型图了吗?
- 你不得不掌握的前端提交规范(git cz)
- 追忆第一次南下深圳有哪些重大抉择(上)?
- 你安全吗?丨黑客掌握的翻垃圾技术有哪些?大家要警惕!
- 显示用户证件号码前后四位问题
- leaflet地图联动的简单实现
- windows7微软官方_Microsoft Windows 7 | 第4部分
- 开启服务器ping协议,服务器开启ping
热门文章
- 收藏!最全的可视化学入门算法教程(Python实现)
- 华为RS 5.IP编址之VLSM
- 职业教育的春天 ——职业教育系列行研报告(一)
- 串应用- 计算一个串的最长的真前后缀
- DataFrame创建数据
- 获取krpano点坐标 ath-x atv-y
- 致远项目管理SPM系统之进度控制
- python中answer是什么意思_用Python实现的quot;石头,剪刀,布quot; - The answer to everything - ITeye博客...
- 快播王欣最新项目大揭秘!
- vue使用echarts图表小结