2012-04-17 4 views
1

마다 하나씩! 내가 extjs4에 tablpanel를 사용 , 나는 다음과 같이 테스트 쓰기, 또 나오는 패널을 추가 탭 패널에서 패널을 제거하고, 또한 경우에 발행 할 때 IE8의 메모리가 감소하지 않았다 발견 :Extjs4의 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에서 실행하면 메모리가 너무 빨리 생성됩니다. 코드가 잘못 되었습니까? 고마워, 고마워!

답변

0

IMO Javascript (익숙한 JS로 작성된 Extjs)에 메모리 누수가 있으면 거의 평가할 수 없습니다. 객체는 delete() (destroy()에서 사용)으로 삭제 될 수 있지만 메모리가 실제로 해제 될 때 확실하지는 않습니다.

당신은 Deleting or setting to null에서 자바 스크립트 가비지 컬렉터에 대한 자세한 내용을 찾을 수 Javascript garbage collection