【问题标题】:Are There Memory Issues with Ext.jsExt.js 是否存在内存问题
【发布时间】:2009-06-10 21:22:39
【问题描述】:

最近我使用 Ext.js 重做了一个应用程序的 UI,我注意到 IE 的内存使用量在查看它时似乎非常大。 Ext.js 在使用 IE 时是否存在已知的内存问题?

【问题讨论】:

  • 感谢您的所有回答。我会将它们传递给我团队中的 UI 开发人员。

标签: javascript memory-leaks extjs


【解决方案1】:

在您的问题中,我首先想到的是您在 IE 中看到了这一点。我的团队最近遇到了同样的问题(IE 上的 Extjs)。事实证明,Ext 不是罪魁祸首,而是 IE 可能是罪魁祸首。

“IE 关闭内存泄漏”的快速 Google 会找到很多解释,但基本要点如下:

IE 使用两个独立的引擎来管理 DOM 和 JavaScript。当 JavaScript 调用创建 DOM 元素时,Javascript 引擎会到达另一个引擎来创建它。如果将 JavaScript 附加到 DOM 元素上的事件,则会创建一个从 DOM 端返回到 JavaScript 端的链接。

问题在于每个引擎都有自己的垃圾收集器并且无法看到另一个引擎。所以循环引用真的很容易遇到,会很快消耗大量内存。

【讨论】:

    【解决方案2】:

    我认为对于没有经验的程序员使用 ExtJS 进行编程时很容易造成内存泄漏。这不是 ExtJS 本身的问题。它是 ExtJS 编程范式,它让程序员很容易犯这样的错误。

    根据我的经验,我在尝试使用 ExtJS 进行简单的 AJAX 聊天时造成了内存泄漏。当在 AJAX 回调中不断创建一些对象(例如数据存储、网格操作)时,这些对象不会被释放和销毁。 ExtJS 必须使用特殊且非常巧妙的技术来避免内存泄漏,而且它不仅与 AJAX 或回调有关。

    总而言之,ExtJS 是一个很棒的库,但必须小心使用。

    【讨论】:

    • 商店有一个 autoDestroy 属性可以帮助解决这个问题。
    【解决方案3】:

    就我而言,我还没有听说过 ExtJS 中有明显的内存泄漏。虽然我确信有一些,但它们通常会很快得到修复,而且社区如此之大,以至于大多数错误都是已知的。

    确保您的设计基于您可以在不再需要它们时添加和删除的单个组件,因为大多数情况下,ExtJS 网页只会加载一次,并且 mem 会被您提供的其他组件填充.使用完组件后,您可以使用 Ext.destroy(this.el) 释放一些内存。

    另外,请确保您使用 Firebug 来追踪任何应该被删除的组件或对象。

    【讨论】:

      【解决方案4】:

      查看this thread in their forums,它涵盖了 Ext 2.2 中由孤立元素引起的大量泄漏。似乎 Ext 2.2.1 修复了其中的大部分。

      问题仍然是开放的,顺便说一句。 ;)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-13
        • 2015-02-23
        • 1970-01-01
        • 2016-01-23
        • 2020-11-01
        • 2011-09-03
        • 1970-01-01
        • 2011-01-16
        相关资源
        最近更新 更多