반응형
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 로 생성해서 사용하자.
반응형
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[Java] writeObject 와 readObject 는 무엇인가? (0) | 2016.10.25 |
---|---|
[Java] Generic explicit type parameter 이야기 (0) | 2016.10.18 |
[android] Fragment 와 함께라면 Configuration Change 가 무섭지 않아. (0) | 2016.10.12 |
[android] PageTransformer 와 함께 하는 ViewPager 의 화려한 animation (0) | 2016.10.04 |
[android] RecyclerView 에 대한 맛보기 이야기 (0) | 2016.09.23 |
댓글