在单页式的Extjs应用中,由于Extjs存在许多的全局变量,这些全局变量包括了如:
Element Cache,Event Cache,ComponentMgr,ButtonMgr等等,内存的泄漏往往由于组件销毁时,没注意清除这些变量而引起。在2.2由guig提供的patch包,很大程度上保证了Extjs自带的组件正确的销毁。
下面提供一个检测ComponentMgr中是否累积了Component的代码:
function() {
var items = Ext.ComponentMgr.all.items;
var comIds = ewp.util.CheckLeakInEvents.comIds = ewp.util.CheckLeakInEvents.comIds || {};
//累加组件出现次数
for (var i = 0; i < items.length; i++)
{
comIds[items[i].id] = (comIds[items[i].id] || 0) + 1;
}
//打印出现次数超过一次的组件Id
var result = [];
for(var key in comIds)
{
if(comIds[key] > 1)
{
result.push(key + "=" + comIds[key]);
}
}
alert(result.join(", "));
}
该方法可以作为一个Button的handler,每次点击一次,察看那些组件累积在了ComponentMgr中,结合FireBug设置断点,通过Ext.ComponentMgr(id),察看更多的组件信息。
遇到组件泄漏的场景:
如 tbar = [new TextField({...})],tbar所在的Grid作为TabItem,并且该TabItem延迟渲染,那么由于new TextField({...})已经注册,但因为未渲染,toolbar中未添加该Field为其Item,导致未销毁组件。(解决办法:通过复写onDestroy主动销毁,或是使用{xtype:""}延迟组件创建),总之,如果主动new ...的组件,那么注意销毁时,是否销毁了相应的组件。
分享到:
相关推荐
extjs-theme-bootstrap-master.zip
ExtJs常用布局--layout详解实例代码: ExtJs常见的布局方式有:border、form、absolute、column、accordion、table、fit、card、anchor 另外,不常见的布局有:tab、vbox、hbox 具体使用方法可见该文件的案例代码。 ...
extjs-620-docs官方文档extjs-620-docs官方文档extjs-620-docs官方文档
语言程序设计资料:ExtJs学习笔记-2积分.doc
extjs2----关于extjs 的使用,操作.比较初级,但是也比较使用。适合初步接触extjs的朋友
ExtJS----HelloWorld程序源码
EXTJS4 类似于bootstrap的主题
extJs-5.0.1-gpl附带sencha cmd安装程序、ruby编译包(分为32位和64位)和教程,一共四部分
ExtJS快速入门--传智播客--蔡世友
Extjs4---grid的修改、删除功能---结合struts2、hibernate
Extjs4---combobox省市区三级联动+struts2
通过这个观看视频会让你很快的了解到extjs,并且能够很快的进入ext的使用
extjs-7.0.0-gpl
Extjs4--Form登录功能,结合struts2
一个extjs的OA项目 extjs-OA extjs-oaextjs-OA extjs-oa
ExtJS 内存泄露补丁,extjs内存泄露,extjs补丁
EXTJS---完整数据库代码,全网唯一,非常适合EXTJS搭建框架,包含动态树,菜单,集成SPIRNGMVC+exjs+jdbc 等
Ext JS 6最大的变化就是将Ext JS和Touch合并为一个单一的框架。之前的框架的核心(数据、控制器、模型等等)已被调和为一个单一的公共平台。这样,数据和逻辑就能共享,从而帮助开发人员进一步去优化他们的应用程序...
ExtJS-4.2.2-gpl.rar完整版,包含源码,示例,api,文档