本文主要是介绍【Android面试八股文】你来说一说Java对象是如何晋升为老年代的?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 一、对象年龄达到阈值
- 1.1 演示过程
- 1.2 结论
- 二、大对象直接进入老年代
- 三、分配担保机制
- 空间分配担保
- 为什么要进行空间担保 ?
- `Minor Gc`后的对象太多无法放入`Survivor`区怎么办?
- 如果`Minor gc`后新生代的对象都存活下来,然后需要全部转移到`老年代`,但是老年代空间不够怎么办?
- 总结
- 1. 大对象直接进入老年代
- 解释
- 机制
- 优点
- 缺点
- 2. 年龄超过阈值
- 解释
- 机制
- 优点
- 缺点
- 3. 动态对象年龄判定
- 解释
- 机制
- 优点
- 缺点
- 4. 年轻代空间不足
- 解释
- 机制
- 优点
- 缺点
- 具体示例
- 分析
一、对象年龄达到阈值
在我的博客 【Android面试八股文】 GC的流程是怎么样的?介绍下GC回收机制与分代回收策略 中有介绍
1.1 演示过程
绝大多数刚刚被创建的对象会存放在 Eden 区。如图所示:
当Eden
区第一次被填满时,会触发一次Minor GC
。Minor GC
会清理新生代中的垃圾对象
首先将Eden
区的垃圾对象回收清除,并将存活的对象复制到 S0,此时 S1是空的。如图所示:
下一次 Eden
区满时,再执行一次GC
垃圾回收。此次会将 Eden
和 S0区
中所有垃圾对象回收清除,并将存活对象复制到 S1
,此时 S0
变为空。如图所示:
这篇关于【Android面试八股文】你来说一说Java对象是如何晋升为老年代的?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!