三、有哪些垃圾回收算法?
1、标记-清除算法
将无用的对象做标记,然后进行清除。这种算法实现简单,不需要移动对象,但是标记和清除效率不高,还会在内存中产生许多不连续的存储空间,这种算法无法清除垃圾碎片。
2、复制算法
在内存中开辟出两块同样大小的内存空间,使用其中一块,清理垃圾时,将使用这一块内存中存活的对象复制到另外一块内存中去,然后清除原来已使用的那一块的垃圾,如此循环。这种算法效率高,也没有垃圾碎片,但是内存的使用效率低,只有原来的一半。
3、标记-整理算法
在内存中标记出无用的对象,将存活的对象往内存的一个方向移动,再将这一个方向边界以外的其他对象清除。这种方式解决了内存碎片的问题,但是需要移动对象,一定程度降低了效率。
4、分代算法
将对象存活的周期将期分为新生代和老年代,新生代通常采用复制算法,老年代通常采用标记整理算法。