javascript - jQuery Ajax 和内存泄漏问题

标签 javascript jquery memory-leaks

我有一个网络应用程序可以执行定期扫描操作,并在特定页面上显示这些操作(以及任何先前完成的操作)的状态。我有一个使用 jQuery 发送的 Ajax 请求,它返回我当前所在的同一页面,并根据给定的时间变量(最后更新)进行修改,以仅包括正在运行的扫描和任何最近完成的扫描。

显然,在将其打开过夜后(这不是正常用例),在 IE8 上返回“第 112 行内存不足”(第 112 行没有任何值得注意的内容)。我试图找出我做错了什么,以及哪里可能泄漏。

我的问题是:由于我正在重新加载同一页面,但只获取其中的一部分,“就绪”处理程序是否会重新运行或其他什么?在大多数情况下,事件操作表将是空的,因此我不会不断增加表的大小或其他明显的事情。

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 );
  } 
);

最佳答案

您可以使用类似 sIEve 的工具检测那些吞噬你内存的事物。
我猜想使用的 DOM 节点的数量(它们不需要成为文档树的一部分)会随着每次操作而增加。

如果您忘记 jQuery 的 DOM 操作部分,那将是最好的,众所周知 jQuery 使用的方法容易出现此问题,而它们部分使用了一些“肮脏”的东西,例如innerHTML。

您能举例说明您希望#activescans 中包含哪些内容吗?

关于javascript - jQuery Ajax 和内存泄漏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4216226/

相关文章:

javascript - Mvc表如何根据条件更改文本颜色

javascript - 如何仅在 ng-repeat 中单击的特定项目旁边显示加载程序符号

javascript - 如何使用 Semantic UI 在下拉列表中填充 json

javascript - 如何创建 3 个可调整的 div?

javascript - 如何在 JQuery 中使用 localStorage 为 ajax 调用创建自定义缓存机制?

jquery - 是否可以在同一页面上加载多个不同版本的 jQuery?

iphone - 使用自动释放返回对象,但我仍然泄漏内存

javascript - 如何获取 'getJSON' 响应头

ios - iOS字典导致内存泄漏

delphi - 为什么没有发生MemoryLeak或AccessViolation?