Java Language Concepts de WeakHashmap


Exemple

Points clés:-

  • Mise en œuvre de la carte.
  • ne stocke que des références faibles à ses clés.

Références faibles : Les objets référencés uniquement par des références faibles sont récupérés avec empressement; le GC n'attendra pas d'avoir besoin de mémoire dans ce cas.

Difficulté entre Hashmap et WeakHashMap: -

Si le gestionnaire de mémoire Java n'a plus de référence forte à l'objet spécifié en tant que clé, alors l'entrée dans la carte sera supprimée dans WeakHashMap.

Exemple :-

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

Différences de taille (HashMap vs WeakHashMap):

L'appel de la méthode size () sur l'objet HashMap renverra le même nombre de paires clé-valeur. La taille diminuera uniquement si la méthode remove () est appelée explicitement sur l'objet HashMap.

Comme le ramasse-miettes peut ignorer les clés à tout moment, WeakHashMap peut se comporter comme si un thread inconnu supprimait silencieusement des entrées. Il est donc possible que la méthode size retourne des valeurs plus petites avec le temps. Ainsi, dans WeakHashMap, la diminution de la taille se produit automatiquement .