Javaの強いと弱いの4種類の参照

1.強い参照:

  オブジェクトに強い参照がある場合、そのオブジェクトはガベージコレクターによって収集されません。現在のメモリスペースが不足している場合でも、JVMはメモリを再利用しませんが、OutOfMemoryErrorエラーをスローして、プログラムを異常終了させます。強い参照とオブジェクト間の関連付けを解除する場合は、参照を明示的にnullに割り当てて、JVMが適切なときにオブジェクトをリサイクルできるようにすることができます。

Object obj = new Object(); // objがまだObjectオブジェクトを指している限り、Objectオブジェクトはリサイクルされません 
obj = null ;   // 手動でnullを設定

2.ソフトリファレンス:

  ソフトリファレンスを使用する場合、メモリ領域が十分であれば、ソフトリファレンスはガベージコレクターによって収集されずに引き続き使用できます。メモリーが不十分な場合にのみ、ソフトリファレンスはガベージコレクターによって収集されます。メモリが十分である場合、ソフト参照オブジェクトは回収されません。メモリが不足している場合のみ、システムはソフト参照オブジェクトを回収します。ソフト参照オブジェクトが回収された後もメモリが不十分な場合は、メモリオーバーフロー例外がスローされます。この機能は、Webページキャッシング、画像キャッシングなどのキャッシングテクノロジーを実装するためによく使用されます。
3.弱い参照:

  弱い参照を持つオブジェクトは、ライフサイクルが短くなります。JVMがガベージコレクションを実行するとき、弱い参照オブジェクトが見つかると、現在のメモリ領域が十分であるかどうかに関係なく、弱い参照がリサイクルされます。ただし、ガベージコレクターは優先度の低いスレッドであるため、弱い参照オブジェクトをすばやく見つけることができない場合があります

  オブジェクトが仮想参照のみを保持している場合、それは参照がないことに相当し、ガベージコレクターによっていつでもリサイクルできます。 

おすすめ

転載: www.cnblogs.com/zeussbook/p/12716173.html