【发布时间】:2010-09-01 11:20:15
【问题描述】:
我正在使用以下在 Firefox 中泄漏内存的模式:
$(function() {
(function() {
var callee = arguments.callee;
$.ajax({
url: '...',
success: function() { ... setTimeout(callee, 1000); },
error: function() { ... setTimeout(callee, 1000); }
});
})();
});
即使成功/错误除了再次调用 setTimeout 什么都不做,内存泄漏仍然存在。我正在通过 Windows 任务管理器观察泄漏;如果页面保持打开状态,firefox.exe 的内存使用会慢慢上升。对于这段代码的最终版本,我只需要每分钟更新一次,但每秒一次会更快地显示内存泄漏!
(注意:这看起来与this question 的问题非常相似,但那里选择的答案似乎不适合 Firefox)
【问题讨论】:
-
函数被调用者在做什么?你确定没有循环引用吗?
-
“被调用者”模式只是匿名函数中计时代码的一种方式。即使代码与上面一样裸露,仍然存在内存泄漏。
-
Paul Irish 出色的 Things I learned from the jquery source 视频中讨论了该模式 - 大约在 8 分钟左右观看
-
我有同样的问题尝试使用队列。
标签: jquery firefox memory-leaks