一、为什么要回收垃圾?
如果不进行垃圾回收,内存会很快被消耗完。内存资源非常宝贵,任意分配内存资源而不对内存进行及时的清理回收,会很快耗尽内存。所以要及时的回收垃圾。
二、哪些内存需要被回收?
需要被清理的垃圾是指哪些不可能再被使用的对象,清理掉这些对象就是回收这些对象占用的内存资源。那么要怎样判断一个对象是不是可清理的垃圾呢。
1、引用计数法:
给对象添加一个引用计数器,每当一个引用指向这个对象时计数 器+1,每当一个引用失效时计数器-1,当计数器的数值为0时,说明这个对象没有被引用了,此时这个对象就是待回收的垃圾。但是这种方法不能解决循环引用的问题。
2、可达性分析法
这个算法的原理是通过GC Roots作为起始点,从它往下进行搜索,搜索所走过的路线成为“引用链”,如果一个对象到GC Roots没有任何引用链时,说明这个对象是不可用的。