-1

我有以下创建哈希映射的程序。

public class sample {
    private HashMap<String, String> joindata = new HashMap<String, String>();

    public void map() 
    throws IOException{

        BufferedReader reader = new BufferedReader(new FileReader("/tmp/table2"));

        String line;
        String[] tokens;

        while ((line = reader.readLine()) != null)
        {
            tokens = line.split(",");

            if(tokens.length == 2)
               joindata.put(tokens[0], tokens[1]);
        }

    }
}

这个实现中似乎有一些错误,因为当我读取 32M 的文件(/tmp/table2)时,我的堆已达到 300M。

谁能建议我可以进行的优化以减少堆大小,300M 的堆显然是错误的实现。

4

1 回答 1

1

在您的堆填满之前,Java 不会进行垃圾收集。这种内存消耗不是问题。

尝试锁定你的主线程(例如调用(new Object()).wait(),JMX in,进行垃圾收集然后堆转储,你的消耗看起来会更好。

于 2013-03-10T15:41:16.213 回答