代码之家  ›  专栏  ›  技术社区  ›  KallDrexx

为什么Asp.net定时器/updatepanels会在Chrome中泄漏内存,并且可以修复/解决它?

  •  5
  • KallDrexx  · 技术社区  · 14 年前

    我为我们公司建立了一套内部网站来管理我们的一些流程。我注意到这些页面存在大量内存泄漏,导致页面使用的内存远远超过150mb,这对于一个由单个表单和一个GridView组成的页面来说是荒谬的,它一次显示7-10行数据,有时数据一整天都没有变化。这是一个问题,因为它是减慢我们的客户机由于缺乏可用内存。

    经过一些测试,内存泄漏似乎非常容易重现,而且非常明显。我使用以下asp.net标记创建了一个页面:

    <body>
    <form id="form1" runat="server">
    <div>
        <asp:scriptmanager ID="Scriptmanager1" runat="server"></asp:scriptmanager>    
        <asp:Timer ID="timer1" runat="server" Interval="1000" />
    
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
        </ContentTemplate>
        </asp:UpdatePanel>
    </div>
    </form>
    </body>
    

    这里面绝对没有暗号。这是整页的内容。在Chrome上运行这个站点可以在20-30秒内将内存使用量提高到25兆。让它运行几分钟会使内存上升到70兆左右。

    我是否使用了错误的计时器和更新面板,或者这是一个纯Asp.net问题,没有解决方法?

    注意:我说的不是服务器上使用的内存,而是客户机上使用的内存。


    编辑: 看起来这是Chrome的问题。Firefox和IE8在长时间运行此页面时似乎没有任何内存问题。

    2 回复  |  直到 14 年前
        2
  •  2
  •   Janatka    7 年前

    我知道离上次的回答已经有一段时间了,但也许我的回答会对某些人有所帮助。我也有类似的问题。我需要定时器在后台工作。我最终用更新面板的定时器导致内存泄漏。我的计时器在更新面板里面。使更新面板不可见 Visible:=False 解决了问题。看起来页面每秒钟都被重画一次,导致内存大量使用。