【问题标题】:ExtJS Heap Snapshots.. When Should I start worrying?ExtJS 堆快照.. 我应该什么时候开始担心?
【发布时间】:2014-09-11 17:21:37
【问题描述】:

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

【问题讨论】:

    标签: javascript memory extjs memory-leaks


    【解决方案1】:

    19 MB 基线表明您正在使用一个在内存中保存大量对象的库(如果我转到 Sencha 文档并浏览几个地方,我发现他们的页面也消耗了大约 19 MB 的内存,所以您看起来与他们差不多)。

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

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

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

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

    (对于大多数用户来说,我不会担心 30 mb 堆;)

    【讨论】:

    • 感谢您的详细解答!真的很感激。
    猜你喜欢
    • 2011-09-22
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    相关资源
    最近更新 更多