private ArrayList<HashMap<String, String>> sortArrayMap(ArrayList arrList)
{
ArrayList retArray = new ArrayList();
Hashtable tableUnOrdered = new Hashtable();
for (int i = 0; i < arrList.size(); i++)
{
HashMap<String, String> map = (HashMap<String, String>) arrList.get(i);
tableUnOrdered.put(map.get("TCNT"), i);
}
Vector v = new Vector(tableUnOrdered.keySet());
Collections.sort(v);
for (int j = 0; j < MAX_ITEMS_PER_GRAPH && j < v.size(); j++)
retArray.add(v.get(j)); // add the list in the needed order
return retArray;
}
我无法找到此代码中发生内存泄漏的位置,任何人都可以告诉我这方面。我的老板说这段代码有内存泄漏,请我查一查。
答案 0 :(得分:5)
据我所知,这个方法没有对某些封闭类字段的引用,因此它不会导致内存泄漏。
答案 1 :(得分:1)
除了参数之外,所有变量都存在于方法范围内。当方法终止时,它们将被标记为垃圾收集。
答案 2 :(得分:1)
问你的老板是否真的意味着内存泄漏,或者他是否意味着它使用了太多的内存。告诉他有一个很大的区别,你需要知道他担心的是什么。
答案 3 :(得分:1)
它坏了:我清理了泛型,它没有返回HashMaps列表,它返回了一个字符串列表。
private ArrayList<HashMap<String, String>> sortArrayMap2(ArrayList<HashMap<String, String>> arrList)
{
ArrayList<HashMap<String, String>> retArray = new ArrayList<HashMap<String, String>>();
HashMap<String, Integer> tableUnOrdered = new HashMap<String,Integer>();
for (int i = 0; i < arrList.size(); i++)
{
HashMap<String, String> map = arrList.get(i);
tableUnOrdered.put(map.get("TCNT"), i);
}
Vector<String> v = new Vector<String>(tableUnOrdered.keySet());
Collections.sort(v);
for (int j = 0; j < MAX_ITEMS_PER_GRAPH && j < v.size(); j++)
retArray.add(v.get(j)); // add the list in the needed order
return retArray;
}