[解決済み] JavaにおけるSoftReferenceとWeakReferenceの違いは何ですか?
質問
とはどう違うのですか?
java.lang.ref.WeakReference
と
java.lang.ref.SoftReference
?
解決方法は?
から 弱参照を理解する イーサン・ニコラス著
<ブロッククオート脆弱なリファレンス
A 弱参照 とは、簡単に言えば を参照するほど強くはありません。 オブジェクトをメモリ内に残すように強制します。 弱参照を利用することで ガベージコレクタの能力で 到達可能性を判断してくれるから 自分でやる必要はない。あなたは 弱参照はこのように作成します。
WeakReference weakWidget = new WeakReference(widget);
そして
を使用することができます。
weakWidget.get()
を取得し、実際の
Widget
オブジェクトを作成します。もちろん弱い
を参照するほど強くはありません。
ガベージコレクションを防ぐことができます。
強い
を参照することで、ウィジェットの
weakWidget.get()
突然
戻る
null
.
...
ソフトリファレンス
A
ソフトリファレンス
とは全く同じです。
弱参照であることを除けば
オブジェクトを捨てようとする
を参照する。オブジェクトは
弱くしか到達できない(最も強い
への参照は
WeakReferences
)
は次のガベージで廃棄されます。
しかし
は、通常、ソフトリーチ可能です。
がしばらく残る。
SoftReferences
はありません。
必須
を使用します。
と同じように動作します。
WeakReferences
が、実際にはソフトに
リーチャブルオブジェクトは、一般に
メモリがある限りは
が豊富に供給されます。このため
のようなキャッシュの基礎として最適です。
のような、画像キャッシュのような
ガベージに任せることができるので
コレクターは
オブジェクトに到達可能であること(強い
到達可能なオブジェクトは
決して
削除される
をキャッシュから削除すること)と、そのキャッシュがどの程度必要であるかということです。
を消費しています。
そして、ピーター・ケスラー氏がコメントで補足してくれた。
Sun JREはSoftReferencesをWeakReferencesと異なる方法で扱います。利用可能なメモリが圧迫されていなければ、SoftReference から参照されるオブジェクトを保持しようとします。一方、-server JRE は、SoftReferences をクリアするよりもヒープを拡張することを優先して、パフォーマンスを高く維持しようとします。1つのサイズですべてに対応できるわけではありません。
関連
-
Java のエラーです。未解決のコンパイル問題 解決方法
-
アクセス制限です。タイプ 'Application' は API ではありません。
-
エラーの解決方法 jarfile XXX.jarにアクセスできません。
-
[解決済み] この2回(1927年)を引き算すると、なぜおかしな結果になるのでしょうか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] Java の配列を表示する最も簡単な方法は何ですか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] StringBuilderとStringBufferの違いについて
-
[解決済み] Java 8のmap()メソッドとflatMap()メソッドの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
java の例外が発生しました java
-
jd-gui Java Exceptionが発生しました。
-
final, finally, finalizeの違いについて話してください。
-
プロローグでのコンテンツは禁止されています
-
JavaMailのメール送信が失敗するケースとその説明の分析
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException: 1
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
テストが見つかりませんでした
-
[解決済み] java.lang.OutOfMemoryError" の対処法。Java heap space "エラーの対処方法を教えてください。
-
[解決済み] WeakHashMapとWeakReferenceはどんな時に使うのですか?