代码之家  ›  专栏  ›  技术社区  ›  Shawn D.

jQuery Ajax和内存泄漏问题

  •  2
  • Shawn D.  · 技术社区  · 14 年前

    我有一个定期扫描操作的web应用程序,在一个特定的页面上,显示这些操作的状态(以及任何以前完成的操作)。我有一个使用jQuery发送的Ajax请求,它返回我当前所在的页面,在给定一个时间变量(最后一次更新)的情况下进行了修改,只包含正在运行的扫描和最近完成的扫描。

    显然,在IE8上,在一夜之间(这不是一个正常的用例)没有打开之后,返回了“第112行内存不足”(在第112行中没有任何值得注意的地方)。我想弄清楚我做错了什么,哪里会漏水。

    我的问题是:既然我正在重新加载同一个页面,但只获取其中的一部分,那么“就绪”处理程序是否正在重新运行?在大多数情况下,active operations表将是空的,所以我并不是在不断地增加表的大小或一些明显的东西。

    function updateActiveScanList()
     {
        $.ajax({  
            method: "POST",
            url: "ScanList.action",
            data: { updatedTime: $('#updatedTime').val() },
            success: function(data) { 
    
    
            // Update the active scan list.
            $('#activescans').html( $("#activescans", data) );
    
            // the recent scans table update requires more massaging, omitted for brevity,
            // since there's nothing else done there, this happens even if nothing else is 
            // ever inserted.
        });
    }
    $(document).ready(
    
      function(){
          setInterval( updateActiveScanList, 30000 );
      } 
    );
    
    1 回复  |  直到 14 年前
        1
  •  4
  •   Dr.Molle    14 年前

    你可以使用像 sIEve 去发现吞噬你记忆的东西。
    我猜每次操作都会增加使用的DOM节点的数量(它们不需要成为文档树的一部分)。

    如果在DOM操作中忘记jQuery是最好的,jQuery使用的方法很容易出现这个问题,而它们部分使用了一些“肮脏”的东西,比如innerHTML。

    你能举个例子说明你喜欢什么样的内部活动扫描吗?