js中内存的生命周期:

内存分配:

变量、函数等声明时

  1. var a=2

内存使用:

使用变量或函数时

  1. var a=2
  2. // 使用变量
  3. console.log(a)
  4. function test(){
  5. console.log("test function")
  6. }
  7. // 使用函数
  8. test()

内存回收:

变量或函数不再使用时,会被GC(垃圾回收机制)进行回收,JS中的垃圾回收机制有以下两种:

引用计数法:

引用计数的含义是跟踪记录每个值被引用的次数。
当声明了一个变量并将一个引用类型赋值给该变量时,则这个值的引用次数就是1。相反,如果包含对这个值引用的变量又取得了另外一个值,则这个值的引用次数就减1。当这个引用次数变成0时,则说明没有办法再访问这个值了,因而就可以将其所占的内存空间给收回来。这样,垃圾收集器下次再运行时,它就会释放那些引用次数为0的值所占的内存。

标记清除法:

  1. 从根出发,可达到对象标记为不需要清除对象,不可到达对象即标记为需要清除的对象,垃圾回收机制在运行时,会把标记清除的对象进行回收,进行一轮回收后,所有标记全部清除,然后重复。