老年代和新生代
新生代适合采用复制算法进行垃圾回收,使用的是minorgc.
老年代适合采用标记整理算法,使用的是majorgc工具.
复制算法
复制算法
新生代分为eden,servicorFrom,servicorTo
把eden,servicorFrom的可存活对象复制到servicorTo中,如果servicorTo中空间不足或者对象达到老年代标准,
便直接把对象放入老年代,再将eden,servicorFrom中的对象清空,最后把servicorTo中对象拷贝回eden.
致此完成一次垃圾回收.
注: 此算法适合新生代,因为新生代存活对象比较少,来回复制资源消耗不是很大,
如果是老年代,便不适合此算法,因为老年代比较稳定,存活对象较多,来回复制效率低.
标记整理算法
标记整理算法
先将老年代中的存活对象进行标记,然后回收所用为标记的对象,在对空间进行整理.
老年代比较稳定,因此majorgc执行次数很少,一般是先执行minorgc执行后,老年代空间不足时
,执行majorgc进行垃圾回收.对空间进行整理是为了防止内存空间碎片化.
标记清除算法
标记清除算法
可能产生大量内存碎片