对象分配进入Eden和from/to survivor动态过程的疑问
来源:1-9 垃圾回收分代收集算法讲解
juwencheng
2020-07-09 10:07:34
新对象分配到Eden
当Eden满了,触发GC
假如将存活对象拷贝到from survivor中
清空Eden,继续将新对象放到Eden中
Eden满了,将from survivor和Eden中存活的对象同时拷贝到to survivor中
第5步中,触发GC的话,会同时处理Eden和上一次存放存活对象的区域,理解是否正确?
2回答
您好,理解是正确的,点赞👍🏻
大唐雨夜
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。
相似问题