サーチ…


前書き

弱いハッシュマップの概念

弱いハッシュマップの概念

キーポイント:-

  • 地図の実装。
  • そのキーに対する弱い参照のみを格納します。

弱参照 :弱い参照によって参照されるオブジェクトがガーベッジ熱心に収集されます。 GCはその場合にメモリが必要になるまで待機しません。

ハッシュマップと弱ハッシュマップの違い:

Javaメモリマネージャがキーとして指定されたオブジェクトへの強い参照をもはや持っていない場合、マップのエントリはWeakHashMapで削除されます。

例: -

public class WeakHashMapTest {
    public static void main(String[] args) {
        Map hashMap= new HashMap();
        
        Map weakHashMap = new WeakHashMap();
        
        String keyHashMap = new String("keyHashMap");
        String keyWeakHashMap = new String("keyWeakHashMap");
        
        hashMap.put(keyHashMap, "Ankita");
        weakHashMap.put(keyWeakHashMap, "Atul");
        System.gc();
        System.out.println("Before: hash map value:"+hashMap.get("keyHashMap")+" and weak hash map value:"+weakHashMap.get("keyWeakHashMap"));
        
        keyHashMap = null;
        keyWeakHashMap = null;
        
        System.gc();  
        
        System.out.println("After: hash map value:"+hashMap.get("keyHashMap")+" and weak hash map value:"+weakHashMap.get("keyWeakHashMap"));
    }

サイズの違い(HashMap対WeakHashMap):

HashMapオブジェクトのsize()メソッドを呼び出すと、同じ数のキーと値のペアが返されます。 sizeは、remove()メソッドがHashMapオブジェクトに対して明示的に呼び出された場合にのみ減少します。

ガベージコレクタはいつでもキーを破棄することがあるため、WeakHashMapは未知のスレッドが静かにエントリを削除しているかのように振る舞います。したがって、sizeメソッドは時間の経過と共に小さな値を返すことが可能です。WeakHashMapでは、 サイズの減少が自動的に発生します



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow