본문 바로가기
프로그래밍 놀이터/안드로이드, Java

WeakHashMap 에 대해 제대로 이해하자.

by 돼지왕 왕돼지 2016. 10. 13.
반응형

 WeakHashMap 에 대해 제대로 이해하자.


Android, autoboxing, cache, HashMap, Integer.valueof, jvm, Key, new, primitive boxing object, string, valueOf, weak, weak reference, weakhashmap, WeakHashMap 에 대해 제대로 이해하자.

-
WeakHashMap 은 일반적인 HashMap 과 동일하지만 key 가 weak reference 된 형태이다.


-
WeakHashMap 을 가장 잘 이해하는 용어는 이렇다.

"더 이상 일반적인 방법인 key 로 value 를 retrive 할 수 없을 때 key/value pair 를 제거한다."

따라서 string 은 WeakHashMap 의 key 로 적합하지 못하다.
string 은 JVM 에 의해 다른 곳에 store 되어 항상 strong reference 로 남을 것이다.
다시 말하자면 string 을 key 로 사용할 것이라면 WeakHashMap 을 쓸 이유가 없다.


-
Primitive Boxing object 들도 key 로 사용하는 경우도 마찬가지로 주의해야 한다.
Autoboxing 으로 사용되는 경우나 Integer.valueOf(10) 과 같은 형태로 사용하게 되면,
String 과 같이 cache 된 value 를 사용하기 때문이다.
이 Cache 를 하는 max 값은 JVM 에 따라 다르지만, ( 보통 128 혹은 256 ) 여튼 확신할 수 없는 상태에서 WeakHashMap 을 사용하면 문제가 된다.
( android 의 경우 -128 ~ 127 )

따라서 만약 key 로 string 이나 primitive type 을 사용하고 싶다면, 반드시 new 로 생성해서 사용하자.






반응형

댓글