簡體   English   中英

此代碼中的內存泄漏?

[英]memory leakage in this code?

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;
    }

我無法找出此代碼中發生內存泄漏的地方,任何人都可以讓我知道這一點。 我的老板說此代碼存在內存泄漏,請我找出來。

據我所知,此方法在某些封閉的類字段中未保存引用,因此不會導致內存泄漏。

除了參數之外,所有變量都位於方法范圍內。 當方法終止時,它們將被標記為垃圾回收。

詢問老板是否真的意味着內存泄漏,或者他是否意味着使用了過多的內存。 告訴他有很大的不同,您需要知道他擔心的是哪一個。

壞了:我清理了泛型,並且沒有返回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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM