有没有什么办法来强制基于WebKit浏览器的JavaScript垃圾收集器?(Is there an

2019-09-16 15:08发布

在Internet Explorer中,我们可以强制的JavaScript垃圾收集用这种方法来执行:CollectGarbage();

该方法是未定义的Firefox浏览器。 你知道,如果有某种等价的?

谢谢。

Answer 1:

(不只是限制了该答案的基于WebKit的浏览器...)

  • 铬:如果从命令行/终端与启动它--js-flags="--expose-gc" ,那么它提供window.gc()
  • 火狐我认为需要单击“空闲内存”按钮about:memory
  • 歌剧有window.opera.collect()
  • 边上有window.CollectGarbage()
  • Safari浏览器,未知。

请注意,你不应该手动运行GC。 我只张贴了这个,因为它是开发测试非常有用。



Answer 2:

我一直只是试图迫使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,我可以迫使下一轮更大的阵列之前,真的检查。



Answer 3:

我不知道这是不是题外话,但有附加的Firefox称为FreeMemory( https://addons.mozilla.org/en-US/firefox/addon/freememory/ )运行垃圾或循环收集不参观一下:内存窗格中,可配置定时器。 我相信还有其他浏览器那里的替代品。



Answer 4:

访问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


文章来源: Is there any way to force the Javascript Garbage Collector in webkit based browsers?