当我销毁一个ExtJs网格对象时,它保存在initialconfig中,导致大量内存泄漏,我该如何正确摆脱这个初始化配置?

时间:2015-10-23 10:10:32

标签: javascript extjs memory-leaks extjs4.2

我在面板内创建一个网格,当我销毁网格时,对它的引用保留在面板的初始配置中,这意味着它没有被正确清理。有没有办法阻止这个初始配置甚至被创建/清除它的方式,因此它将保存引用的帽子对象将被正确清理?

1 个答案:

答案 0 :(得分:1)

您可以在Base析构函数中将其清空。不幸的是Base不是一个真正的类,所以通过Ext.define覆盖它不是正确的方法,但我们可以通过闭包来解决这个问题:

(function() {
    var oldDestroy = Ext.Base.destroy;

    Ext.Base.destroy = function() {
        this.config = this.initialConfig = null;
        oldDestroy.call(this);
    };
})();

如果内存泄漏是您应用中的问题,我会强烈建议您升级到Ext JS 6。我们在6.0中插入了大部分组件泄漏,不幸的是,如果没有主要的兼容性问题,这项工作在很大程度上是不可移植的。