最近在工作的时候碰到一些人在讨论ext,他们总是讨论到一个内存问题,因为在测试的时候总是发现当页面打开多了之后,及时关掉了,系统依然会很慢,查看内存的时候,内存的使用率很高,即使关掉其他的应用,内存依然得不到释放,直到浏览器崩溃,一切又能恢复正常。
其实,他们说的这个情况只是在客户端使用IE浏览器的时候才会出现,虽然js有自动释放内存的功能,但是有的时候IE在释放的时候显得有些漫不经心,所以才导致内存不能及时释放。其实这个问题很好解决,看下面我的示例代码:
function toAddTabPage(node) {//添加tabpanel标签栏
var getTabPage = null;
if (node.getDepth() > 0) { //如果不是根节点root
var tabItems = tabPanl.items;//获取已经生成的tabpanl
var val = null;
tabItems.each(function(item) {//对已经生成的tabpanel进行迭代
if (item.id == node.id) {//如果为已经生成的tabpanel
val = node.id;
getTabPage = item;
return false;
}
});
if (val != null) {//激活已经以生成的tabpanel
tabPanl.setActiveTab(getTabPage);
} else {
var index = tabItems.length;
if (index > 18) {
Ext.Msg.alert('提示', '标签数量过多,请关闭不必要的标签项');
} else {
var tabPage = tabPanl.add({
title:node.text,
autoLoad:{url:node.attributes.url,method:'post',scripts:true},//scripts包含页面是否允许脚本
id:node.id,
autoDestroy:true,
destroy:function (){//销毁tabpanel
if(this.fireEvent("destroy",this)!=false){
this.el.remove();
getTabPage = null;
tabPage = null;
if(Ext.isIE){
CollectGarbage();
}
}
},
closable:true
});
tabPanl.setActiveTab(tabPage);
}
}
}
}
这是一个添加激活tabPage的函数,函数实现的功能就是在点击节点的时候左边显示相应页面,其中用红色部分是最重要的,就是在关掉tabPanl的时候做的事情,1.移除相应的页面元素,2.将相应的用于显示的在getTabPage、tabPage置为空(其中getTabPage是用于存放激活已经存在打开了的展示页面,tabPage用于存放新生成的页面),3.判断如果为IE浏览器的话就是用CollectGarbage()函数强制收回。这样就人为的去回收内存,在用户使用IE浏览器的时候就不会出现先前那些人所讨论的情况,至少在目前的项目看来是可行的一种解决方案
如果那位觉得写的不对,请留言指教
分享到:
相关推荐
extjs 2.2 内存泄漏补丁,这是已经打包好的js文件,可以直接替换掉原来的文件。补丁后可以解决ie6下使用extjs的内存泄漏问题。
关于ExtJS内存泄漏问题,一直是ExtJS开发人员困扰的问题,这篇文档很好地解释了什么是内存泄漏,为什么会产生内存泄漏。能够帮助程序员使用ExtJS开发出更高效安全的代码。
Extjs中文文档,包含Extjs的基本语法和各个类的详细说明以及用法。
Extjs 中文API文档,有对Extjs相关API的中文说明
绝对的ExtJS3.0中文API,本人在网上找了好久才找到的,在此奉献给大家!!解压后有30多兆!!
extjs中文api,提供实例extjs中文api,提供实例extjs中文api,提供实例extjs中文api,提供实例extjs中文api,提供实例extjs中文api,提供实例
extjs3.3的中文文档
ExtJs 实例+ExtJs中文教程 大量ExtJs的实例和目前最好的ExtJs中文教程,学习ExtJs的朋友可以参考一下
本文档关于ExtJs 3.3 的中文API。 本文档关于ExtJs 3.3 的中文API。 本文档关于ExtJs 3.3 的中文API。 本文档关于ExtJs 3.3 的中文API chm
ExtJS中文文档,很好,很强大!绝对值得一看哦!
ExtJS内存调试工具 sIEve,extjsIE工具。
ExtJs中文API,比较全面!并且提供了很多的例子!! ExtJs中文API,比较全面!并且提供了很多的例子!! ExtJs中文API,比较全面!并且提供了很多的例子!! ExtJs中文API,比较全面!并且提供了很多的例子!!
extjs4.1 中文API
ExtJS 内存泄露补丁,extjs内存泄露,extjs补丁
收集了ExtJS中文站上的资料,共52篇文章,保留了文章的原始风貌,支持关键字查询,里面的内容可以选择后ctrl-C拷出来。赚个辛苦分。
EXTJS应用EXTJS应用EXTJS应用EXTJS应用EXTJS应用EXTJS应用
Extjs 中文文档 学习文档
新手学习,初学extjs时用刚刚好,里边有三个例子,还有一个我自己写的例子(简单粗暴动态菜单),还有一个中文API
extjs资料extjs资料extjs资料extjs资料extjs资料