【问题标题】:Tabpanel in Extjs4 has memory leak?Extjs4 中的 Tabpanel 有内存泄漏?
【发布时间】:2012-04-28 11:04:55
【问题描述】:

每个人! 我在extjs4中使用了tablpanel,发现在tabpanel中删除面板时IE8的内存没有减少,再次添加面板时也增加了。所以我写了一个测试如下:

Ext.onReady(function() {
var currentItem;
var tabs = Ext.createWidget('tabpanel', {
    renderTo: 'tabs',
    resizeTabs: true,
    enableTabScroll: true,
    width: 600,
    height: 250,
    defaults: {
        autoScroll:true,
        bodyPadding: 10
    }
});

var __my_task = '';
var i = 0;
try{
    __my_task = {
            run: function(){
                if (i % 2 == 0){
                    for(var j = 0; j < 10; j++){
                        addTab(true);
                    }
                }else{
                    var items = [];

                    tabs.items.each(function(item){
                        if(item.closable){
                            if(!false || item != this.item){
                                items.push(item);
                            }
                        }
                    }, this);

                    Ext.each(items, function(item){
                        tabs.remove(item);
                        item.destroy();
                    }, this);
                } // else
                i ++;
            },
            interval: 300
    }
    Ext.TaskManager.start(__my_task);
}catch(e){}

// tab generation code
var index = 0;
function addTab (closable) {
    ++index;
    tabs.add(Ext.create('Ext.tree.Panel',{
        title: 'New Tab ' + index,
        iconCls: 'tabs',
        closable: !!closable
    }));
}

});

在IE8下运行,内存会提升这么快,我的代码错了吗?有什么问题,谢谢!

【问题讨论】:

    标签: extjs4 tabpanel


    【解决方案1】:

    IMO 很难评估 Javascript 中是否存在内存泄漏(如您所知,用 JS 编写的 Extjs)。可以使用delete() 删除该对象(destroy() 将使用它)但不能确定何时实际释放内存。

    您可以在Deleting or setting to nullJavascript garbage collection 中找到更多关于 Javascript 垃圾收集器的信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多