Extjs4中的Tabpanel有内存泄漏?

时间:2012-04-17 05:30:53

标签: extjs4 tabpanel

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

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中运行它,内存会如此迅速地提升,我的代码错了?对我来说有任何疑问,谢谢!

1 个答案:

答案 0 :(得分:0)

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

您可以在Deleting or setting to nullJavascript garbage collection

中找到有关Javascript垃圾收集器的更多信息
相关问题