js垃圾回收的机制

1、js垃圾自动回收机制

垃圾回收:即释放掉js中数组、字符串、对象等的内存
自动回收机制:即垃圾收集器会按照固定的时间间隔或代码执行中预定的收集时间,周期性地执行一些操作=>找出不再继续使用的变量,然后释放其占用的内存。

垃圾回收的方法常有:标记清除法、引用计数法。

2、标记清除

标记清除理解:根据不可清除的变量(如:全局变量)等形成一个个根节点,在根据一个个根节点向下衍生可以访问到(连接到)的变量,对这些可访问的进行标记,同时清除那些不可访问的变量

例如:

  1. var a = { name:'a' };a引用了name为'a'的对象;
  2. var b = a;b也引用了name为'a'的对象
  3. a = null;a不再引用对象,但此时b可访问到对象,所以对象不可删除;
  4. b = null;b也不再引用对象,所以name为'a'的对象没办法访问到,对象将被清除内存;

3、引用计数

概念:用计数的含义是跟踪记录每个值被引用的次数。当声明了一个变量并将一个引用类型值赋给该变量时,则该值的引用次数就是1;
如果同一个值又被赋给另一个变量,则该值的引用次数加1;如果包含对该值引用的变量又取得了另外一个值,则该值的引用次数减1。
当该值的引用次数变为0时,则可以回收其占用的内存空间。当垃圾回收器下一次运行时,就会释放那些引用次数为0的值所占用的内存。
原文地址:https://www.cnblogs.com/Zxq-zn/p/11969094.html