【问题标题】:How to debug what appears to be long pauses between GC events in Chrome Javascript如何调试 Chrome Javascript 中 GC 事件之间的长时间停顿
【发布时间】:2014-08-15 11:19:53
【问题描述】:

我一直在尝试优化 Angular 网站,但在某些路线之间切换时,我的页面响应速度会出现大量延迟。显示的每个页面并不庞大,但其中包含相当数量的元素和合理数量的绑定。我已经用 bindonce 完成了我能做的事情,所以我用 Chrome 查看了调试器,我发现我的大部分时间似乎都花在了 GC 上。

奇怪的是,每个 GC 之间似乎存在巨大的差距,我正试图弄清楚这些差距到底是什么。

我猜它实际上是在删除项目时,而小条是在它进行标记和扫描时,但我对这种深度分析 JS 的程度并不熟悉。我的大部分工作都是在 C++/C#/Java 中完成的。

【问题讨论】:

  • 你能运行另一个配置文件并观察 DOM 节点数吗?我想知道您的代码中是否发生了某种意外递归,需要定期 GC。

标签: javascript angularjs google-chrome garbage-collection


【解决方案1】:

在半秒内收集了超过 20MB 的垃圾。 GC 很忙。这也意味着您的软件也很忙,通过某些对象产生至少相同的内存使用量。 为了更好地了解垃圾的来源,此时分析堆分配可能很有用。 在 Profiles 下,您可以拍摄堆分配的快照,并查看创建了哪些类型的对象、哪些对象消耗了最多的内存等。

【讨论】:

    猜你喜欢
    • 2020-10-17
    • 2019-05-29
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    相关资源
    最近更新 更多