【问题标题】:How often is garbage collected?垃圾多久收集一次?
【发布时间】:2015-05-17 13:09:55
【问题描述】:

如果我理解正确,GC 的工作方式如下:

MyClass.prototype.render = function(){
    var largeArray = [];

    for (var i = 0; i < 1000; i++) {
        largeArray.push({
            firstName: 'John',
            lastName: 'Smith'
        });
    }
}

当调用render() 时,largeArray 被标记为垃圾回收,但不会立即被回收。

我很好奇,因为我的手机有一个锁屏小部件。它是一个在锁屏上显示 HTML 页面的浏览器。它的工作原理是每次我加载我的锁屏时都会重新加载小部件。

问题是,我每 5 次打开锁屏,手机就会重新启动到安全模式。似乎当我解锁手机时,小部件浏览器在垃圾收集可以运行之前关闭。听起来对吗?

Here's my widget. 在控制台输出主要对象的大小。

【问题讨论】:

  • GC 依赖于实现。

标签: javascript browser garbage-collection


【解决方案1】:

请参阅此link,您的问题不在垃圾收集器中,我认为在您的代码中有些变量已创建并位于内存中并且从未释放,请查看 js 最佳实践的链接

[1] JavaScript Best Practices

[2] OOP in JS

【讨论】:

  • *“在你的代码中有些变量被创建并位于内存中并且从未释放” - 这就是 GC 的用途。
  • @SpencerWieczorek:可能措辞不佳,但他的意思是:“在您的代码中的某个地方,内存仍在被引用,因此它们永远不会被垃圾收集”。在使用内置垃圾收集的语言进行编程的程序员中,这通常被称为“从未发布”,因为它隐含了“从未发布”的含义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
  • 1970-01-01
  • 2011-01-21
  • 1970-01-01
  • 1970-01-01
  • 2018-12-30
相关资源
最近更新 更多