Java Language
WeakHashMap
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 .