WeakReference の Java での使用法
JavaのWeakReferenceは、オブジェクトから強い参照がなくなったときに、そのオブジェクトをガベージコレクタによって回収させるための特殊な参照タイプです。WeakReferenceオブジェクトは、対象オブジェクトに対する弱参照のみを保持し、強い参照がある場合に限り、対象オブジェクトを生存させます。
WeakReferenceは、java.lang.refパッケージ内のクラスで、弱い参照を作成します。目標オブジェクトを引数として受け取り、その目標オブジェクトを保持するための弱い参照を作成するコンストラクタを備えています。
WeakReferenceが参照するオブジェクトは、それ以外の強参照がなく、次のガベージコレクション時に回収され、そのWeakReferenceのgetメソッドはnullを返します。これは、キャッシュやオブジェクトの回収管理でよく利用されます。
実際に利用する場合はWeakReferenceによりキャッシュのクリーニングが実現できます。キャッシュ内のオブジェクトは使われなくなった場合、ガベージコレクタによって自動的に回収されるためメモリ使用量を削減できます。またWeakReferenceはオブジェクトの回収管理にも利用でき、オブジェクトプールのような場合、オブジェクトが使われなくなった時にWeakReferenceを利用することで回収可能であることをマークできます。
WeakReferenceは弱参照のみを持つので、対象のオブジェクトが早々に回収される可能性があることに注意してください。これを避けるには、強力な参照で対象のオブジェクトを持つ、あるいはjava.lang.refパッケージ属するSoftReferenceクラスを利用し、メモリ不足時のみオブジェクトが回収されるようにしましょう。