在Javascript应用程序中搜索一些内存泄漏,我尝试使用Chrome DevTools Profiler。是否有一些详细信息描述了可能在其中找到的所有条目?
例如,在执行一个简单的“打开主页,打开另一个页面,返回主页”并查看快照的比较后,我可以找到具有大对象数和我感兴趣的行“(数组)”。打开那个节点时,我看到数千行像......
我在哪里可以读到这个?
答案 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
最有趣的项目是您的脚本创建的对象。