Tag: 内存

浏览器内存不断增加javascript ajax调用

我有一个奇怪的行为。 我正在使用一个相当重的页面(4000个节点),用于显示交付操作的调度系统。 每30秒。 我用jquery刷新了操作列表(超过4000的3000个节点)。 它运行得非常好,但是…每次,firefox和chrome的内存都会增加3到6ko。 当然,过了一会儿,浏览器崩溃了…… 有人有什么想法吗? 这是内存泄漏吗? javascript无法到达某个地方吗? 我检查过,每次刷新后我都有相同数量的节点,这意味着正确地进行了更换。 在每次刷新操作后,我重置了几个事件:这是一个例子 $(“#orders_list .list_table_row”).hover( function(){ // mouse over $(this).children().css(“background-color”,”#E0E0E0″); }, function(){ // mouse out $(this).children().css(“background-color”,””); }); 任何建议都非常受欢迎,提示,任何事情…… 我找到了两个有趣的链接: http : //www.javascriptkit.com/javatutors/closuresleak/index3.shtml和http://www.jibbering.com/faq/faq_notes/closures.html 谢谢,保罗 修订版1 – 添加了代码示例和链接

在重型AJAX应用程序中,Firefox特定内存会增加

我很困惑为什么我的应用程序的内存在Firefox中的增长速度比其他浏览器快得多。 基本上,该应用程序使用了相当数量的AJAX,其基本操作是加载具有平均HTML级别的新post集,并且通常具有大图像。 每个post的总平均数据量(包括加载的图像)低于1MB,可能是900k。 使用jQuery 1.7.1。 在Chrome中,内存似乎很稳定,但在Firefox中,每次后期加载都会导致大约20MB的新内存使用量。 由于加载了很多post,你的内存很快就会超过1GB甚至1.4GB,而且事情很快就会停滞不前。 深入研究Firefox,我尝试使用’delete’消除闭包和任何无关的变量。 没有太大的进步。 然后我开始删除function,似乎一切都做出了贡献。 删除工具提示,一些过​​多的FB小部件重新加载(每个post一个评论小部件),我做了一个很大的改进,每个post下降到10MB新内存。 但除此之外,我不能低得多! 基本上,如果我只是通过$ .post()加载新的html +图像(再次大约900k),每个post都会增加~8mb的新内存,即使新图像有“display:none”。 (也试过禁用萤火虫)。 这是我第一次尝试内存管理,但这似乎是一个很大的开销,而且奇怪,因为我认为内存确实没有像Chrome那样增加。 好像我应该让内存增加​​更多符合加载的数据量,而不是10倍! (或者根本没有像Chrome一样好的……) 这真的合理吗? 关于在哪里寻找问题或我可以做些什么以进一步减少这个问题的任何想法? 谢谢! 更新 : 正如鲍里斯恰当地观察到的那样,内存增加几乎完全是由于图像(至少80%)。 但是内存的增加再次是加载图像大小(10倍)。 我学习使用的另一件事:内存 – 如果我只是打开一个新的空标签,内存会迅速下降,几乎所有添加的图像相关内存都会消失。 我猜这是GC的开始,因此正如鲍里斯猜测的那样,它似乎可能是一个GC问题? 如果是这种情况,我如何调查为什么它不会仅在FF中自然触发? 有没有办法在JS中触发它? 正如我所提到的,我试图通过删除闭包…… 另一个想法,可以将事件(通过jQuery)绑定到图像元素而不是div是坏的吗? 我认为jQuery处理了所有这些东西。

jQuery .html()方法泄漏内存吗?

我正在构建一个带有requestAnimationFrame循环的游戏,该循环包括对jQuery html()方法的调用。 它只是更新游戏操作旁边的状态窗口中的文本。 我注意到Chrome的时间线监视器,DOM节点上升和上升,每分钟数千! 当我改变我的代码: // creates a ton of DOM nodes $(“#readout”).html(data); 至 // DOM nodes does not increase over time document.getElementById(‘readout’).innerHTML = data; “memory leaks”消失了。