最近在工作的时候碰到一些人在讨论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这样的库,内存泄漏可能源于事件处理程序、DOM元素、闭包等机制的不当管理。 这个“extjs 2.2 ...
在使用过程中,要特别注意ExtJS的MVC(Model-View-Controller)架构,这是其设计的一大亮点。通过模型管理数据,视图展示数据,控制器协调两者,可以使代码结构清晰,易于维护。此外,利用Data Binding功能,可以...
在"ExtJs3.3中文API.CHM"中,开发者可以找到关于ExtJS 3.3的所有API和类的详细描述,以及相关的示例代码。 ExtJS 3.3的核心特性包括: 1. **组件化**:ExtJS基于组件模型,提供了一系列预定义的UI组件,如按钮、...
针对ExtJS应用在Internet Explorer浏览器中的内存泄漏问题,出现了专门的内存调试工具——sIEve。 sIEve是一款专门用于检测和分析ExtJS应用在IE浏览器中内存泄漏的工具。由于早期的Internet Explorer浏览器在内存...
关于ExtJS内存泄漏问题,一直是ExtJS开发人员困扰的问题,这篇文档很好地解释了什么是内存泄漏,为什么会产生内存泄漏。能够帮助程序员使用ExtJS开发出更高效安全的代码。
Extjs 中文API文档,有对Extjs相关API的中文说明
Extjs中文文档,包含Extjs的基本语法和各个类的详细说明以及用法。
另一方面,"ext-3.1.1"是ExtJs的一个版本文件,这可能是一个压缩包,解压后包含了ExtJs 3.1.1的所有源码和资源。这个版本的ExtJs支持多种浏览器,并引入了许多增强的功能和改进。通过查看源码,开发者可以深入理解...
在中文帮助文档中,你可以找到关于布局管理、表单元素、数据绑定、图表组件、菜单、工具栏、面板、窗口等核心功能的详细说明。 ExtJS的英文API(ExtJS.chm)则为英文环境下的开发者提供了原汁原味的技术文档。API...
而`patched_js.zip`可能包含了已经应用了补丁的JavaScript文件,可以直接替换到ExtJS项目中,以解决内存泄露问题。 应用此补丁的过程可能包括以下步骤: 1. **备份原有代码**:在进行任何修改之前,确保备份原始的...
手册中涵盖了ExtJS 3.3的所有类、方法、事件、属性和配置选项,对于开发者来说是不可或缺的工具。 1. **组件系统**:ExtJS的核心在于其组件模型,包括窗口(Window)、面板(Panel)、表格(Grid)、表单(Form)等...
ExtJS3 升级到 ExtJS4 需要修改大量代码,主要是因为 ExtJS4 配备了一类新的系统,不向后兼容。在 ExtJS 3 里生成表的几个框架组件,ExtJS4 大多生成 div,这使得 CSS classes 将会失败。ExtJS4 已完全重新写 grid ...
绝对的ExtJS3.0中文API,本人在网上找了好久才找到的,在此奉献给大家!!解压后有30多兆!!
通过学习和应用这些示例,开发者可以深入理解ExtJS 2.2的内存优化工作原理,以及如何在实际项目中有效地使用它们。同时,对于调试和性能分析,开发者可以利用浏览器的开发者工具来监控内存使用情况,确保补丁的正确...
本文档关于ExtJs 3.3 的中文API。 本文档关于ExtJs 3.3 的中文API。 本文档关于ExtJs 3.3 的中文API。 本文档关于ExtJs 3.3 的中文API chm
ExtJS中文文档,很好,很强大!绝对值得一看哦!
由于无法直接查看图像内容,我将基于标题、描述和标签的内容,为您提供关于ExtJs2.0中文手册的知识点概述。 ExtJs是一个强大的JavaScript框架,用于创建富互联网应用(RIA)。它提供了一套丰富的组件和工具来构建...
9. **文件管理**:在上传成功后,EXTJS 还可以帮助管理和展示已上传的文件,例如在列表中显示文件名、大小、日期等信息。 `MultiFileUploadField.js` 文件是EXTJS框架中实现`MultiFileUploadField` 功能的具体代码...
【标题】"续:ExtJS Chart 扩展(重构了下,并写了个新的示例--内存监控)"指的是一个关于ExtJS图表扩展的更新版本,其中作者进行了重构,并且添加了一个全新的示例,用于实现内存监控功能。这个主题涵盖了两个主要的...