問題タブ [soft-references]
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 - Soft-/Weak-/PhantomReferences が追跡対象オブジェクトへの参照を持つオブジェクトへの参照をクリアする理由
Soft
-、Weak
-、およびs のすべてのドキュメントPhantomReference
には、次のような行が含まれています (から引用PhantomReference
)。
その時点で、そのオブジェクトへのすべてのファントム参照と、そのオブジェクトに到達可能な他のファントム到達可能オブジェクトへのすべてのファントム参照がアトミックにクリアされます。
私を混乱させているのは、他のファントム到達可能オブジェクトに関する部分です。
私がそれを正しく理解していれば、これはこのケースを説明しています:
オブジェクト:
- あ
- B
参考文献:
->
: 強い参照-P->
: ファントム参照
B
そのため、何らかの理由で、ガベージ コレクターは、それがファントム リーチ可能であるとまだ判断していません。A
がファントム到達可能になり、ガベージ コレクターがこれを検出した場合、(上記のドキュメントによると) への参照もクリアする必要がありますB
。
ドキュメントでこれが必要な理由はありますか? 他のベンダーが JVM を開発した場合、これはむしろ負担になると思われます。
java - SoftReference を収集する時間がガベージ コレクターにはありません。常に OutOfMemoryError です。
すべてのガベージ コレクター、100 万通りの異なる設定の組み合わせを試しました。しかし、結果は常に同じです - OutOfMemoryError.
ソフト参照によって参照されるオブジェクトをタイムリーに削除できるガベージコレクターを誰でも知ることができますか?
以下のエミュレータコードの例