큰 레코드 세트 (1M 레코드 약)를 읽는 중 SqlDataReader
이 있는데 iTextSharp를 사용하여 PDF 문서로 내보내려고합니다. iTextSharp - 매우 큰 테이블 메모리 누수
if (reader.HasRows)
{
int rowNum = 0;
while (reader.Read())
{
if (rowNum % 2 == 1)
datatable.DefaultCell.GrayFill = 0.8f;
else
datatable.DefaultCell.GrayFill = 0.95f;
if (meRes.Trans(Lang, "Dir", CompanyID).ToUpper() == "RTL")
for (int i = reader.FieldCount - 1; i >= 0; i--)
{
object o = reader[i];
datatable.AddCell(new Phrase(o.ToString(), fntList));
}
else
for (int i = 0; i < reader.FieldCount; i++)
{
object o = reader[i];
datatable.AddCell(new Phrase(o.ToString(), fntList));
}
rowNum++;
}
myDocument.Add(datatable);
}
나는이 실행
, 그것은 끔찍한 메모리 누수의 원인 : 이 내 코드입니다. 개선하려면 어떻게해야합니까?
에게 감소 페이지 당 행의 수를 설정할 수있다'. 그게 문제가 될 수있다 –
만약 내가'datatable.AddCell (new Phrase (reader [i], fntList));'을 수행 중이라면 이것이 문제라고 생각하지 않는다. 여전히 메모리 누출을 야기한다. – ronen
데이터를 데이터의 메모리 내 표현 인 datatable로 내 보냅니다. 귀하의 mydocument.Add (datatable)까지 모든 것을 메모리에 축적. 누수가없고, 단지 나쁜 디자인입니다. – mkl