WeakHashMapのメモ

キーが弱参照、値の方は強参照というのがポイント。最近疲れてるのか、ちょっと勘違いして使ってたのでメモ。

ハッシュテーブルに基づいた「弱キー」による Map 実装です。WeakHashMap 内のエントリは、そのキーが普通に使われることがなくなると自動的に削除されます。より正確には、指定されたキーのマッピングが存在しても、ガベージコレクタがキーを破棄するのを防ぐことはできません。 つまりガベージコレクタが、そのキーをファイナライズ可能にし、ファイナライズしてから回収するのを防ぐことはできません。キーが破棄された場合、そのエントリが事実上マップから削除されるので、このクラスはほかの Map 実装とは少し違った動作をします。

WeakHashMap (Java Platform SE 6)

実装にあたっての注意:WeakHashMap 内の値オブジェクトは、通常の強参照によって保持されます。このため、値のオブジェクトが直接的にも間接的にも強くそれ自体のキーを参照しないようにしてください。 そうすれば、キーが破棄されないようになります。

WeakHashMap (Java Platform SE 6)