您的位置:首页 > 编程语言 > Java开发

Java垃圾回收机制——java堆

2016-08-03 16:11 169 查看
堆中的垃圾回收机制分为新生代和老年代。

新生代:新生代的垃圾回收用的是复制算法,给新生代分一块区域存放新new出来的对象,将这块区域分成十份,其中八份为Eden空间,两份为Survivor空间(From Survivor与To Survivor),将新生成的对象放入Eden,若Eden满了可以放From Survivor空间,如果From Survivor空间也被填满就触发Minor GC,标记还存活的对象,并将这些对象存入To Survivor空间,清理掉Eden空间与From Survivor空间的对象,然后将From Survivor空间与To
Survivor空间的名字与功能互换。

老年代:老年代的垃圾回收使用的是标记-整理算法,分出一块区域存放老年代对象,让所有存活对象都都向一端移动,然后清理掉其他空间的对象。

新生代对象如何转换为老年代对象?

1.长期存活对象将进入老年代

每经过一次Minor GC将age加1,当一个对象经过多次(默认15次)Minor GC都没有被清理掉时,将进入老年代。

2.大对象直接进入老年代

当一个对象比较大,新生代内存存放不下该对象时,将直接进入老年代。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 垃圾回收 java堆