Java Language
WeakHashMap
Szukaj…
Wprowadzenie
Koncepcje słabej Hashmapy
Koncepcje WeakHashmap
Kluczowe punkty:-
- Wdrożenie mapy.
- przechowuje tylko słabe odniesienia do swoich kluczy.
Słabe referencje : Obiekty, do których odwołują się tylko słabe referencje, są chętnie usuwane; GC nie będzie czekać, aż w takim przypadku będzie potrzebować pamięci.
Różnice między Hashmap i WeakHashMap: -
Jeśli menedżer pamięci Java nie ma już silnego odwołania do obiektu określonego jako klucz, wpis na mapie zostanie usunięty w WeakHashMap.
Przykład: -
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"));
}
Różnice wielkości (HashMap vs WeakHashMap):
Wywołanie metody size () na obiekcie HashMap zwróci tę samą liczbę par klucz-wartość. rozmiar zmniejszy się tylko wtedy, gdy metoda remove () zostanie wywołana jawnie na obiekcie HashMap.
Ponieważ śmieciarz może odrzucić klucze w dowolnym momencie, WeakHashMap może zachowywać się tak, jakby nieznany wątek po cichu usuwa wpisy. Jest więc możliwe, że metoda size zwraca z czasem mniejsze wartości, więc w WeakHashMap zmniejszenie rozmiaru następuje automatycznie .