このコードをgoogle chromeデベロッパーコンソールで実行した後、 - js-flags = " - expose-gc"を実行した後、JavaScriptの脆弱性が発生する弱点マップは、aがgcである場合にabへの参照を保持し続ける。JavaScript WeakMapはgc'edオブジェクトを参照し続ける
var a = {listener: function(){ console.log('A') }}
a.b = {listener: function(){ console.log('B') }}
var map = new WeakMap()
map.set(a.b, [])
map.set(a, [a.b.listener])
console.log(map) // has both a and a.b
gc()
console.log(map) // still have both a and a.b
a = undefined
gc()
console.log(map) // only have a.b: why does still have a reference to a.b? Should'nt be erased?
これは私のバグのようです。 'gc()'を複数回実行すると持続しますか?もしそうなら、おそらくV8でそれを報告するべきです。 – Bergi