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の処理を余儀なくされるようなサディスティックな割り当てループを実行することです。それがまだあれば、何かがそれを保持しています。 –