次のスニペット(教育的なテストのみを目的としています)では、は常にtrueです。要素が弱いセットから削除されたときにテストする方法はありますか?
Set<String> weakSet = Collections.newSetFromMap(new WeakHashMap<>());
weakSet.add("someKey");
System.gc();
weakSet.contains("someKey");
Iは、スペースを再利用するために、JVMによって行わbest effortは弱くしか到達可能(任意強い参照せずに弱い組の要素)であるオブジェクトを除去することを含むことが予想されます。しかし、私は間違っています。
実際に弱参照の自動削除をテストする方法があるので、参照が消えているのを確認できますか?言い換えれば、を返す方法は間違っていますか?
スニペットが常に「true」を返す理由は、['文字列リテラルは通常ガベージコレクトされません](https://stackoverflow.com/questions/15324143/garbage-collection-of-string-literals)です。 –