2010年2月25日 星期四

Choose WeakHashMap over HashMap?


前陣子上課的時候,老師介紹了在某些場合以WeakHashMap取代HashMap,原因是因為WeakHashMap的key使用了weak references,所以比較容易被Garbage Collection在某些場合解決了memory leak的問題,底下是官方的說明
A hashtable-based Map implementation with weak keys. An entry in a WeakHashMap will automatically be removed when its key is no longer in ordinary use.
令我好奇想深究的是,上課時的一堆framework, solution都有人聽過,唯獨這WeakHashMap幾乎全場沒人聽過,而講師當場讓大家觀察memory使用率的變化,比起HashMap卻又有一定程度的降低,於是找了很久找到下面這篇文章
http://www.codeinstructions.com/2008/09/weakhashmap-is-not-cache-understanding.html
其中提到了WeakReference and SoftReference此兩類較為weak的object reference的Reference class(相對於一般的regular java references, 俗稱strong references Objects)
以他文中所舉的例子String name = "John Doe";中 "John Doe"這個String object為strong reference
故...
待續...

沒有留言: