1

マシンのメモリを使い果たすことなく、サイズが 1 TB の 2 つのログ ファイルを読み取るにはどうすればよいでしょうか。両方で比較を行います。これを Java で実行したいと考えています。以下のコードは機能しますか?問題は、FileStream がログ ファイルのデータを保持できないことです。

public static void main(String args[])
{
  try{
     // Open the file that is the first 
     // command line parameter
     FileInputStream fstream = new FileInputStream("textfile.txt");
     // Get the object of DataInputStream
     DataInputStream in = new DataInputStream(fstream);
     BufferedReader br = new BufferedReader(new InputStreamReader(in));
     String strLine;
     //Read File Line By Line
     while ((strLine = br.readLine()) != null) {
        // Print the content on the console
        System.out.println (strLine);
     }
     //Close the input stream
     in.close();
  }
  catch (Exception e){//Catch exception if any
     System.err.println("Error: " + e.getMessage());
  }
}

誰でもこれを行う適切な方法に私を導くことができますか?

4

1 に答える 1

3

各行をメモリにロードするだけなので、コードはおそらく機能します。ただし、数百行を超えると stdout バッファーの出力が失われます。

比較のために行う最善の方法は、多数のアイテムをコレクションにロードし、使い終わったら不要なものを捨てることです。これにより、メモリ使用量が低く抑えられます。賢くしたい場合は、プロセスのメモリ使用量を監視し、一定のしきい値に達したらクリアを開始してください。

于 2012-06-06T17:53:23.760 に答える