重复使用时,nsiTimer 会导致溢出或内存问题吗?
Can nsiTimer cause overflow or memory issues upon repeated use?
在 Mozilla 文档中它说:
initWithCallback():初始化一个计时器,使其在给定的毫秒间隔后触发。此版本需要一个函数来调用,并将一个闭包传递给该函数。
在此代码示例中:
setupTimer: function() {
var waitPeriod = getNewWaitPeriod();
myTimer.initWithCallback({
notify: function(t) {
foo();
setupTimer();
}
},
waitPeriod,
Components.interfaces.nsITimer.TYPE_ONE_SHOT);
}
传递给函数的闭包中实际包含多少。闭包是否保留整个堆栈的副本?此代码示例是否存在堆栈溢出或永远增加内存使用量的风险?
理论上,闭包保留了闭包范围内的所有内容(因此在这种情况下,setupTimer 中的局部变量加上 setupTimer 本身关闭的任何变量)。 请注意,这与调用堆栈不同:JS中的闭包作用域是词法的,而不是动态的,所以你如何到达你的函数并不重要,重要的是函数的源代码是什么样子的。
在实践中,JS引擎极大地优化了闭包,以加快对闭包中裸词的访问,因此闭包实际保持活动状态的集合可能小于我上面描述的理论集合。 但我不会依赖这个。
相关文章:
- 如何检测是否有溢出
- 如何通过溢出来判断元素被切断了多少像素:隐藏在父级上
- 如何在AngularJS应用程序的主体上动态设置溢出
- 重复应用 d3 转换导致的内存泄漏
- 使用滚动溢出-x进行无限循环
- 如何显示在给定极限内存在的所有素数
- IE7中的blockUI插件内存泄漏25kb
- Android在HTML容器中滚动,该容器具有CSS溢出属性
- Javascript闭包-如何防止内存泄漏
- 在滚动时,在隐藏滚动条和隐藏溢出的同时触发事件
- 基于订阅的nosql内存数据库
- 显示:阻止/无html元素,css.not从内存中释放
- jQuery Draggable:内存泄漏
- 图像宽度和高度,无拉伸或溢出
- 元素过多的HTML内存使用情况
- 如何使用Javascript在FireFox中将html从内存动态加载到iframe中
- 重复使用时,nsiTimer 会导致溢出或内存问题吗?
- 当从UI传递文件到webService时,Java内存溢出
- 为什么?”error = console.trace)(); '使'堆内存溢出'在Node.js中
- setInterval导致内存溢出