目前,mes项目存在内存泄漏问题.主要表现如下, 系统运行一段时间后,会越来越慢,严重的会导致ie崩溃.这点已经在零陵的实施项目充分体现出来了.
我用工具测试的时侯发现,主要原因集中在窗口关闭后,用脚本创建的作为容器的dom元素因为含有tojsonstring属性而未能正常垃圾回收.
These are the names of the properties (or events) which still contained a not-null reference when the page was unloaded. These are possible candidates as the root-cause of the memory leak.
证据如下;
相关代码
Sail.apply = function(o, c, defaults){ if(defaults){ Sail.apply(o, defaults); } if(o && c && typeof c == 'object'){ for(var p in c){ o[p] = c[p]; //*** } } return o; };
createDiv : function(config){ var div = document.createElement( "DIV" ); Sail.apply(div,config); document.body.insertBefore(div); return div; },
原型链污染
所以,相对应的解决方案有二:
1)在 ***处加一个判断,过滤掉tojsonstring,治标不治本的简单解决方法.
2)放弃原有的json格式化方法,直接用Ext的json格式方法.在sail_all文件中搜索有用到tojsonstring方法的地方,重写这部分代码.(推荐)