Extjs IE内存问题
2011年08月25日
《1.》
使用了ExtJS 3.1并且更改了模块加载方式之后,我的OPOA内存回收有所改进,记录一下概要:
1、不用autoload{url:url, scripts:true}的方式,而使用eval(response.responseText)方式,这样可以减少一些Orphan Node,使用autoload的话Tab中被load的那个Node无法释放而成为Orphan Node;
2、在关闭Tab时,Tab的beforedestroy要把Tab里面的Component给destroy掉,并且要十分注意destroy的 顺序,然后set null,其它没有destroy()方法的对象直接set null,最后try CollectGarbage();
3、左侧的TreePanel的tools中refresh很有用,tree的root.reload()之后IE可能会重新渲染页面,如果之前页 面渲染占用的内存多话则可能释放多出的内存占用(觉得类似IE6的窗口最小化,这里只是凭感觉,没看代码也没看IE的渲染机制);
4、GridPanel组件的有个关闭Tab之后会成为Orphan Node,再打开一个包含GridPanel的Tab之后就没了,但是还会重新生成一个id不同的;
5、非IE浏览器下右键菜单和浏览器右键菜单有冲突。
《2.》
最近在工作的时候碰到一些人在讨论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浏览器的时候就不会出现先前那些人所讨论的情况,至少在目前的项 目看来是可行的一种解决方案
发表评论
-
html 特殊转义字符
2012-01-20 01:39 545html 特殊转义字符 2010年08月11日 HTM ... -
Notepad2 V4.1.24.62 免费版 是一个外观类似系统记事本的文本编辑工具
2012-01-20 01:39 534Notepad2 V4.1.24.62 免费版 是一个外观类似 ... -
简析HTML七种网页加密解密方法
2012-01-20 01:39 881简析HTML七种网页加密解 ... -
IIS服务器排错指南及错误代码大全
2012-01-20 01:39 683IIS服务器排错指南及错误代码大全 2011年06月22日 ... -
游侠在线自由测试版正式发布啦!!!
2012-01-20 01:39 566游侠在线自由测试版正式发布啦!!! 2010年08月26日 ... -
DDS 文件
2012-01-19 09:29 720DDS 文件 2012年01月04日 dds是Direc ... -
美化工具栏摘计
2012-01-19 09:29 651美化工具栏摘计 2011年02月06日 这种感觉就像是。 ... -
2011-5-9
2012-01-19 09:29 2642011-5-9 2011年05月09日 ... -
GDI+入门(十三、GDI+实例――灰度效果)
2012-01-19 09:28 681GDI+入门(十三、GDI+实例――灰度效果) 2011年1 ... -
VB获取图象的象素
2012-01-19 09:28 834VB获取图象的象素 2011 ... -
vc网络编程常用函数2
2012-01-17 02:04 843vc网络编程常用函数2 20 ... -
延时批处理
2012-01-17 02:04 636延时批处理 2012年01月12日 举个例子,我们要延时 ... -
Zigbee入门指导(二)
2012-01-17 02:03 805Zigbee入门指导(二) 2010年08月06日 Zi ... -
socket 相关函数
2012-01-17 02:03 364socket 相关函数 2011年03 ... -
毕业纪念册
2012-01-15 21:25 458毕业纪念册 2009年06月27日 -
客家风情二(你将再次捧腹大笑)
2012-01-15 21:25 694客家风情二(你将再次捧腹大笑) 2009年11月12日 ... -
心情日记
2012-01-15 21:25 330心情日记 2010年10月09日 前段时间 ... -
日语N1~N2听力通关必备知识汇总及讲解(一)
2012-01-15 21:25 370日语N1~N2听力通关必备知识汇总及讲解(一) 2010年1 ...
相关推荐
关于ExtJS内存泄漏问题,一直是ExtJS开发人员困扰的问题,这篇文档很好地解释了什么是内存泄漏,为什么会产生内存泄漏。能够帮助程序员使用ExtJS开发出更高效安全的代码。
extjs 2.2 内存泄漏补丁,这是已经打包好的js文件,可以直接替换掉原来的文件。补丁后可以解决ie6下使用extjs的内存泄漏问题。
项目中遇到Extjs3.0在IE9中不兼容,现有两种解决方法
ExtJS内存调试工具 sIEve,extjsIE工具。
ExtJS 内存泄露补丁,extjs内存泄露,extjs补丁
项目进行前端框架升级——extJS 4升级至extJS6.6所遇的一些问题及相对应的解决方案建议
EXTJS应用EXTJS应用EXTJS应用EXTJS应用EXTJS应用EXTJS应用
extjs资料extjs资料extjs资料extjs资料extjs资料
extjs editgrid 回显问题.rarextjs editgrid 回显问题.rarextjs editgrid 回显问题.rar
Extjs例子Extjs例子Extjs例子Extjs例子Extjs例子
ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门ExtJS快速入门 ExtJS快速入门 ExtJS...
从网上搜集的一些好用的js文件。分享给爱好EXTJS的同胞们! EXTJS4.0文件夹下面包括 1.只有年月选择--dateYM.html (这个在EXTJS4.0和4.1...注:这些功能在IE6 、 IE8 、 Firefox 以及google 浏览器下测试没有问题!
extjs电子书,extjs电子书,extjs电子书,extjs电子书
xtJs已经升级到了5.0了,目前可能多数应用还在使用ExtJs 3.系列。 从开发大型的web后台或者企业管理系统来看,ExtJs3的缺陷还是比较明显的,从ExtJs4 开始引入了MVC架构,从而能够从容的组织系统的JS文件了。 从...
EXTJS实例 EXTJS树,可以编辑的EXTJS,EXTJS3.0
适合ExtJs开发人员extjs技术上手以及深入
一个extjs的OA项目 extjs-OA extjs-oaextjs-OA extjs-oa
extjsapi,extjs文档,api手岫
extJs3升级extjs4方案, extJs3升级extjs4需要修改大量代码
解决extjs中的GridPanel的单元格在IE无法选中复制的问题