定义了JS的垃圾回收机制,防止内存泄露。内存泄漏的意思是,当一块内存不再需要时,该内存仍然存在。垃圾回收机制是断断续续、不规律地搜索不再使用的变量,并释放它们指向的内存。变量生命周期当一个变量的生命周期结束时,它指向的内存应该被释放。JS有两种变量,全局变量和函数中生成的局部变量。局部变量的生命周期在函数执行后结束。这时候它引用的内存就可以释放了(也就是垃圾回收),但是一个全局变量的生命周期会一直持续到浏览器关闭页面。垃圾回收的方式是标记和清除。大多数浏览器以这种方式执行垃圾收集。当变量进入执行环境时(函数中声明的变量),垃圾回收器将其标记为“进入环境”,当变量离开环境(函数执行结束)时标记为“离开环境”,而离开环境后留下的变量就是需要删除的变量。标记方法是变量,可以是特殊位的反转,也可以是维护一个链表等。垃圾回收器标记内存中的所有变量,然后去除环境变量和环境变量引用的变量的标记。这之后添加的标记变量是需要回收的变量,因为环境中的变量不能再访问这些变量。这种计数清零的方式往往会造成内存泄漏,低版本的IE采用这种方式。该机制是跟踪对值的引用数。当声明一个变量并为该变量赋值一个引用类型时,该值的引用次数加1,当该变量指向另一个值时,该值的引用次数减1。当该值的引用计数为0时,就会被回收。//此时不会清除obj2,因为obj1和obj2相互引用varobj1={b:obj2}varobj2={c:obj1}obj2=null
