我目前正在研究一個讀取大型文件或者多個文件的項目,這些文件需要>數百萬行。爲此,我使用Streamreader來讀取每一行。 檢查每一行是否包含某個字符串。當條件成立時,我會添加一行。我要重現內存中的代碼,因爲我沒有在我面前代碼:如何通過在MigraDoc中添加大量行來避免高內存使用率?
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的可用空間。
我將不勝感激任何建議,我可以如何避免高內存或至少保持公羊低。
我也想補充一點,我在新的計算器如果有什麼不清楚隨時指出來或點對我道:通過閱讀你的輸入文件P
首先感謝您的快速回答。那麼我認爲它是不可管理的。我可以跟蹤行數,我會盡力實施你的建議。你也可以用migradoc生成rtf文件。 – kuzurkurt