我有一個懸而未決的問題,因爲很長一段時間關於hashmap GC。檢查谷歌和其他博客,似乎沒有找到答案。何時是哈希圖或列表<Hashmap> GC符合條件?
這裏是它,
說我有以下兩種方法之一返回HashMap和另一個列表如下,
public void returnData(){
Map<String,String> outerMap = getMap();
for(elements from getMap){
//DO SOMETHING
}
List<Map<String,Object> outerList = getListMap();
for(elements from getListMap){
//DO SOMETHING
}
}
private Map<String,String> getMap(){
Map<String,String> innerMap = new HashMap<String,String>();
for(i){
innerMap.put("one"+i,"test"+i);
}
return innerMap;
}
private List<Map<String,Object>> getListMap(){
List<Map<String,Object>> innerList = new ArrayList<HashMap<String,Object>>;
for(5 times){
Map<String,String> map = new HashMap<String,String>();
map.put("two"+i,new Object());
innerList.add(map);
}
return innerList;
}
每上面的代碼,請讓我知道,
1.什麼時候會innerMap和innerList有資格獲得GC?
2.外部映射和外部列表什麼時候符合GC的條件?
3.將使innerMap和innerList爲null使其符合GC的條件?
4.應該如何使outerMap和outerList符合GC的條件?
5.最後,如何測量GC是否發生並清除了未使用的物體?無論如何檢查這個?
謝謝,評論裏面的代碼實際上使用GSON API將地圖/列表轉換爲JSON對象。然後json對象返回到UI部分。也就是說,數據返回到UI的那一刻,這將有資格獲得GC?請確認! – Faz
*只要returnData()停止執行,沒有人有引用導致代碼中涉及的任何列表和地圖,因此所有內容都符合GC *。 –