在 Internet Explorer 中,我们可以使用以下方法强制执行 Javascript 垃圾收集:CollectGarbage();
该方法在 Firefox 上未定义。你知道是否有某种等价物吗?
谢谢。
在 Internet Explorer 中,我们可以使用以下方法强制执行 Javascript 垃圾收集:CollectGarbage();
该方法在 Firefox 上未定义。你知道是否有某种等价物吗?
谢谢。
(不仅仅是将此答案限制为基于 WebKit 的浏览器......)
--js-flags="--expose-gc"
,那么它会提供window.gc()
.about:memory
.window.opera.collect()
。window.CollectGarbage()
.请注意,您不应该手动运行 GC。我只发布了这个,因为它对开发测试很有用。
我一直在尝试强制 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/ ) 的 firefox 插件可以在没有运行垃圾或循环收集的情况下运行访问 about:memory 窗格,带有可配置的计时器。我相信那里有其他浏览器的替代品。
Visit about:memory
.
From page's documentation on 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