2012-04-17 9 views
1

ごと! Iはextjs4でtablpanelを使用するには、IE8のメモリはタブパネルでパネルを取り外すときに低減し、また、私は以下のように試験を記述again.soパネルを追加するときに発生しなかったが見つかりました:Extjs4のタブパネルにメモリリークがありますか?

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

IMO Javascriptでメモリリークがあれば評価することはほとんどありません(知っているようにJSで書かれたExtjs)。オブジェクトはdelete()で削除される可能性がありますが(destroy()はそれを使用します)、メモリが実際に解放される時期はわかりません。

JavaScriptのガベージコレクタの詳細は、Deleting or setting to nullJavascript garbage collection

です
関連する問題