在 Internet Explorer 中,我们可以使用以下方法强制执行 Javascript 垃圾回收:CollectGarbage();
该方法在 Firefox 上未定义。你知道是否有某种等价物吗?
谢谢。
(不仅仅将此答案限制于基于 WebKit 的浏览器......)
--js-flags="--expose-gc"
从命令行/终端启动它,那么它会提供 window.gc()
。about:memory
中的“释放内存”按钮。window.opera.collect()
。window.CollectGarbage()
。请注意,您不应手动运行 GC。我发布这个只是因为它对开发测试有用。
访问
about:memory
。
来自 MDN 页面的文档:
about:memory 是 Firefox 中的一个特殊页面,可让您查看、保存、 加载并比较 Firefox 内存使用情况的详细测量结果。它也是 让您可以执行其他与内存相关的操作,例如触发 GC 和 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,我可以在强制下一轮使用更大的数组之前进行检查。
我不确定这是否不是题外话,但 firefox 有一个名为 FreeMemory 的插件(https://addons.mozilla.org/en-US/firefox/addon/freememory/)来运行垃圾或无需访问 about:内存窗格即可循环收集,并具有可配置的计时器。我相信其他浏览器还有其他选择。