ECMAScript 6引入了弱地图,可用Node.JS v0.11.3和--harmony
标志提供。考虑以下。了解弱地图
let weakMap = WeakMap();
let key = [];
let rubbish = 'fish cans';
weakMap.set(key, rubbish);
rubbish = 'empty bottle';
// Prints "fish cans"
console.log(weakMap.get(key));
我的印象是,弱的地图,从关键值的参考是弱下,这样,如果该值的唯一引用是关键,那么值不再被访问。
为什么然后值'fish cans'
仍然可以访问,而不是垃圾收集?变量rubbish
不再引用它,并且从key
到'fish cans'
的引用是弱,即从垃圾收集器的观点来看是不存在的。我错过了什么?
我猜测值* still *可以被访问,只是因为垃圾人没有通过街道。换句话说,也许如果你尝试了一段时间后不起作用? –
一种方法来检查是否是这种情况将运行一个虐待循环的分配,其中的引擎将被迫GC填补。如果它仍然存在,那么有东西持有它。 –