저는 현재 수백만 라인이 넘는 대용량 파일 또는 여러 파일을 읽는 프로젝트를 진행하고 있습니다. 그렇게하기 위해 Streamreader를 사용하여 각 행을 읽습니다. 모든 줄에 특정 문자열이 포함되어 있는지 확인합니다. 조건이 true이면 행을 추가합니다.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.
}
}
}
그래서 매번 조건이 참이, 행 객체가 추가되고이 라인의 수백만도있을 것와 : 나는 내 앞에 있지 코드를 갖고 있기 때문에 나는 메모리에서 코드를 재현해야 내 RAM 메모리에 영향을 미치고 "폭발"할 가능성이 가장 큰 수백만 개의 개체입니다. 나는 여러 가지를 시도했다. 행 개체가있는 목록을 만들고 특정 번호 뒤에 지우십시오. 그러나 나는 그것이 숫양에서 물건을 지우지 않을 것임을 알아 내야 만했다 (list.Clear). 수동으로 가비지 수집기를 호출하려고했지만 성능에 부정적인 영향을줍니다. 그리고 지금 나는 이것을 처리하는 방법을 모르는 시점에 있습니다. 50 만 라인으로 거의 7GB의 RAM에 도달하고 8GB의 메모리를 사용할 수 있습니다.
나는 어떻게하면 높은 숫양을 피할 수 있는지, 아니면 최소한 숫양을 낮게 유지할 수 있는지 제안 해 주시면 감사하겠습니다.
나는 또한 아무것도 분명 느낌이 날에 그것을 밖으로 또는 지점 간 무료가 아닌 경우 I에 유래에 새로 온 것을 추가 할: P에게
빠른 답변을 주셔서 감사합니다. 나는 그것이 관리 할 수 없다고 생각했다. 행 수를 추적 할 수 있으므로 제안을 구현하려고합니다. migradoc뿐만 아니라 rtf 문서도 생성 할 수 있습니다. – kuzurkurt