垃圾多久收集一次?

How often is garbage collected?

如果我理解正确的话,GC 是这样工作的:

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

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

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

我很好奇,因为我的 phone 有一个锁屏小部件。这是一个在锁屏上显示 HTML 页面的浏览器。它有效,所以每次我加载锁屏时都会重新加载小部件。

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

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

参考这个link,你的问题不在垃圾收集器中,我认为你的代码中有些变量被创建并位于内存中并且从未被释放,最好查看这些链接以获得 js实践

[1] JavaScript Best Practices

[2] OOP in JS