iTextSharp - 非常大的表内存泄漏 [英] iTextSharp - very large table memory leak
本文介绍了iTextSharp - 非常大的表内存泄漏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个 SqlDataReader
读取一个大型记录集(大约1M记录),我正在尝试使用iTextSharp将其导出为PDF文档。
这是我的代码:
I have a SqlDataReader
reading a large record set (1M records approx.) and I'm trying to export it to a PDF document using iTextSharp.
This is my code:
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);
}
当我运行它时,它会导致可怕的内存泄漏。
我可以做些什么改进呢?
When I run this, it causing a terrible memory leak. What can I do differently to improve this?
推荐答案
你可以设置每页的行数来减少记忆压力
You can set the number of rows per page to reduce the memory pressure
if (rowNum>0 && table1.Rows.Count % 7 == 0) // 7 = number of rows per page
{
pdfDoc.Add(table1);
table1.DeleteBodyRows(); // free resources
pdfDoc.NewPage();
}
这篇关于iTextSharp - 非常大的表内存泄漏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文