ExtJS Heap Snapshots ..我该什么时候开始担心?

时间:2014-09-11 17:21:38

标签: javascript memory extjs memory-leaks

我想使用Chrome DevTools识别我的网络应用程序(Extjs 4.1 + PHP + OpenLayers)中的内存泄漏。我在浏览应用程序之前和之后拍摄了一些快照。如下所示,初始大小为19.5 MB。然后使用一些功能后它会增长到27.9 MB。我将应用程序打开然后在几个小时后回来并拍摄另一个堆快照,它是28 MB。然后我刷新了页面,它又恢复了19 MB。这是否意味着这些功能正在占用大量的机器内存,我应该担心?

enter image description here

1 个答案:

答案 0 :(得分:1)

19 MB的基线显示你正在使用一个库,它在内存中保存了很多对象(如果我去Sencha文档并导航几个地方,我看到他们的页面也消耗了~19mb的内存,所以你似乎与他们相提并论。

您的应用似乎还将一些大型对象加载到内存中(使用您的应用时额外增加了10 MB - 假设此处没有刷新),但是因为您刷新了页面并且占用空间降至~19 MB的基线您似乎在Chrome中没有任何内存泄漏。但是,在您的站点中导航时,可能无法释放未使用的对象。完成后,可以通过将对象设置为null(How to free up the memory in JavaScript)来释放内存。

Chrome中没有内存泄漏并不意味着IE或其他浏览器没有内存泄漏。

在页面上停留几个小时所消耗的额外0.1 MB内存可能需要考虑 - 特别是如果您的最终用户将长时间离开页面和/或以低功率运行机器或移动设备。但是,从透视角度来看,我的机器有8 GB的内存,所以我必须保持这个页面很长一段时间才能产生任何不利影响。

这是您可能觉得有用的内存生命周期管理的详细说明:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management#Real_life_example

(对于大多数用户,我不担心30 MB的堆;)