수색…


소개

약한 해시 맵의 개념

약한 해시 맵의 개념

키 포인트:-

  • 지도의 구현.
  • 해당 키에 약한 참조 만 저장합니다.

약한 참조 : 약한 참조에 의해서만 참조되는 객체는 열심히 가비지 수집됩니다. 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 대 WeakHashMap) :

HashMap 객체에서 size () 메서드를 호출하면 동일한 수의 키 - 값 쌍이 반환됩니다. size는 HashMap 객체에서 명시 적으로 remove () 메서드가 호출 된 경우에만 감소합니다.

가비지 컬렉터는 언제라도 키를 파기 할 수 있기 (위해) 때문에, WeakHashMap는, 미지의 thread가 엔트리를 자동적으로 삭제하고있는 것처럼 동작합니다. 따라서 size 메소드가 시간이 지남에 따라 더 작은 값을 리턴 할 수 있습니다. WeakHashMap 크기 감소는 자동으로 발생합니다 .



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow