GC的产生过程


1)新生成的对象在Eden区完成内存分配
     2)当Eden区满了,再建立对象,会由于申请不到空间,触发minorGC,进行young(eden+1survivor)区的垃圾回收。(为何是eden+1survivor:两个survivor中始终有一个survivor是空的,空的那个被标记成To Survivor)
     3)minorGC时,Eden不能被回收的对象被放入到空的survivor(也就是放到To Survivor,同时Eden确定会被清空),另外一个survivor(From Survivor)里不能被GC回收的对象也会被放入这个survivor(To Survivor),始终保证一个survivor是空的。(MinorGC完成以后,To Survivor 和 From Survivor的标记互换)
     4)当作第3步的时候,若是发现存放对象的那个survivor满了,则这些对象被copy到old区,或者survivor区没有满,可是有些对象已经足够Old(经过XX:MaxTenuringThreshold参数来设置),也被放入Old区
     5)当Old区被放满的以后,进行完整的垃圾回收,即 Full GC对象