原因
1、循环引用导致了内存泄漏
- HTML :\ Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行 运行此代码
2、由外部函数调用引起的内存泄漏
- HTML :\ Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行 运行此代码
3)、闭包引起的内存泄漏
function parentFunction(paramA){
var a = paramA;
function childFunction(){
return a + 2;
}
return childFunction();
}
4、由事件处理引起的内存泄漏模式
- HTML :\ Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行 运行此代码
解决方法
1、打破循环引用
- HTML :\ Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行 运行此代码
2、添加另一个闭包
- HTML :\ Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行 运行此代码
3、避免闭包自身
- HTML :\ Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行 运行此代码
4、考虑用CollectGarbage()
jcl.MemFree = function(Mem){
Mem = null;
CollectGarbage();
};
下面附上实用的IE,Firefox内存溢出检测软件
sIEve: 他是基于 IE 的内存泄露检测工具,需要下载运行,下载地址:http://home.wanadoo.nl/jsrosman/
Leak Monitor: 他是基于 Firefox 的内存泄露检测工具,下载地址:https://addons.mozilla.org/firefox/2490/ 或者直接在浏览器的 工具/附加组件 里搜索 Leak Monitor
- 引自 吉光片羽的使用心得
- sIEve 是英文界面,不太会用,而且遇到大的内存溢出,会直接崩溃关闭 - -b
Leak Monitor 是繁体版,会提示具体溢出的节点,但是目前还没看明白怎么利用……








已有人对此文发表了评论