垃圾收集机制的原理:找出那些不再继续使用的变量,然后释放其占用的内存。
方法一:标记清除
1、垃圾收集器在运行的时候会给存储在内存中的所有变量都加上标记
2、去除掉环境中的变量以及被环境中的变量引用的变量的标记
3、而在此之后,再被加上标记的变量将被视为准备删除的变量
最后,垃圾收集器完成内存清除工作,销毁这些带标记的值
方法二:引用计数
跟踪记录每个值被引用的次数。
当声明了一个变量并将一个引用类型值赋给该变量时,则这个值的引用次数就是1。如果同一个值又被赋给另一个变量,则该值的引用次数加1。相反,如果包含对这个值的引用的变量又取得另一个值,则这个值的引用次数减1。当这个值的引用次数变成0时,则说明没有办法再访问这个值了。
function test(){
var a = {} ; //a的引用次数为0
var b = a ; //a的引用次数加1,为1
var c =a; //a的引用次数再加1,为2
var b ={}; //a的引用次数减1,为1
}