对象分配进入Eden和from/to survivor动态过程的疑问

来源:1-9 垃圾回收分代收集算法讲解

juwencheng

2020-07-09 10:07:34

  1. 新对象分配到Eden

  2. 当Eden满了,触发GC

  3. 假如将存活对象拷贝到from survivor中

  4. 清空Eden,继续将新对象放到Eden中

  5. Eden满了,将from survivor和Eden中存活的对象同时拷贝到to survivor中

第5步中,触发GC的话,会同时处理Eden和上一次存放存活对象的区域,理解是否正确?

写回答

2回答

大目

2020-07-09

您好,理解是正确的,点赞👍🏻

1
huwencheng
h 谢谢老师!
h020-07-09
共1条回复

大唐雨夜

2021-12-29

以前做的笔记

1. 对象首先存放到Eden中,当Eden内存满后,垃圾收集线程执行minor gc,通过GC Root进行可达性分析,找到非垃圾对象,复制到Survivor S0区(对象头中分代年龄标记为1),清空Eden区域,Eden又可以存储新对象。

2. 当Eden再次满后,同时对Eden和S0执行minor gc,将非垃圾对象复制到S1(分代年龄加1),清空Eden和S0。S0和S1,同一时间只有一个被使用。

3. 当分代年龄达到15后,对象会被复制到老年代。

4. 当老年代满了,会对年轻代和老年代执行full GC。full GC不起作用,则会OOM。


0

Java架构师-技术专家

千万级电商项目从0到100全过程,覆盖Java程序员不同成长阶段的核心问题与解决方案

2672 学习 · 5839 问题

查看课程