問題タブ [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.
java - WeakHashMap-その目的は何であり、どのように正しく使用する必要がありますか
今日、私はオーバーキャッシュ の使用法について議論したこのブログ投稿を見つけました。WeakHashMap
値ではなくキーが弱参照として格納され、参照が存在しなくなると、キーと値のペア全体がWeakHashMapから削除されるという事実に興味をそそられました。したがって、これにより次のことが発生します。
WeakHashMap
その場合、どのシナリオがクラスを利用するのか興味がありますか?
java - Java SoftHashMap の実装
Javaと. SoftHashMap
_ WeakHashMap に関する Java ドキュメントでは、キーは値ではなく弱参照であると書かれています。基礎となる の put および pull 機能に何が使用されるのか疑問に思っていました。put は次のように機能すると想定しています。これが正しい場合、キーのエントリはどのように検出されるでしょうか。SoftReference
HashMap
hashcode()
HashMap
WeakHashMap
hashMap.put(new WeakReference(key), value);
値がWeakReference
キーではなく a でラップされた方がよいのではないでしょうか?
java - 値にキーへの唯一の強い参照が含まれている場合、WeakHashMap のエントリは収集されますか?
一部のデータを有効期間中キーに関連付ける必要があるため、WeakHashMap
. ただし、さらに、対応する値でキーを取得する必要があります。これを行う簡単な方法は、値を作成するときに参照を保持することです。
もちろん、Value
プログラムで使用している間key
は消えません。ただし、キーまたはその値への参照がマップ外になくなった場合、ガベージ コレクションは行われますか? それとも、値に残っている強力な参照がそれを妨げていますか?
java - Java、オブジェクトをソフトリファレンスに変換
ソフトリファレンスを含むweakhashmapにデータオブジェクトを配置する必要があります。「Drawable」オブジェクトをソフトリファレンスに変換するにはどうすればよいですか?
tempPulledは、ソフトリファレンスである「sPulled」を配置する必要があります
java - WeakHashMapのクローン/コピー方法は?(ディープコピー)
私はHashMapを持っていて、クローン関数を使用してディープコピーを作成しました。しかし、メモリ管理を試すために、これをWeakHashMapに切り替えました。
私はまだこのクローン関数を実行したいのですが、WeakHashMapのメソッドの一部ではありません。WeakHashMapを別のマップに効率的に複製するにはどうすればよいですか?キーを追加したり、既存のキーをチェックしたりするループを実行できると思いますが、それが最善の方法かどうかはわかりません。
java - WeakHashMapと強く参照される値
Javadocsは、「キーが破棄されると、そのエントリはマップから効果的に削除されます」と述べています。
しかし、そのようなエントリをときどき削除する別のスレッドがない限りMap.Entry
、値オブジェクトはマップによって強く参照されませんか?ただし、そのようなスレッドは実行されていないため、get
メソッド呼び出しのみがそのようなエントリを一度に1つずつ削除できます。
私はほとんどいつもWeakHashMap<K, WeakReference<V>>
その理由で使用します。なぜ彼らはそのデフォルトの振る舞い-弱い参照としての値も作らなかったのでしょうか?
java - WeakHashMapの例
WeakHashMapを次のように作成します
ここで、empはEmployeeオブジェクトです。ここで、emp = nullを実行するか、empオブジェクトが参照されなくなったとすると、エントリはWeakHashMapから削除されますか?つまり、Mapのサイズはゼロになりますか?
また、HashMapの場合はその逆になりますか?
WeakHashMapの私の理解は正しいですか?
java - Java:weakhashmapはキーが「廃止」されているかどうかをどのように判断しますか?
この鍵が古くて捨てる準備ができていることをどうやって知るのでしょうか? なぜ文字列リテラルなのですか?
例えば、
A() が戻るとすぐに「p」キーがなくなるということですか?
java - 弱いハッシュマップはどのようにしてオブジェクトをガベージコレクションすることを知っていますか?
WeakHashMap
最近、Javaのデータ構造について知りました。
ただし、それが何を意味するのかわかりません。通常使用されなくなったときにマッピングをガベージコレクションします。プログラムでキーを使用しなくなることをデータ構造はどのようにして知るのですか?長い間キーを参照しないとどうなりますか?
java - Java: 弱い参照を持つスタック
Java には、弱参照をキーとして格納する WeakHashMap と呼ばれるデータ構造があります。弱い参照がメモリから取り出されるたびに、エントリはマップから削除されます。
弱参照を格納している Stack や Set などのデータ構造がある場合、弱参照がメモリから取り出されると、それらのエントリは自動的に削除されますか?
以下は、弱参照を格納する Stack の例です。