Asp.net w3wp.exe是否会增加并导致内存不足?

Asp.net w3wp.exe是否会增加并导致内存不足?,asp.net,sql-server,crystal-reports,Asp.net,Sql Server,Crystal Reports,我正在使用Crystal Viewer在asp.net中显示报告。我注意到,每次查看报告时,w3wp的内存使用量都会增加,并且在生成报告后不会下降。如果我继续运行相同的报告,内存将继续增加。这似乎不对。我做错什么了吗?这是我的代码: protected void BtnOuvrirRapport(object sender, EventArgs e) { ReportDocument rptdoc = new ReportDocument();

我正在使用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();
  }
w3wp将是IIS端

对于IIS,应用程序池。你可以做必要的调整

达到最大虚拟内存时或在几分钟内回收。 recycle将创建一个新的w3wp进程来处理新的web请求,而旧的w3wp进程一旦完成就会终止它

请注意: 手动回收应用程序池将销毁所有会话。这意味着所有会话都将变为空。
不要担心w3wp。垃圾收集器有时会减少使用量。

感谢Oliver的回答,我试图从IIS手动回收,但收到消息“无数据源”。@gilas,1,检查w3wp内存消耗是否是服务器的主要问题?它是否会影响服务器性能?如果没有,那么您最好坚持IIS应用程序池的默认设置。在显示一些报告后,当我在池应用程序中设置虚拟内存值时,我得到一个错误nodata@gilas,不确定您在应用程序池中设置了什么类型的值。当它循环使用时,它将擦除所有会话。对代码进行一些修改,可能不需要将整个报告rptdoc保存到会话中。会话中存储的内容/大型数据越多,ur w3wp的内存就会越高。会话默认值为20分钟,因此20分钟后使用的内存将被重新使用或删除。我使用会话是因为crystal report与按钮不在同一页中…: