科技达人说|写得非常好,图解Java垃圾回收机制( 二 )
世代垃圾收集过程
现在你已经理解了为什么堆被分成不同的代 , 现在是时候看看这些空间是如何相互作用的 。 后面的图片将介绍JVM中的对象分配和老化过程 。 关注Java技术栈微信公众号 , 回复:JVM46 , 可以获取一份超全JVM调优攻略 。
首先 , 将任何新对象分配给eden空间 。 两个survivor空间都是空的 。
文章图片
当eden空间填满时 , 会触发轻微的垃圾收集 。
文章图片
引用的对象被移动到第一个survivor空间 。 清除eden空间时 , 将删除未引用的对象 。
文章图片
在下一次MinorGC中 , Eden区也会做同样的操作 。 删除未被引用的对象 , 并将被引用的对象移动到Survivor区 。 然而 , 这里 , 他们被移动到了第二个Survivor区(S1) 。
此外 , 第一个Survivor区(S0)中 , 在上一次MinorGC幸存的对象 , 会增加年龄 , 并被移动到S1中 。 待所有幸存对象都被移动到S1后 , S0和Eden区都会被清空 。 注意 , Survivor区中有了不同年龄的对象 。
文章图片
在下一次MinorGC中 , 会重复同样的操作 。 不过 , 这一次Survivor区会交换 。 被引用的对象移动到S0, 。 幸存的对象增加年龄 。 Eden区和S1被清空 。
文章图片
此幻灯片演示了promotion 。 在较小的GC之后 , 当老化的物体达到一定的年龄阈值(在该示例中为8)时 , 它们从年轻一代晋升到老一代 。
文章图片
随着较小的GC持续发生 , 物体将继续被推广到老一代空间 。
文章图片
所以这几乎涵盖了年轻一代的整个过程 。 最终 , 将主要对老一代进行GC , 清理并最终压缩该空间 。
文章图片
原文:https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html
译文:https://www.oschina.net/translate/java-gc
【科技达人说|写得非常好,图解Java垃圾回收机制】翻译:Rhys_Lee,AzureSora,溪边九节,小小菜鸟鸡
推荐阅读
- 科技一哥|荣耀30青春版图集赏析:触觉与视觉的完美享受
- 科技犬君|vs 索尼A9G 谁强?,上半年用户喜爱手机盘点;小米电视大师65英寸OLED
- 精选泛科技|结果如何?,一加8续航遭质疑:上半年最全机型横评出炉
- HAO懂科技|小米“神机”要来了?,小米正式“反击”!上下对折+骁龙865
- 阿拉图图科技说|而给华为仅仅是800万枚!,台积电为苹果准备8000万枚芯片
- 网罗说科技|三星note10一夜成“中端机”,还是256GB+3500mAh,三星扛不住了
- 科技数码迷|华为+荣耀别不报!入门级机型你们真没有Redmi良心
- 「小米科技」小米11Pro宣布新技术!首发骁龙875+屏下镜头,米粉:价格有点小贵
- 小熊科技|你会考虑吗?,三星顶级旗舰清仓!5G网络+45W快充+2k屏幕
- 简简科技|联想:国内同步上市,支持5G,界读丨摩托罗拉折叠手机Razr2曝光