未收集WeakMap密钥

时间:2018-09-15 17:25:55

标签: javascript garbage-collection weak-references

const frame = {
    key: {}
};

const map = new WeakMap();
map.set(frame.key, 'value');
console.log(map); // { {} -> 'value' }

delete frame.key;
// Force GC
console.log(map); // { {} -> 'value' }

在这样的代码段中,为什么未收集key?我以为一旦我delete keyframe将停止保留它,并且其引用计数将变为零,因此触发GC或至少由我手动触发的GC收集。 / p>

我已通过进入about:memory并单击可用内存框中的所有按钮来强制在Firefox中使用GC。

我认为地图要么为空,要么至少在开发人员工具中对其进行检查时不会显示该密钥作为实时参考。但这不是正在发生的事情。

我可以确认开发人员工具中的视图没有过时,因为我可以通过entries[0]向下钻取地图对象,然后右键单击key的值,选择存储为全局对象对象,当我评估 时,我得到了正常检查,没有错误,没事。

0 个答案:

没有答案
相关问题