java - 内存泄漏,当我将数据从一个 treeStore 复制到另一个 ext js 4.1

标签 java jsp servlets extjs

我有两个 extjs treeStore,一个是 temp,另一个是 working treeStore,数据由 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]);
 }
}

当调用 tempStore.load 方法时,我将在服务器上发送查询,获取数据,然后将其放在另一个 treeStore.p> 使用 TaskRunner 每 3 秒重新加载一次 tempStore:

var taskTree = {
        run: reloadTree,
    interval:3000 // 1 second
       }
 var runReloadTreePanel = Ext.create("Ext.util.TaskRunner");

我有复选框,当我将其状态更改为 true 时,运行者开始工作:

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),因为方法后加载内容,即复制数据。是bug还是我做错了什么??也许函数 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 存储的配置属性中删除,并每 3 秒设置一次新根,但是内存增长,尤其是在 IE 中。有什么建议吗?

关于java - 内存泄漏,当我将数据从一个 treeStore 复制到另一个 ext js 4.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13310715/

相关文章:

java - GWT 网格的 DoubleClick 事件处理程序

java - 将输入字符串转换为类别

java - 多线程 - 多个用户

java - 将 ArrayList 从 Servlet 传递到 JSP 时出错

java - jsp <form :errors> 中没有消息显示

java - 如何将 java 变量从 scriptlet 传递到 c :when expression in jSTL?

java - 从多个 servlet 上下文获取属性文件

servlets - 修改 servlet 上下文初始化参数(<context-param>) 值

java - 如何获取子类中抽象类的字段(CORE JAVA)

java - 为什么 Tomcat 没有响应设置编码?我该如何处理?