0

この鍵が古くて捨てる準備ができていることをどうやって知るのでしょうか? なぜ文字列リテラルなのですか?

例えば、

  private static WeakHashMap<<? extends Object>, String> m = 
                             new WeakHashMap<<? extends Object>, String>();

  public static void A(){

       Point p = new Point();
       m.put(p, "a");

  }

A() が戻るとすぐに「p」キーがなくなるということですか?

4

1 に答える 1

5

WeakHashMapその決定を下しません。むしろ、通常の Java ガベージ コレクション プロセスによって、参照されていないキーが削除されます。キーは、pJava ガベージ コレクションがトリガーされるとすぐに失われます。

キーを参照するために弱い参照を使用してWeakHashMapいるため、ガベージ コレクターWeakHashMapはマップ キーへの参照をメモリ内のキー オブジェクトを「保持」しているとカウントしないことを認識しています。

于 2012-05-22T00:49:23.027 に答える