Ricerca…


introduzione

Concetti di Hashmap debole

Concetti di WeakHashmap

Punti chiave:-

  • Implementazione della mappa.
  • memorizza solo riferimenti deboli alle sue chiavi.

Riferimenti deboli : gli oggetti a cui si fa riferimento solo con riferimenti deboli sono garbage collection desiderati; il GC non aspetterà finché non avrà bisogno di memoria in quel caso.

Diffrenza tra Hashmap e WeakHashMap: -

Se il gestore della memoria Java non ha più un riferimento forte all'oggetto specificato come chiave, la voce nella mappa verrà rimossa in WeakHashMap.

Esempio :-

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"));
    }

Differenze di dimensione (HashMap vs WeakHashMap):

Il metodo calling size () sull'oggetto HashMap restituirà lo stesso numero di coppie chiave-valore. la dimensione diminuirà solo se il metodo remove () viene chiamato esplicitamente sull'oggetto HashMap.

Poiché il garbage collector può scartare le chiavi in ​​qualsiasi momento, una WeakHashMap può comportarsi come se un thread sconosciuto stia rimuovendo silenziosamente le voci. Pertanto, è possibile che il metodo di ridimensionamento restituisca valori più piccoli nel tempo. Quindi, nella riduzione della dimensione di WeakHashMap avviene automaticamente .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow