浏览 3631 次
锁定老帖子 主题:关于Ext Desktop的内存性能讨论
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-11
在测试了下这个例子过后,发现这可能是由taskbar引起的。在创建的时候 win会有一个属性 win.taskButton用来联系任务栏中的任务按钮,而任务按钮taskButton有一个属性taskButton.win来记录相关联的窗口。这样导致互相引用,在删除的时候可能都没有得到正确删除。 为了验证这个想法,我注释掉了关于添加Desktop.js中taskButton的代码,即先不添加taskButton,从第25行到93行如下所示 function markActive(win){ if(activeWindow && activeWindow != win){ markInactive(activeWindow); } //taskbar.setActiveButton(win.taskButton); activeWindow = win; //Ext.fly(win.taskButton.el).addClass('active-win'); win.minimized = false; } function markInactive(win){ if(win == activeWindow){ activeWindow = null; //Ext.fly(win.taskButton.el).removeClass('active-win'); } } function removeWin(win){ //taskbar.removeTaskButton(win.taskButton); layout(); } function layout(){ desktopEl.setHeight(Ext.lib.Dom.getViewHeight()-taskbarEl.getHeight()); } Ext.EventManager.onWindowResize(layout); this.layout = layout; this.createWindow = function(config, cls){ var win = new (cls||Ext.Window)( Ext.applyIf(config||{}, { manager: windows, minimizable: true, maximizable: true }) ); win.render(desktopEl); //win.taskButton = taskbar.addTaskButton(win); win.cmenu = new Ext.menu.Menu({ items: [ ] }); //win.animateTarget = win.taskButton.el; win.on({ 'activate': { fn: markActive }, 'beforeshow': { fn: markActive }, 'deactivate': { fn: markInactive }, 'minimize': { fn: minimizeWin }, 'close': { fn: removeWin } }); layout(); return win; }; 在这之后,在IE7下,用sIEve在Ext3.0下进行测试,没有再出现内存增长的情况,孤立节点基本上也得到了正确释放。 下面是一些效果图。 有没有其他人能验证这种想法是否正确,或者能够解决这个问题,或是提出一些其他的看法。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-06-19
Desktop的性能问题确实比较严重,渲染很费时间。
|
|
返回顶楼 | |
发表时间:2009-06-19
保持关注。desktop确实一直有内存泄露。
|
|
返回顶楼 | |
发表时间:2009-07-01
目前来说,如果不在任务栏中加入相关窗口的关联,基本上是没有问题的。
|
|
返回顶楼 | |