Chrome垃圾收集

Chrome garbage collection

本文关键字:Chrome      更新时间:2024-06-17

我必须为我的应用程序创建并保留数十万个对象。我在Chrome中注意到,有时当我加载页面时,即使我已经更改了0个代码,创建对象的时间也会比平时长。然后,在创建对象之后,页面的运行速度将比平时慢;CPU探查器通常会说它是GC或使用大部分CPU的某个随机函数。就像我说的,有时我会刷新页面而不更改任何代码,我不会看到这种行为。这两者是相辅相成的:如果对象由于任何原因创建得很慢,页面就会运行得很慢并说它是一个随机函数或GC。

在IE中,页面每次都按照我的预期运行。

如果不看到成千上万行代码,你就无法诊断任何东西,但有人能为我提供任何想法吗?Chrome为什么会表现出这种行为?有什么简单的调整我可以试试吗?谢谢

一个简单的提示就是这样。在没有看到您的代码的情况下,我不确定它是否适用。如果您使用以下模式创建对象:

function Foo() {
    this.func1 = function () { ... };
    this.func2 = function () { ... };
}

等等。,然后使用这个模式:

function Foo() {
}
Foo.prototype.func1 = function () { ... };
Foo.prototype.func2 = function () { ... };

后者最终会更快。我不确定它是否更能提高内存效率,但很可能。