強力な、ソフト、弱、ファントムリファレンス - 掘るベースブログ

強力な、ソフト、弱、ファントムリファレンス区別

強参照:Javaのデフォルトリファレンス、強い参照オブジェクトが回収されることはありません、存在を参照;
ソフト参照:メモリが解放されなければならなかった場合は、ソフト参照が解放されず、すべてのGCがリリースされていません。メモリがきついときに回収することができるが、また、-XXことができます。SoftRefLRUPolicyMSPerMBパラメータは、回復のタイミングを制御する。
弱参照:すべてのGCが解放され、
ファントム参照:ファントム参照は、理解していませんでした

以下のデータは、特に優れた英語は、翻訳されていません話します。

強い参照:私たちは、どこでも、Javaで強い参照を使用します。我々は、オブジェクトを作成し、参照に割り当てることができます。オブジェクトは強い参照を持っている場合、このオブジェクトがガベージコレクトされることはないことに注意してください。
例:

HelloWorld hello = new HelloWorld();
Here hello is the strong reference to HelloWorld Object.

ソフト参照:オブジェクトは強い参照を持っていませんが、ソフト参照を持っている場合は、GCは、いくつかのメモリを解放する必要があるときは、ガベージコレクタは、このオブジェクトのメモリを再利用。ソフト参照からオブジェクトを取得するためには、get()メソッドを呼び出すことができます。オブジェクトがGCedされていない場合、それはそれはそっと到達可能なオブジェクトは、仮想マシンがOutOfMemoryErrorをスローする前にクリアされていることが保証されているにnull.Allソフト参照を返し、そうでない場合は、オブジェクトを返します。

弱参照:オブジェクトは強い参照を持っていないが、弱参照を持っている場合、GCは、十分なメモリがあるにもかかわらず、次の実行中にこのオブジェクトのメモリを再利用します。

ファントム参考:目的は、上記参照のいずれかを持っていない場合、それはファントム参照を有することができます。ファントム参照は直接アクセスすることはできません。get()メソッドを使用している場合、それは常にnullを返します。

ファントム参照は、()sensible.Thisオブジェクトが既に確定し、ガベージコレクタは、そのメモリを再利用する準備ができていると言う特別な参照されないが、時々ファイナライズを使用して状況で使用することができます。

参考資料

1. 弱参照やソフト参照弱い参照、SoftReference、最も簡単な説明、およびシナリオ
2. Javaでの参照の様々なタイプ


おすすめ

転載: www.cnblogs.com/lijianming180/p/12409454.html