私は現在、大容量のファイル、または数百万行以上の複数のファイルを読み込むプロジェクトに取り組んでいます。これを行うために、私はStreamreaderを使って各行を読みます。 すべての行に、特定の文字列が含まれているかどうかがチェックされます。条件が真であれば、行を追加します。私は私の前にコードを持っていないので、私はメモリからコードを再現する必要があります。MigraDocで多量の行を追加してRAM使用量を増やす方法を避けるには?
Table table = new Table();
Row row = new Row();
Cell cell = new Cell();
using(Streamreader sr = new Streamreader(file))
{
string str;
while((str = sr.ReadLine()) != null)
{
if(str.Includes("Marker"))
{
row = table.AddRow();
cell = row.Cells[0]
cell = row.Cells[1] // actually I use a counter variable, cause my table has 6 cells consistent.
}
}
}
だから毎回条件が真である、行オブジェクトが追加され、これらのラインの何百万人ともあるでしょう私のラムの記憶に影響を及ぼし、「爆発」する可能性が最も高いのは何百万ものオブジェクトです。私はいくつかのことを試しました。行オブジェクトを含むリストを作成し、特定の番号の後にそれらをクリアします。しかし、私はそれがラム(list.Clear)からオブジェクトをクリアしないことを理解しなければならなかった。私はガベージコレクタを手動で呼び出そうとしましたが、パフォーマンスにマイナスの影響を与えます。そして今、私はこれをどう扱うべきかわかりません。 50万回線で約7GBのRAMに達し、8GBの空き容量があります。
私は高級ラムを避けたり、少なくともラムを低く保つことができます。
私も、私はstackoverflowの上の新たなんだ、何が私にそれアウトやポイントを指し示す気軽に明確ではない場合ことを追加したい:P
まずはお返事ありがとうございます。まあ私はそれが管理可能ではないと仮定した。私は行数を追跡することができます、私はあなたの提案を実装しようとします。 migradocでrtf文書を生成することもできます。 – kuzurkurt