有没有办法在基于 webkit 的浏览器中强制使用 Javascript 垃圾收集器
Is there any way to force the Javascript Garbage Collector in webkit based browsers?
在Internet Explorer中,我们可以强制Javascript垃圾收集使用此方法执行:CollectGarbage();
该方法在 Firefox 上是未定义的。你知道是否有某种等价物吗?
谢谢。
(不仅仅是将这个答案限制在基于 WebKit 的浏览器上......
- Chrome:如果您使用
--js-flags="--expose-gc"
从命令行/终端启动它,那么它会提供window.gc()
. - 火狐 我认为需要单击
about:memory
中的"释放内存"按钮。 - 歌剧有
window.opera.collect()
. - 边缘有
window.CollectGarbage()
。 - 野生动物园,未知。
请注意,不应手动运行 GC。我发布这个只是因为它对开发测试很有用。
访问about:memory
.
从 MDN 上的页面文档:
about:memory is a special page within Firefox that lets you view, save,
load, and diff detailed measurements of Firefox's memory usage. It also
lets you do other memory-related operations like trigger GC and CC
我一直在尝试强制使用 GC,似乎无论实际的浏览器如何,相对好的方法是运行以下代码段:
function gc(max) {
var arr = [];
for (var i = 0; i < max; i++) {
arr.push(i);
}
return arr.length;
}
for (var i = 0; ; i++) {
// repeat until you have enough:
gc(Math.pow(2, i));
}
当然,一个问题是知道何时停止调用gc(...):因为需要一些外部方法来检测GC是否成功结束。就我而言,我使用的是嵌入式 WebView,我可以在强制下一轮使用更大的数组之前进行检查。
我不确定这是否不是题外话,但有一个名为 FreeMemory (https://addons.mozilla.org/en-US/firefox/addon/freememory/) 的火狐附加组件可以在不访问 about:memory 窗格的情况下运行垃圾或循环收集,带有可配置的计时器。我相信其他浏览器还有其他选择。
相关文章:
- JavaScript选择器:查找包含具有特定属性的子体的节点
- VS2010 javascript调试器希望在VS2010的新实例中启动
- 用于 Eclipse 的 JavaScript 编辑器插件
- 如何使用xpath和Javascript执行器打印文本
- Javascript解析器本身是用类似ESPRIMA的Javascript编写的,这是如何工作的?然后谁解析ESPRIM
- 用于Grails的JavaScript微调器
- 在页面检查器中启用javascript调试器
- 如何为Eclipse安装JavaScript编辑器
- Chrome javascript调试器在超时时暂停,可以't调试单击事件
- 信任Javascript垃圾收集器
- 用于输入文本字段的Javascript验证器,仅用于两位小数
- 在 Node.Js 脚本中使用 Javascript 计时器在特定时间触发事件
- 在 JavaScript 上添加/删除侦听器(垃圾收集器)
- Undersatnding JavaScript 不可变变量和垃圾收集器
- 有没有办法在基于 webkit 的浏览器中强制使用 Javascript 垃圾收集器
- javascript垃圾收集器处理全局变量吗?
- Javascript -垃圾收集器计时器
- 内部引用对象上的Javascript垃圾收集器
- Javascript选择器中实时收集和非实时收集的区别是什么?
- Javascript中的循环引用/垃圾收集器