Поиск…


Вступление

Концепции слабого хашмапа

Концепции 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 происходит автоматически .



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow