我正在使用Crystal Viewer在asp.net中显示报告。我注意到每次查看报告时,w3wp的内存使用量都会增加,并且在报告生成完成后不会下降。如果我继续运行相同的报告,内存会继续增加。这看起来不对。难道我做错了什么?这是我的代码:
protected void BtnOuvrirRapport(object sender, EventArgs e)
{
ReportDocument rptdoc = new ReportDocument();
examenTableAdapter adapter = new examenTableAdapter();
DataTable dt = adapter.GetData();
rptdoc.Load(Server.MapPath("NB_EXAMNE_Report.rpt"));
rptdoc.SetDataSource(dt);
rptdoc.RecordSelectionFormula = "{examen.study_rv_date} in {?fromdate} to {?todate}";
Session["rd"] = rptdoc;
rptdoc.Refresh();
}
protected void Page_Load(object sender, EventArgs e)
{
Response.AppendHeader("Refresh", "900");
ReportDocument rd = (ReportDocument)Session["rd"];
CrystalReportViewer1.ReportSource = rd;
CrystalReportViewer1.DataBind();
CrystalReportViewer1.RefreshReport();
CrystalReportViewer1.ReuseParameterValuesOnRefresh = true;
GC.Collect();
}
答案 0 :(得分:0)
w3wp将是IIS端。
对于IIS,应用程序池。你可以进行必要的调整。
在达到最大虚拟内存时或在几分钟内回收。 recycle将创建一个新的w3wp进程来处理新的web请求,旧的一个进程一旦完成它将杀死它。
请注意: 手动回收应用程序池将破坏所有会话。意味着所有会话都将变为空。 并且不用担心w3wp。垃圾收集器有时会减少使用量。