問題タブ [weakmap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
516 参照

javascript - 「循環」参照はWeakMapの「到達可能性」として扱われますか?

指定されたコードについて、唯一のweakMap項目が到達可能と見なされるかどうか? したがって、ガベージコレクションされるかどうか。

PS: この質問は、特定の実装ではなく、仕様の観点から尋ねられます。

0 投票する
1 に答える
870 参照

javascript - ECMA6 での WeakMap の動作が理解できない

ECMA6 で WeakMap を使用しているときに、奇妙なシナリオに直面しています。私は次のようなクラスを書いています

このクラスを呼び出してオブジェクトをインスタンス化する

アウトプットはこちら

WeakMap のこの動作について明確にすることはできません。

0 投票する
2 に答える
481 参照

javascript - WeakMap (a, b) が必要 -> c

メモ化された fn があります。ここで、fn は 2 つの入力参照によってメモ化されています。

私が必要とする行動はNewRefCursor(a, b) === NewRefCursor(a, b). aまたはbがガベージ コレクションされると、カーソルもガベージ コレクションされる必要があります。

refToHashES6WeakMapを使用するもう 1 つのメモ化された関数で、参照が引き続き GC に許可されるようにします。

NewRefCursorキャッシュ ヒットを決定するために 2 つのパラメーターを使用するため、メモ化するのが非常に難しく、 と互換性がなくWeakMap、参照が GC されるのを防ぐことができます。私は、入力オブジェクトにプライベート フィールドを追加したり、確率的なデータ構造を作成したりするなど、あらゆる種類の策略を受け入れます。このリークは解決する必要があります。私がこれまでに持っている唯一の解決策は、キャッシュ サイズを制限するパラメーターを memoize に追加し、そのパラメーターをアプリごとに調整することです。全体。

0 投票する
2 に答える
1680 参照

javascript - es6 の Map および WeakMap コレクションのガベージ コレクション

WeakMap の説明を読んでいたところ、次のように書かれていました。

ネイティブの WeakMap では、主要なオブジェクトへの参照は「弱く」保持されます。つまり、オブジェクトへの参照が他にない場合でも、ガベージ コレクションは妨げられません

これを読んで、JavaScript のガベージ コレクションを利用しようとしている場合に WeakMap が使用されていることがわかりました。私が根本的に理解していないのは、私が太字にした行です。

通常の Map では、それらへの参照を持たないオブジェクトがガベージ コレクションされないのはなぜですか? これにはどのような利点がありますか?通常のマップから明示的に削除する必要がありますか?

0 投票する
1 に答える
37 参照

javascript - EcmaScript から WeakMap を使用する場合のタイミングの問題に関する考慮事項

JavaScript での WeakMap の適切な使用法は何ですか? 使用時にどのようなタイミングの問題が発生する可能性がありますか? 特に、次のような状況ではどうなるのだろうと思っています。

GC は WeakMaps にどのように影響しますか?

更新:悪いことに、WeakMap で文字列をキーとして使用できないという事実を見逃しました。その事実を考慮に入れると、私の質問はうまくいきません。

0 投票する
1 に答える
95 参照

javascript - WeakMap は親子関係のメモリ リークから私を救ってくれますか?

こんな感じの親子関係です。

  1. parentおよびへの他のすべての参照childが削除されると、メモリ リークが発生しますか? 残っている参照のみが相互になります。

  2. 循環参照によるメモリリークが発生する場合、私をWeakMap救ってくれますか?

を使用してWeakMap

parentMapそれ以来、への参照があり、 への参照があるparentparent思いますchild。まだ循環参照があります。

0 投票する
2 に答える
1561 参照

javascript - WeakMap の clear() メソッドが非推奨になったのはなぜですか?

私は JavaScript でWeakMapclearを使用してきましたが、ドキュメントを確認した後、このメソッドがECMAScript 6 から非推奨/削除されていることに気付きました。

これの理由は何ですか?次のような明確な機能を強制する理由:

0 投票する
1 に答える
437 参照

javascript - キーとしてオブジェクトがある場合、WeakMap で Map を使用するのはいつですか?

オブジェクトをマップのキーとして使用したことが数回ありましたが、その特定のオブジェクトに関するメタデータを格納するために使用しました。WeakMapキーとして使用していたオブジェクトがガベージ コレクションされると、マップ内のエントリが自動的にガベージ コレクションされるという利点があるため、これには常に a を使用してきました。

メタデータの保存は、オブジェクトをマップのキーとして考えることができる唯一の使用例ですが、オブジェクトをキーとして使用する他の使用例があるかどうかに興味がありMapますWeakMap

0 投票する
1 に答える
1106 参照

javascript - JavaScript WeakMap が gc されたオブジェクトを参照し続ける

--js-flags="--expose-gc" を指定して実行している Google Chrome 開発者コンソールでこのコードを試した後、JavaScript のウィークマップで経験しています。 GCした。