弱参照と強参照の違い

通常の参照が強参照。弱参照と強参照の違いはガベージコレクトのタイミングにある。


オブジェクトの生成コストを減らすためHashMapなどにメモリキャッシュする場合があるが、一定期間のみ生存するオブジェクトをメモリキャッシュした場合には、必ずキャッシュしたオブジェクトを削除する必要がある。
削除しなければ、オブジェクトはガベージコレクトされずにそのまま残ることになり、それを繰り返せばメモリ使用量は増え続ける事となる。
メモリが圧迫されるまで問題があることにすら気付き難いやっかいな不具合になる。


そこで弱参照を使用する。java.util.WeakHashMapにオブジェクトをメモリキャッシュすることで、使用済みとなったオブジェクト(WeakHashMapのみに参照があるような状態)についてはガベージコレクトの対象とすることができ、メモリ使用量が増え続けるような問題を解決することができる。