堆的内存结构
第一次new出对象(这里不讨论分配在栈上的对象),普通对象放进eden区,对象很大就直接放进老年区(tenured)
第一次GC,eden中没有被回收的对象 放进survivor①中(使用copying算发)
第二次GC,将survivor①中存活的对象复制到survivor②中,这时候如果eden中有存活的对象 直接 放到survivor②中
第三次GC,将survivor②中存活的对象复制到survivor①中,这时候如果eden中有存活的对象 直接 放到survivor①中
经过多次GC,都没有被GC掉的对象 放到老年区