4
我在使用JavaScript弱點映射時,在谷歌瀏覽器開發人員控制檯中嘗試此代碼後,運行時使用--js-flags =「 - expose-gc」,我不明白爲什麼如果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?
這看起來像一個bug給我。如果你多次使用gc(),它會持久嗎?如果是這樣,那麼你應該用V8報告它。 – Bergi