这段代码中的内存泄漏?

Joh*_*ohn 1 java

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;
    }
Run Code Online (Sandbox Code Playgroud)

我无法找到此代码中发生内存泄漏的位置,任何人都可以告诉我这方面.我的老板说这段代码有内存泄漏,请我找出来.

Bor*_*vić 5

据我所知,这个方法没有对某些封闭类字段的引用,因此它不会导致内存泄漏.

  • @John,它只使用方法局部变量,从方法返回后会自动收集垃圾.如果在应用程序的生命周期内保留对某些对象的引用,则内存只能在Java中泄漏.实际上,唯一的方法是(直接或间接)在`static`类成员字段中保留引用.但是此代码中没有使用任何字段. (3认同)