Backbone.js +堆快照谷歌浏览器

时间:2015-08-20 07:31:22

标签: javascript backbone.js google-chrome-devtools

我想知道单页应用程序中这是否正常

如果您转到:http://todomvc.com/examples/backbone/并拍摄一些添加和删除待办事项的堆快照 - 即使我删除了之前添加的所有待办事项,堆快照的内存也会每次都增加。

enter image description here

这是正常的吗?

如果我删除所有待办事项,这应该回到初始值吗?

谢谢

2 个答案:

答案 0 :(得分:1)

  

如果我删除所有待办事项,这应该回到初始值吗?

是和否。

它应该回到它的初始值(或关闭),但这不会发生,直到实际触发了垃圾收集,这在您的情况下看起来并不像。您可以在"时间轴"下手动触发它。单击小垃圾桶图标选项卡。

在录制时间轴(并检查内存复选框)时执行此操作,以再次查看堆使用情况。

您会注意到节点数量一直没有下降到最初加载页面的位置,如果您不断添加/删除待办事项并多次触发垃圾回收,它会不断上升。这可能表明存在小漏洞,可能需要进一步调查。

enter image description here

答案 1 :(得分:0)

它可能是泄漏,也可能是应用程序只是缓存某些数据结构。堆积使用量也可能增长,因为V8将产生更多代码,例如作为功​​能优化的结果。即使不再调用该函数,此类代码在收集之前可能会在几个GC阶段中存活。这很复杂,一般情况下你不应该担心,因为VM应该照顾它。请记住,VM可能会根据自己的需要分配一些内部数据结构,通常会随着时间的推移收集它们。要查看JavaScript堆增长是否有效,您可以记录堆分配时间轴(“配置文件面板”>“记录堆分配”)。这将允许您按分配时间过滤对象,然后确定这些对象是否应该存活:

enter image description here