js中内存的生命周期:
内存分配:
变量、函数等声明时
var a=2
内存使用:
使用变量或函数时
var a=2// 使用变量console.log(a)function test(){console.log("test function")}// 使用函数test()
内存回收:
变量或函数不再使用时,会被GC(垃圾回收机制)进行回收,JS中的垃圾回收机制有以下两种:
引用计数法:
引用计数的含义是跟踪记录每个值被引用的次数。
当声明了一个变量并将一个引用类型赋值给该变量时,则这个值的引用次数就是1。相反,如果包含对这个值引用的变量又取得了另外一个值,则这个值的引用次数就减1。当这个引用次数变成0时,则说明没有办法再访问这个值了,因而就可以将其所占的内存空间给收回来。这样,垃圾收集器下次再运行时,它就会释放那些引用次数为0的值所占的内存。
标记清除法:
从根出发,可达到对象标记为不需要清除对象,不可到达对象即标记为需要清除的对象,垃圾回收机制在运行时,会把标记清除的对象进行回收,进行一轮回收后,所有标记全部清除,然后重复。
