-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は、ヒープがいっぱいになるまでガベージコレクションを行いません。このメモリ消費は問題ではありません。

メインスレッドをロックしてみてください(たとえば、JMXを呼び出し(new Object()).wait()、ガベージコレクションを実行してから、ヒープダンプを実行する、消費量がはるかに良くなります。

于 2013-03-10T15:41:16.213 に答える