1.对象会优先分配在堆的Eden区上面,如果Eden区的内存不足的话,将会触发一次yuoung gc
2.大对象将直接进入老年代中(指的是那种很长的字符串或者数组),经常出现大对象会导致内存还有不少空间时就提前触发垃圾收集。虚拟机中提供了一个参数用来设置,超过这个设置值的对象就会直接在老年代中分配,这样做避免在eden区与两个survior区中发生大量的复制。
3.长期存活的对象将会直接进入老年代,虚拟机为每个对象定义了一个年龄计数器,当发生第一次young gc的时候,存活的对象会进入survior区,之后每进行一次young gc 年龄加1,达到一定值时,则进入老年代。
4.动态判断对象的年龄。如果survior区中有相同年龄的对象的总和大于survior区内存一半后,这些对象会进入老年代
5.空间分配担保:老年代的连续空间大于新生代对象总大小或历次晋升的平均大小,就会进行young gc 否则,full gc.