我最近讀了一本關於java內存建模的書,它說:HashMap對鍵和值使用弱引用(因爲它們都是對象),所以當hasnmap存儲越來越多的鍵值對時hashmap可以避免內存不足的問題。Java中的HashMap如何處理鍵和值的弱引用?
但問題是:如果鍵和值在GC期間在朗姆酒時間,我怎麼能通過在散列表中使用獲得方法獲得鍵值對?
例如,
String key=new String("GC");
String value=new String("GC");
hashmap.put(key,value);
和代碼的某些執行之後,它有一個機會,java的GC鍵和值,那麼是什麼在發生:
hashmap.get(key)
因爲密鑰在hashmap中不再存在?
這本書是錯誤的:它只有GC清除鍵後,喜歡這裏發生。 HashMap使用強引用。但是有一個WeakHashMap,它的文檔解釋了它是如何工作的:http://docs.oracle.com/javase/7/docs/api/java/util/WeakHashMap.html –
有關'WeakHashMap',WeakReference'的相關問題和'SoftReference'是[here](http://stackoverflow.com/questions/154724/when-would-you-use-a-weakhashmap-or-a-weakreference)。 –
謝謝,我認爲這本書是錯誤的... – Qing