問題タブ [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 - GC は、weakhashmap からオブジェクトを削除しません
マップを格納する 1 つのクラスと、そのクラスのメソッドを呼び出すボタンを含むテスト アプリケーションがあります。
ボタンはこれを行います:
したがって、マップを持つメインクラスは生きていますが、そこに配置したオブジェクトは別のメソッドで作成されます。メソッドを終了した後、マップ内のキー/オブジェクトはGCによってクリアされるWeakHashMap
と思いました。fillWeakHashMap
VisualVM->VisualGC を開き、Monitor->PerformGC を 10 回クリックしましたが、GC がこれらのオブジェクトをクリアしていないことを意味する古い領域がほぼいっぱいです。それで、私は何を間違っていますか?
java - hashmap と weakhasmap によるパフォーマンス/メモリの最適化
hashmap と weakhashmap に関する質問があります。私のアプリケーションでは、DB から毎回 10 万件のレコードをフェッチし、マップに入れます。最初のレコード セットでいくつかの操作を行った後、次の 100k レコードをフェッチします。
この状況では、どのマップの実装が適切ですか? このような巨大なデータを保持するためのより良いデータ構造はありますか?
前もって感謝します。
java - WeakHashMap が GC 後に値への強い参照を保持するのはなぜですか?
WeakHashMap の Key オブジェクトが弱く到達可能になりました。そしてマップは、GC の後にエントリを削除する必要があります。ただし、値オブジェクトへの強い参照は残ります。なんで?
guava の weakkeys マップでも同じ動作が見られます。
期待される出力:
しかし、私は出力を得ます:
コード:
更新:
jСonsole と jcmd で GC を実行しようとしましたが、出力は変わりませんでした。
java - メソッドで WeakHashMap を使用するかどうか
5 分ごとに呼び出される @Scheduled メソッドがあります。
バッチは多くの計算を行います。完了するまでに約 2 ~ 15 分かかります (バッチが既に実行されている場合、バッチが実行されないようにするフラグがあります)。
多くのMap
s を使用して、計算結果をキャッシュします。そのまま再開できました。累積結果を含む 1 つの主要なマップと、内部計算用のサブメソッドへの一部のマップ/リスト。
バッチの実行には約 3 ~ 6 ギガかかる可能性があります。分析するには大量のデータが必要です。
メソッド内で使用したマップ/リストは、コードがメソッドを終了したときに GC の対象になると思いますか?
メソッドを終了する前に、メソッドまたは呼び出しでWeakHashMap
orを使用する必要がありますか?WeakReference
Map.clear();
バッチの最後で GC がクリーンアップを行うのを待たずに、可能であればメモリ使用量を減らしたいと考えています。
バッチが完了すると、メモリは最大 500megs-1G に減少します。
spring - 春のセキュリティ、ユーザーのすべてのセッションを期限切れにする方法
Wildfly 8.1 で Java 1.7 を実行するアプリケーション3.2.5-RELEASE
を使用する Spring Security で、次のシナリオを解決する必要があります。Spring Core 4.1.2-RELEASE
- ユーザー「bob」がログインします
- 管理者は「bob」を削除します
- 「ボブ」がログアウトすると、ログインできなくなりますが、現在のセッションはアクティブなままです。
「ボブ」を追い出したい
/li>
java - WeakHashMap または HashMap?
だから私はORM/Hibernateからお互いを参照するオブジェクトのチェーンを持っています
- 大陸
- 多くの国がある
- 多くの州がある
- 多くの都市がある
- 都市部が多い
- 国
- 1つの国を持っています
- 多くの州がある
- 多くの都市がある
- 都市部が多い
- 州
- 大陸が1つある
- 1つの国を持っています
- 多くの都市がある
- 都市部が多い
- 街
- 大陸が1つある
- 1つの国を持っています
- 1 つの状態を持つ
- 都市部が多い
- 都市部
- 大陸が1つある
- 1つの国を持っています
- 1 つの状態を持つ
- 都市が 1 つある
一部のメソッドでは、キーを識別するために簡単な検索を実行できる必要があります。
そのため、私は現在、実行スレッドの存続期間中に無数のデータベースクエリを起動することなく、メモリ内のオブジェクトの ID をすばやく検索できるように、多くのオブジェクトをすべて持っています。
しかし、私が心配しているのは、循環参照が保持されており、オブジェクトがガベージ コレクションによってクリアされないことです。オブジェクトはすべて ORM リレーションを介して相互に参照し、それぞれにプライベート マップが存在するためです。
WeakHashMap について読んだところ、強い参照がなくなると参照がクリアされます。
問題は、私の状況で WeakHashMap を使用することをお勧めしますか、それとも Hashmap で十分であり、このセットアップと循環参照はメモリ管理を損なうことはありません。