Javascript JQuery闭包内存泄漏

Javascript JQuery闭包内存泄漏,javascript,jquery,internet-explorer,memory-leaks,closures,Javascript,Jquery,Internet Explorer,Memory Leaks,Closures,我做了一些研究(),但不完全了解JS闭包以及它们如何影响内存泄漏。我正在做更多的研究,因为我问这个问题是为了更好地理解它,但我想我会看看是否有人能在我做的时候看到这个问题并诊断出问题 我在我的网站上使用jQuery更新表中的数据。当它被使用时,它会慢慢地在内存中爬行,但最大的问题是当用户刷新页面时,它会跳跃约3MB。在浏览器中打开其他选项卡时也会出现类似问题,使用几个小时后可能会占用200MB内存。通过阅读,我认为我已经将问题缩小到代码中的一个闭包问题。这是做大部分工作的主要部分 $(docum

我做了一些研究(),但不完全了解JS闭包以及它们如何影响内存泄漏。我正在做更多的研究,因为我问这个问题是为了更好地理解它,但我想我会看看是否有人能在我做的时候看到这个问题并诊断出问题

我在我的网站上使用jQuery更新表中的数据。当它被使用时,它会慢慢地在内存中爬行,但最大的问题是当用户刷新页面时,它会跳跃约3MB。在浏览器中打开其他选项卡时也会出现类似问题,使用几个小时后可能会占用200MB内存。通过阅读,我认为我已经将问题缩小到代码中的一个闭包问题。这是做大部分工作的主要部分

$(document).ready(function(){
setDateSelect();
var url_fm_smry=url_fm_smry_base + url_fm_currdate2 + url_region;
$.getJSON(url_fm_smry,function(data)
{
    $('#summaryContainer').empty();
    $('#summaryTblTmpl')                 // Select the template.
    .tmpl(data.d.results)               // Bind it to the data.
    .appendTo('#summaryContainer');     // Render the output.
});

$.getJSON(url_fm_meta + url_region,function(data)
{
    $('#runDTM').empty();
    $('#runDTMTmpl')                     // Select the template.
    .tmpl(data.d.results)               // Bind it to the data.
    .appendTo('#runDTM');               // Render the output.
});

setInterval(summaryCall,5000);});
setDateSelect
加载一个下拉菜单,其中包含基于今天日期的可变日期

url\u fm\u smry
是一个局部变量,由其他函数需要访问的3个全局变量组成

summaryCall
只需执行上述操作,每5秒重复一次即可使用新的数据流更新表

感谢您的建议和帮助。

在内部,是否:

getJSON: function( url, data, callback ) { 
    return jQuery.get( url, data, callback, "json" );
}
在此行设置断点并查看函数范围。至少有:

  • jQuery
  • jQuery.getJSON回调
  • jQuery.get内部调用
  • jQuery.get内部回调
  • 调用
    jQuery.get
    直接使用命名函数而不是匿名函数,以避免闭包范围

    参考资料


    我认为这不是一个结束问题。在您发布的代码中,我无法检测到闭包。无关,但您应该避免在此处使用setInterval b/c它可能会在初始调用完成之前再次调用summaryCall。相反,在summaryCall完成后尝试使用调用setTimeout。什么是
    .tmpl()
    ?请链接到插件文档。它是否需要一些
    destroy
    调用来忘记以前附加的数据?猜猜
    jQuery.get
    在内部做什么?不管怎样,这个评论如何回答这个问题?