Java对象会被虚拟机分为 新生代 和 老年代
当对象被创建后,首先会被分配在伊甸园中
当新生代内存空间不足,会进行minor gc回收算法,首先判断伊甸园中的对象是否有 gc root标记,若没有,则直接kill该对象,若有标记,则 利用 copy算法 将对象赋值到 to 中,并且对象年龄加一,然后交换 from 和to ,
这里用 from 和 to的原因是,当执行gc回收时,若只有一个区域,那么被杀死的对象空间不会清除,会导致内存不连续出现碎片,利用copy算法可以解决内存不连续问题
from中间白色空白部分就是碎片,导致内存不连续,不能存放较大数据
当某个对象年龄到达15岁时,会进入老年代
当 新生代内存空间不足,且老年代也无法容纳更多对象时会先尝试 minor gc 回收,若空间仍不足,则进行 full gc 回收