相关疑难解决方法(0)

JavaScript封闭是如何被垃圾收集的

我已经记录了以下Chrome错误,这导致我的代码中存在许多严重且非显而易见的内存泄漏:

(这些结果使用Chrome Dev Tools的内存分析器,它运行GC,然后获取未收集的所有内容的堆快照.)

在下面的代码中,someClass实例是垃圾回收(好):

var someClass = function() {};

function f() {
  var some = new someClass();
  return function() {};
}

window.f_ = f();
Run Code Online (Sandbox Code Playgroud)

但在这种情况下它不会被垃圾收集(坏):

var someClass = function() {};

function f() {
  var some = new someClass();
  function unreachable() { some; }
  return function() {};
}

window.f_ = f();
Run Code Online (Sandbox Code Playgroud)

和相应的截图:

Chromebug的屏幕截图

似乎闭包(在这种情况下,function() {})如果对象被同一上下文中的任何其他闭包引用,则所有对象都保持"活动",无论该闭包本身是否可以访问.

我的问题是关于其他浏览器(IE 9+和Firefox)的关闭垃圾收集.我对webkit的工具非常熟悉,比如JavaScript堆分析器,但我对其他浏览器的工具知之甚少,所以我无法对此进行测试.

在这三种情况中哪些将IE9 +和Firefox垃圾收集 someClass 实例?

javascript firefox internet-explorer garbage-collection google-chrome

166
推荐指数
3
解决办法
2万
查看次数

null 与 undefined 的 Javascript 内存影响

我在内存利用率对我们非常重要的领域工作,因为我们不在您的经典 Web 浏览器/硬件上运行。

我们在应用程序中经常使用 null,我不清楚的一件事是 null 是否比将变量分配给 undefined 占用更多空间。

我们是否知道其中一个在内存使用方面的成本更高?

感谢帮助!

javascript memory null memory-management undefined

5
推荐指数
1
解决办法
2554
查看次数