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中运行它,内存会如此迅速地提升,我的代码错了?对我来说有任何疑问,谢谢!
答案 0 :(得分:0)
IMO很难评估Javascript中是否存在内存泄漏(如你所知,用JS编写的Extjs)。可以使用delete()
删除该对象(destroy()将使用它)但不能确定何时实际释放内存。
您可以在Deleting or setting to null和Javascript garbage collection
中找到有关Javascript垃圾收集器的更多信息