当我销毁保存在 initialconfig 中的 ExtJs 网格对象时,导致大量内存泄漏,我该如何正确地删除这个 initialconfig?

When I destroy an ExtJs grid object its kept in the initialconfig, causing a massive memory leak, how do I get rid of this initialconfig properly?

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

您可以在 Base 析构函数中将其置空。不幸的是,Base 不是真正的 class,因此通过 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 中修复了大部分组件漏洞,不幸的是,如果没有重大兼容性问题,这项工作基本上无法向后移植。