垃圾回收算法
GC的算法有哪些?
引用计数算法
复制算法
标记压缩算法
标记清除算法
引用计数算法(比较low,不高效,用的少)
解释:在堆中,对象1使用1次,B使用2次,C使用0次...
由于计数器也是有消耗的,如果是一个循环程序,就不能执行下去
对象C不再使用所以将C清理出去,别的对象由于还会使用,则存活
复制算法
优点:没有内存碎片;
缺点:浪费内存空间:多了一半幸存区控件永远是空的to;
标记清理算法
优点:不需要额外的空间;
缺点:两次扫描,严重浪费时间,会产生内存碎片;
标记压缩算法
总结:
内存效率:复制算法>标记清除算法>标记压缩算法(时间复杂度)
内存整齐度:复制算法=标记压缩算法>标记清除算法
内存利用率:标记压缩算法=标记清除算法>复制算法
没有最优算法,只有最适合的算法
分代GC算法:
年轻代:存活率低,采用复制算法
老年代:区域大,存活率高,采用标记清除压缩算法