垃圾收集机制的原理:找出那些不再使用的变量,然后释放其占用的内存。垃圾收集器会按照固定的时间间隔周期性地执行这一操作。
垃圾收集器必须跟踪哪个变量有用哪个变量没用,对于不再有用的变量打上标记,以备将来收回其占用的内存。
标记清除
GC 会给存储在内存中的变量都给加上标记,然后他会去掉环境变量以及被环境变量引用的变量的标记,而在此之后再被加上标记的变量将被视为准备删除的变量。
引用计数
跟踪记录每个值被引用的次数。当声明了一个变量,并将一个引用类型的值赋给这个变量时,则这个值引用的次数就是1,如果同一个值又赋给了另一个变量,那么这个值就加1 。如果包含这个引用的变量又取得了另外一个值,则这个值得引用次数就减1。当这个值的引用次数变为0时,那就没办法访问这个变量了。这样,当垃圾回收器下次再运行时,它就会释放那些引用次数为0的值所占的内存。当退出域的时候 GC自动把这个变量的引用减1。