Chrome DevTools Profiler

时间:2013-09-18 11:20:16

标签: javascript google-chrome google-chrome-devtools profiler

在Javascript应用程序中搜索一些内存泄漏,我尝试使用Chrome DevTools Profiler。是否有一些详细信息描述了可能在其中找到的所有条目?

例如,在执行一个简单的“打开主页,打开另一个页面,返回主页”并查看快照的比较后,我可以找到具有大对象数和我感兴趣的行“(数组)”。打开那个节点时,我看到数千行像......

  • (脚本行结束)[] @ 89876
  • (过渡阵列)[] @ 748323
  • (对象属性)[] @ 77529
  • (地图描述符)[] @ 13823
  • (代码重定位信息)[] @ 722653
  • [] @ 748003
  • (对象元素)[] @ 40917

我在哪里可以读到这个?

1 个答案:

答案 0 :(得分:11)

堆中有许多不同的v8内部内容无法从javascript访问。

例如(脚本行结束)是一个具有脚本行结束偏移量的数组。 v8需要它来设置断点。

每次创建对象时,v8都会做很多事情并为它们分配内存。 有关v8的信息,请参阅Lars Bak视频。 http://www.youtube.com/watch?v=hWhMKalEicY

如果您对该主题感兴趣,则有关于v8内部的幻灯片和演示文稿的数量。

查找泄漏的最简单方法是使用“记录堆分配”配置文件。 它会显示带有分配的“实时”图表。

您需要开始录制,重复您的场景几次,如果代码有泄漏,那么您将在图表上看到相同数量的蓝色垂直条。所以你应该停止录制并选择中间某处的蓝色条,看看它有什么对象。

第一个蓝色条没有意思,因为它可能只有一次分配。

最后一个也没有意思,因为它可能有分配,将在你的方案的下一次重复发布。

所以最好的候选人是中间的酒吧。 http://www.youtube.com/watch?v=x9Jlu_h_Lyw

最有趣的项目是您的脚本创建的对象。