REQUIRED INFORMATION

Ext version tested:
  • Ext 4.1.0
Browser versions tested against:
  • FF 16.0.2
  • IE8
  • Opera 12.02
Description:

We have memory leak, when dinamically(timeout 1 sec):
  • set new root with his childs in TreeStore, which data interpret by treepanel; OR
  • remove all child nodes of root node and append new nodes into it.
Steps to reproduce the problem:
  • See ext js code and json data below;
  • Open the application in IE8, click on checkbox(refresh);
  • Open task manager;
  • See on memory state of IE process.
The result that was expected:
  • Memory leaks can't be
The result that occurs instead:
  • Memory grows
Test Case:
Code:
 
   Ext.application({
    name: 'WebConsole',
    launch: function() {
    var tempStore = Ext.create('Ext.data.TreeStore',{
        autoload: false,
        proxy:{
            type: 'ajax',
            url: 'server.json',
          reader: {
              type:'json'
          }
        },
        clearOnLoad: true,
      listeners:{
        load:{
            fn: function(store)
        {
            var childs = Ext.clone(store.getRootNode().childNodes);
            treepanel.setRootNode({
            text: "Services",
            expanded: true,
            children: childs
            });
        }
            
                }            
    }});
    tempStore.load();
var runReloadTreePanel = Ext.create("Ext.util.TaskRunner");
    var taskTree = {
            run: function()
            {
            tempStore.load();
            },
             interval:1000 
    }

    var checkbox = Ext.create('Ext.form.field.Checkbox',{
           boxLabel: 'Refresh',
           listeners :{
               change: {
                    fn: function(field,newValue,oldValue){
                        if(newValue)
                        {
              runReloadTreePanel.start(taskTree);
                        }
                        else
                        {
              runReloadTreePanel.stop(taskTree);
                        }
          }
           }
            }
    });
    var treepanel = Ext.create('Ext.tree.Panel', {
        title: 'Services',
        collapsible: true,
        rootVisible:false,
        expanded: true,
        region:'west',
        margins: '5 0 0 0',
        width: 400,
        minSize: 100,
        maxSize: 250,
        dockedItems: [{
            xtype: 'toolbar',
            dock: 'bottom',
            items: [
                    checkbox           
                    ]
        }],
         viewConfig: 
            {
            loadMask: false
            }
});
    
Ext.create('Ext.container.Viewport', {
     layout: 'fit',
        items: [
    treepanel
     ]
        });
}});
HELPFUL INFORMATION

server.json content:
Code:
    {text: 'Services',children:[
    {text : 'JMS',leaf : false, expanded: true, children:[
    {text : 'ActiveMQClient',leaf : true,icon: 'images/STARTED_icon.gif'},
    {text : 'ActiveMQServer',leaf : true,icon: 'images/STARTED_icon.gif'}]},
    {text : 'Routes',leaf : false, expanded: true, children:[
    {text : 'Backend Emulation',leaf : false, expanded: true, children:[
    {text : 'Backend Emulation[1]',leaf : true,icon: 'images/STARTED_icon.gif'},
    {text : 'Backend Emulation[2]',leaf : true,icon: 'images/STARTED_icon.gif'}]},
    {text : 'XEConnect',leaf : false, expanded: true, children:[
    {text : 'XEConnect Inbound',leaf : false, expanded: true, children:[  
    {text : 'XEConnect Inbound[1]',leaf : true,icon: 'images/STARTED_icon.gif'},
    {text : 'XEConnect Inbound[2]',leaf : true,icon: 'images/STARTED_icon.gif'}]},
    {text : 'XEConnect Outbound',leaf : false, expanded: true, children:[
    {text : 'XEConnect Outbound[1]',leaf : true,icon: 'images/STARTED_icon.gif'},
    {text : 'XEConnect Outbound[2]',leaf : true,icon: 'images/STARTED_icon.gif'}]}]}]},
    {text : 'XEConnect',leaf : false, expanded: true, children:[
    {text : 'CORE Server',leaf : true,icon: 'images/STARTED_icon.gif'}]}]}
Operating System:
  • Windows 7 Pro