年轻代分Eden区,Servior区。Servior区又分为From space区和To Space区。Eden区和Servior区的内存比为8:1。默认值是保持为堆的1/15.可以通过-Xmn参数设置年轻代为固定大小。
应用程序只能使用一个新生代和复活代,当发生初级回收时,gc挂起程序,然后将新生代和复活代中的存货对象复制到另外一个复活代中,然后一次性消除新生代和复活代,将原来的非复活代标记成活动复活代。将在指定次数(默认15)回收后仍然存在的对象移动到老年代中,初级回收后,得到一个空的可用的新生代。
Full GC 是发生在老年代的垃圾收集动作,所采用的是标记-清除算法。
Minor GC ,Full GC 触发条件
Minor GC触发条件:当Eden区满时,触发Minor GC。
Full GC触发条件:
(1)调用System.gc时,系统建议执行Full GC,但是不必然执行
(2)老年代空间不足
(3)方法区空间不足
(4)通过Minor GC后进入老年代的平均大小大于老年代的可用内存
(5)由Eden区、From Space区向To Space区复制时,对象大小大于To Space可用内存,则把该对象转存到老年代,且老年代的可用内存小于该对象大小