当探查器将(程序)置于80%的顶部时,我如何确定我的javascript应用程序中的挂断?我的逻辑是否太复杂,无法进行热点跟踪?我的记忆足迹太大了吗?这通常是什么原因?
更多信息:
答案 0 :(得分:25)
空闲周期(“无所事事”)也将呈现为“(程序)”(您可以将此SO页面分析几秒钟并获得100%的(程序)),这样这本身并不是一件好事的迹象。
另一件事是你实际看到你的应用程序滞后。然后(程序)将由V8绑定代码(以及它们调用的WebCore代码提供,基本上是任何东西:DOM / CSS操作,绘画,内存分配和GC,什么不是。)如果那样如果是这样,您可以录制应用程序的时间轴(切换到开发人员工具中的Timeline
面板,然后按下底部状态栏中的Record
按钮,然后运行申请一段时间。)你会看到很多内部事件,他们的时间是水平条。您将看到回流,样式重新计算,定时器触发,GC事件等等(顺便说一句,最新的Chromium版本具有改进的内存分析器使用时间线,因此您也可以监视某些内部因素使用的内存。)< / p>
要诊断内存问题(需要多次完整GC循环的多次分配),您可以使用Profiles
面板。在代码的密集部分开始之前获取堆快照,在此代码运行一段时间后再执行另一个快照。然后比较两个快照(底部的右侧SELECT),看看发生了哪些分配,以及它们对内存的影响。
答案 1 :(得分:3)
要检查是否因使用内存选项而变慢:chrome://memory
此外,您可以查看chrome://profiler/
,了解可能的提示。
另一种选择是在这里发布你的javascript代码。
答案 2 :(得分:3)
请参阅此链接:它会在Understanding Firebug profiler output
中为您提供帮助我会说你应该检查哪些方法占%。您可以尽量减少不需要的程序。我在你的图中看到,一些draw
方法消耗了大约14%,它在后台运行。可能是因为你的JS加载缓慢。你应该确定花时间。 FF和Chrome都具有显示网络流量的功能。看看yslow,他们对Firebug有很好的补充。
我会建议一些Chome的审核工具可以告诉你为什么会发生这种情况,你应该包括更多的信息:
无论如何,即使没有这一切,这里还有一个提高你性能的清单:
http://example.com/blah.js
- &gt; http://cdn2.example.com/blah.js
查看YSlow plugin和Google PageSpeed,两者在提高效果方面都非常有用。