Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 内存泄漏,当我将数据从一个树存储复制到另一个ext js 4.1时_Java_Jsp_Servlets_Extjs - Fatal编程技术网

Java 内存泄漏,当我将数据从一个树存储复制到另一个ext js 4.1时

Java 内存泄漏,当我将数据从一个树存储复制到另一个ext js 4.1时,java,jsp,servlets,extjs,Java,Jsp,Servlets,Extjs,我有两个extjs树存储,一个是临时的,另一个是工作树存储,数据由treePanel解释。代码: var treeStore = Ext.create('Ext.data.TreeStore',{ root: { childrens:[], expanded: true, text: 'Services' } }); var tempStore = Ext.create('Ext.data.TreeStore',{ autoload: false, proxy:{

我有两个extjs树存储,一个是临时的,另一个是工作树存储,数据由treePanel解释。代码:

var treeStore = Ext.create('Ext.data.TreeStore',{
root: {
childrens:[],
expanded: true,
text: 'Services'
}
 });
  var tempStore = Ext.create('Ext.data.TreeStore',{
    autoload: false,
    proxy:{
        type: 'ajax',
        url: 'server.jsp',
      reader: {
          type:'json'
      }
    },
    clearOnLoad: true,
  listeners:{
    load:{
        fn: afterload
    }
    }   
  });
  tempStore.load();

  function afterload(store)
  {
 var rootTree = treeStore.getRootNode();
 var copyChilds = Ext.clone(store.getRootNode().childNodes);
 if(rootTree.hasChildNodes())
 {
 rootTree.removeAll(false);
 }
 for(var i=0;i<copyChilds.length;i++)
 {
 rootTree.appendChild(copyChilds[i]);
 }
}
我有复选框,当我将其状态更改为true时,runner start将工作:

var checkbox = Ext.create('Ext.form.field.Checkbox',{
       boxLabel: 'Refresh',
       listeners :{
           change: {
                fn: changeCheckBoxState
            }
        }
});
    function changeCheckBoxState(field,newValue,oldValue) 
         {
      if(newValue)
    {
            runReloadTreePanel.start(taskTree);
    }
      else
    {
    runReloadTreePanel.stop(taskTree);
    }
         }
问题

在启动2-3分钟后,内存开始增长(每10秒3-4MB),这是因为方法afterload内容是复制数据。是虫子还是我做错了什么??也许函数removeAll(false)没有删除treeStore根节点的所有子数据?我使用了很多变体-使用Ext.select(..)+innerHtml清除dom模型元素,尝试使用remove(..)逐个删除记录,但内存会增加。 我的树面板解释了所有好的,没有不必要的数据。
有什么想法吗?如果我的英语不好,很抱歉。(

我试图将函数加载的内容更改为:

function load(store)
{
var childs = Ext.clone(store.getRootNode().childNodes);
Ext.select('div#treepanel-1032-body div table tbody tr[class^="x-grid-row"]').remove();
treepanel.setRootNode({
 text: "Services",
 expanded: true,
 children: childs
});

我直接删除了dom模型对象,从treepanel store的配置属性中删除了,并每隔3秒设置一个新的根,但内存会增长,特别是在IE中。有什么建议吗?

很难说是怎么回事,但请确保不要创建全局变量-它们永远不会被垃圾收集。如果使用var X=y,请确保X是f的本地变量功能。
function load(store)
{
var childs = Ext.clone(store.getRootNode().childNodes);
Ext.select('div#treepanel-1032-body div table tbody tr[class^="x-grid-row"]').remove();
treepanel.setRootNode({
 text: "Services",
 expanded: true,
 children: childs
});