問題タブ [weakhashmap]

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 に答える
138 参照

java - WeakReferences、Weakhashmaps、softreferences は何に使用されますか?

WeakReferences の用途を説明してください。私は通常 Java の概念を理解していますが、これは私に問題を引き起こしています。

WeakReferences が何であるかは理解していますが、その使用方法と性質は頭の中で少し曖昧です。WeakReferences の使用が必要になる正しいシナリオを視覚化できません。

WeakHashMap は、null キーを含む行が自動的に削除される WeakReferences に関連していることも知っています。どこかに WeakHashMap があり、他のプロセスがキーを無効にし、WeakHashMap がその行を削除することでその日を節約できるということを視覚化できません。

また、誰もが参照しているこの記事には、私が理解するのに役立つケーススタディはありません。

誰かがシナリオを考え出して、これを理解してくれるなら、本当に感謝しています.

0 投票する
5 に答える
1726 参照

java - WeakHashMap の使用法?

WeakHashMap は、対応するキーがプログラムのどのセクションからも参照されなくなった場合に、値オブジェクトのメモリを Grabage Collector によって再利用できる Map インターフェイスの実装です。そのため、キーがプログラムで使用されなくなった場合。その Entry オブジェクトは、その使用法に関係なくガベージ コレクションされます。ここまでクリア

これは、キーが参照されなくなっても値オブジェクトが HashMap に残る HashMap とは異なります。値を削除するには、HashMap オブジェクトで remove() メソッドを明示的に呼び出す必要があります。remove を呼び出すと、エントリがマップから削除されるだけです。GC の準備ができているかどうかは、プログラムのどこかでまだ使用されているかどうかによって異なります。

上記で説明したこのコーディング例を見つけてください

私の理解によると、HashMap に対する WeakHashMap の使用

私の理解では、プログラムのどのセクションでもキーが参照されなくなったときに、値オブジェクトがGrabage Collectorによって確実に回収されるようにしたい場合にのみ、WeakHashMapを使用する必要があります。これにより、プログラムのメモリが効率的になります。私の理解は正しいですか?

JavaDocsに従って WeakHashMap を使用すると、このステートメントを見つけることができます

このクラスは主に、equals メソッドが == 演算子を使用してオブジェクトの同一性をテストするキー オブジェクトで使用することを目的としています。

上記のステートメントの意味と、それが WeakHashMap の使用法に関する私の理解とどのように対照的であるかがわかりませんでした。実際、このステートメントが WeakHashMap の使用にどのように関連しているかわかりませんでしたか?

更新:- 以下のステートメントをさらに注意深く読んで、javadocs

WeakHashMap のエントリは、そのキーが通常使用されなくなったときに自動的に削除されます。より正確には、特定のキーのマッピングが存在しても、キーがガベージ コレクターによって破棄されること、つまり、ファイナライズ可能になり、ファイナライズされてから再利用されることを防ぐことはできません。キーが破棄されると、そのエントリは事実上マップから削除されるため、このクラスは他の Map 実装とは多少異なる動作をします。

私は自分と他の人の利益のために自分の理解を修正しています

私の改訂された理解によると、HashMapを介したWeakHashMapの使用

キーがマップ自体以外で通常使用されなくなったときに、GC 実行時にキーと値のペアがマップから確実に削除されるようにする場合にのみ、WeakHashMap を使用する必要があります。

例は次のとおりです:-

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

java - Java WeakHashMap エントリがチェック後に消えないことを保証できますか

WeakHashMap にデータを格納したいのですが、問題があります。コードがあるとします。

出力は

これは論理的です。

しかし、別のケースがあります:

結果はそれほど良くありません:

このような誤解を招く結果を避けるにはどうすればよいですか? 値とキーは null になる可能性があることに注意してください。

0 投票する
3 に答える
1243 参照

java - String リテラルと String オブジェクトを使用した weakhashmap の動作

WeakhashMap の概念を理解しています。文字列リテラルと文字列オブジェクトがわかりにくかった。

コードは次のとおりです。

出力は次のとおりです。

ただし、String hkey = new String("hashkey"); の場合。String wkey = new String("weakkey");

を次のコードに置き換えると、出力が変わります。

出力は次のとおりです。

質問: 文字列リテラルと文字列オブジェクトを「null」にすることは、WeakHashMap で異なる方法で影響を与えます。理由は何ですか?

0 投票する
0 に答える
110 参照

java - Android: インターフェイスと WeakHashMap の操作

一晩中テストに費やした後(運がなかった)、インターフェースのサポートが必要です。私は Android フレームワークに直接取り組んでおり、コールバックを制御する WeakHashMap を使用して Binder として機能するクラスを作成しました。

コードは次のとおりです。

マイコールバック:

マイバインダー:

これら 2 つのクラスはフレームワークに記述されているため、インターフェイスを実装する単純なクラスを使用して 2 つのテスト アプリケーションを作成しました。


この時点で、別のクラスを作成しました (これら 3 つのクラスはすべて、インターフェイスを実装する 2 つと次の 1 つが異なるパッケージに書き込まれます)。

この 3 番目のクラスでは、MyBinder.letsgo(); を呼び出すだけです。

私が直面している問題、およびそれ以来解決しようとしている問題は... 8/9 時間は次のとおりです。2番目のパッケージでletsgo()を実行すると機能しますが、同じパッケージでコールバックを起動するだけです。最初のパッケージで実行した場合も同じです。

WeakHashMap の代わりに HashMap も試しました。オブジェクトを参照する必要があることを知っていましたが、運がなかったからです。誰かが私を助けて眠らせてくれるかしら :D ありがとう!