我有一个 SqlDataReader
读取大型记录集(大约 1M 条记录),我正尝试使用 iTextSharp 将其导出到 PDF 文档。
这是我的代码:
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);
}
当我运行它时,它导致了严重的内存泄漏。 我可以做些什么来改善这一点?
最佳答案
可以设置每页行数,减少内存压力
if (rowNum>0 && table1.Rows.Count % 7 == 0) // 7 = number of rows per page
{
pdfDoc.Add(table1);
table1.DeleteBodyRows(); // free resources
pdfDoc.NewPage();
}
关于c# - iTextSharp - 非常大的表内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14101142/