Czym jest WeakHashMap w Java?

WeakHashMap w języku Java to specyficzna implementacja interfejsu Map, która przechowuje klucze w postaci słabych referencji. Oznacza to, że wpisy w mapie mogą zostać automatycznie usunięte, gdy na ich klucze nie istnieją już silne referencje. Jest to przydatne w aplikacjach, które wymagają zwolnienia zasobów bez czekania na jawną destrukcję przez programistę. Dzięki temu, WeakHashMap pomaga w zapobieganiu problemom z wyciekami pamięci, szczególnie w środowiskach, gdzie obiekty są dynamicznie tworzone i usuwane.

Przykład użycia WeakHashMap

Aby lepiej zrozumieć działanie WeakHashMap, przeanalizujmy poniższy przykład:

import java.util.WeakHashMap;

public class CacheExample {
    public static void main(String[] args) {
        // Tworzenie mapy WeakHashMap
        WeakHashMap<Integer, String> map = new WeakHashMap<>();

        // Integer 100 - klucz do mapy
        Integer key = new Integer(100);

        // Dodanie pary klucz-wartość do mapy
        map.put(key, "Dane eksperymentalne");

        // Informacja o zawartości mapy przed usunięciem referencji
        System.out.println("Wartość przed: " + map.get(key));

        // Usunięcie silnej referencji
        key = null;

        // Sugerowanie JVM do wykonania garbage collection
        System.gc();

        // Odczekanie, aby garbage collector zdążył zadziałać
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        // Sprawdzenie zawartości mapy po garbage collection
        System.out.println("Wartość po: " + map.get(100));
    }
}

Podsumowanie

WeakHashMap jest użytecznym narzędziem do zarządzania pamięcią w aplikacjach Java, które tworzą dużo tymczasowych obiektów. Dzięki słabym referencjom, obiekty te mogą być automatycznie usuwane, co pomaga w efektywnym zarządzaniu zasobami systemowymi. Jednakże, trzeba pamiętać, że nie mamy bezpośredniej kontroli nad momentem usunięcia kluczy, co może być problematyczne w niektórych scenariuszach użycia.

Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Java w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

Scroll to Top