Java の sSoftReference
について質問があります。WeakReference
私が知っていることは:
GC はアルゴリズムを使用して、ソフトに到達可能なオブジェクトを回収するかどうかを決定しますが、弱く到達可能なオブジェクトは常に回収します。
それは、GC が でfinalize()
メソッドを実行しないということWeakReferences
ですか?
ありがとう
Java の sSoftReference
について質問があります。WeakReference
私が知っていることは:
GC はアルゴリズムを使用して、ソフトに到達可能なオブジェクトを回収するかどうかを決定しますが、弱く到達可能なオブジェクトは常に回収します。
それは、GC が でfinalize()
メソッドを実行しないということWeakReferences
ですか?
ありがとう
The Truth About Garbage Collection によると
クラスがファイナライザーを定義する場合、そのクラスのインスタンスは、割り当て解除の前にファイナライザーを呼び出す必要があります。これは、ファイナライザーを含めることによって割り当て解除が遅れることを意味します。
これに基づいて、私の理解では、ウィーク/ソフトに関係なく、ファイナライズが定義されている場合、それが呼び出されます。
私はあなたの推論には従いませんが、ファイナライザーは間違いなく常に呼び出されます。オブジェクトがファイナライズ可能になるとすぐに、それに対するすべてのソフト/弱い参照がクリアされます。したがって、参照はファイナライズnull
前と同じように観察できます。