2

私のプロジェクトでは、ログ ファイルからメッセージ タイプを抽出する必要があります。約 470 万行を含む 700 MB のログ ファイルがあり、各エントリを 1 行ずつ読み取り、メッセージ フィールドを抽出する必要があります。各エントリのメッセージのサイズ (イベント サイズ) を見つけて、そのメッセージと共に辞書に格納する必要があります。同じイベント サイズに対して複数のメッセージが存在する場合があります。しかし、以下のロジックを使用すると OutOfMemoryException が発生します。

Dictionary<Int32,List<String>> dt=new Dictionary<Int32,List<String>>();
List<String> entries=new List<String>();
StreamReader sr=new StreamReader("Bluegene.log");
String s;
while((s=sr.readLine())!=null)
{
    eventsize=s.length - 9; //size of only the message field
    entries.Add(s);
    if (!dt.ContainsKey(eventsize))
    {
        dt.Add(eventsize, entries);
    }
    else
    {
       dt.Remove(eventsize);
       dt.Add(eventsize, entries);
     }
  }

MemoryMappedFile を使用すると役立ちますか?

4

1 に答える 1