2013-04-04 187 views
0

我有一個相當複雜的數據結構,是堆疊其他地圖內地圖結構:處理複雜數據結構的正確方法是什麼?

Map<String, Map<Integer, PerformanceScopeMeta> > complex; 

這裏是PerformanceScopeMeta類:

class PerformanceScopeMeta { 
    /* Meta information */ 
    private Map<String, String> meta; 
    private List<PerformanceMessage> messages; 
} 

這是我做的「使可用內存垃圾回收「:

complex.put("SOME_KEY", null); 

這樣就夠了還是我完全錯了?

回答

7

那麼如果什麼也沒有其他有一個對地圖的引用,那麼是的,這就夠了(假設你的地圖接受空值)。

但請記住,如果complex所指的對象符合垃圾回收的條件,那麼您根本無需執行任何操作。只有在您需要清除部分地圖時才需要執行此操作。根據我的經驗,爲了垃圾收集器的緣故,你必須做任何事情什麼比較罕見。

個人而言,我會用Map.remove,而不是你所建議的代碼,但:

complex.remove("SOME_KEY"); 

你不是真的用null值的條目,我認爲......你只是想擺脫完全的條目,對嗎?

+0

我希望數據結構最終清除它的內存,所以刪除頂部引用鍵就足夠了。 – 2013-04-04 15:20:59

+0

@ code-gijoe:但是'複雜'本身將有資格進行垃圾回收?如果是這樣,你不需要刪除它的每一個位。 – 2013-04-04 15:22:04

+0

我是一個單身人員(不幸)在服務器啓動時運行,這就是爲什麼我需要知道內存將被釋放。 – 2013-04-04 15:23:06

4

使用complex.remove("SOME_KEY")如果刪除的值或該移除的地圖中的任何對象未被任何代碼引用,則可以。

4

要從地圖上刪除鑰匙,請使用complex.remove("SOME_KEY")。這將使相應的值有資格進行垃圾回收,只要沒有剩餘的實時引用即可

相關問題