Java Language
WeakHashMap
Поиск…
Вступление
Концепции слабого хашмапа
Концепции WeakHashmap
Ключевые моменты: -
- Реализация карты.
- хранит только слабые ссылки на его ключи.
Слабые ссылки : объекты, на которые ссылаются только слабые ссылки, - это мусор, собранный с нетерпением; GC не будет ждать, пока в этом случае ему понадобится память.
Разница между Hashmap и WeakHashMap: -
Если диспетчер памяти 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 vs WeakHashMap):
Метод calling size () для объекта HashMap возвращает одинаковое количество пар ключ-значение. размер будет уменьшаться только в том случае, если метод remove () явно указан в объекте HashMap.
Поскольку сборщик мусора может отменить ключи в любое время, WeakHashMap может вести себя так, как если бы неизвестный поток молча удалял записи. Таким образом, метод size может возвращать меньшие значения с течением времени. Таким образом, уменьшение WeakHashMap происходит автоматически .