J.ブロックより
... メモリ リークの原因はリスナーです ... コールバックが即座にガベージ コレクションされるようにする最善の方法は、それらへの弱い参照のみを保存することです。たとえば、それらを WeakHashMapにキーとしてのみ保存します。
では、なぜ Java Collections フレームワークに WeakSet がないのでしょうか?
J.ブロックより
... メモリ リークの原因はリスナーです ... コールバックが即座にガベージ コレクションされるようにする最善の方法は、それらへの弱い参照のみを保存することです。たとえば、それらを WeakHashMapにキーとしてのみ保存します。
では、なぜ Java Collections フレームワークに WeakSet がないのでしょうか?
Collections.newSetFromMap
Set<Object> weakHashSet =
Collections.newSetFromMap(
new WeakHashMap<Object, Boolean>()
);
ドキュメントに見られるように、 a をCollections.newSetFromMap
渡して aWeakHashMap
を取得しSet
ます。