代码之家  ›  专栏  ›  技术社区  ›  nick zoum

javascript违背承诺或对象何时被垃圾回收

  •  0
  • nick zoum  · 技术社区  · 6 年前

    我在测试 promises garbage collection 根据这个 article A. promise garbage collected WeakMap 用于检查,因为它不应干扰GC。

    var map = new WeakMap();
    map.set(new Promise(function() {}), "test");
    
    function doCheck() {
      console.log(map);
    }

    我在chrome上测试了上面的代码,地图上仍然有对承诺的引用。是我对 上课错了吗?如果没有,为什么承诺没有兑现?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Rakesh Makluri    6 年前

    大多数Javascript引擎使用标记和扫描算法来检查对象是否需要进行垃圾收集。

    (在JavaScript中,根是全局对象)。周期性地 从根开始,垃圾收集器将

    此外,map对象保存对对象的引用。并且没有其他引用promise对象,JS引擎应该在下一个垃圾收集周期中清除promise对象。

    当我第一次调用doCheck()时,map引用了promise。但当我第二次调用时,它是空的。

    enter image description here