2

Java の sSoftReferenceについて質問があります。WeakReference

私が知っていることは:

GC はアルゴリズムを使用して、ソフトに到達可能なオブジェクトを回収するかどうかを決定しますが、弱く到達可能なオブジェクトは常に回収します。

それは、GC が でfinalize()メソッドを実行しないということWeakReferencesですか?

ありがとう

4

2 に答える 2

2

The Truth About Garbage Collection によると

クラスがファイナライザーを定義する場合、そのクラスのインスタンスは、割り当て解除の前にファイナライザーを呼び出す必要があります。これは、ファイナライザーを含めることによって割り当て解除が遅れることを意味します。

これに基づいて、私の理解では、ウィーク/ソフトに関係なく、ファイナライズが定義されている場合、それが呼び出されます。

于 2012-08-30T15:58:28.460 に答える
0

私はあなたの推論には従いませんが、ファイナライザーは間違いなく常に呼び出されます。オブジェクトがファイナライズ可能になるとすぐに、それに対するすべてのソフト/弱い参照がクリアされます。したがって、参照はファイナライズnull と同じように観察できます。

于 2012-08-30T16:02:40.853 に答える