项目内存泄漏问题及解决方案

    目前,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.

    证据如下;

image

   相关代码

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;
},

   原型链污染

image

所以,相对应的解决方案有二:

1)在 ***处加一个判断,过滤掉tojsonstring,治标不治本的简单解决方法.

2)放弃原有的json格式化方法,直接用Ext的json格式方法.在sail_all文件中搜索有用到tojsonstring方法的地方,重写这部分代码.(推荐)

posted on 2010-10-11 10:27 叶子绿 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/ms_config/archive/2010/10/11/1847678.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值