内存泄漏

1.什么是内存泄漏
一块内存不被使用了,却没有返还给操作系统或者空闲内存池的现象。
2.JavaScript常见内存泄漏
(a)意外的全局变量

function fn(){
	result = 'global';
}

上述代码,fn函数内部意外定义了一个全局变量result.
全局变量是不会被回收的变量,除非设置成null或者被重新赋值。所以为了避免内存泄漏,在使用不必要的全局变量之后尽量把起设置为null或者重新赋值。
2.被遗漏的定时器和回调函数
举个例子:

function fn(){
	var el = $('#test');
	el.onClick = function(){
		console.log('click');
	}
}
fn();

上述代码,闭包和变量相互引用,造成循环引用,两者都不会被内存回收。一般这种情况只在IE低版本浏览器中发生,因为IE对DOM和js对象采用不同的垃圾回收机制。
3.DOM之外的引用
4.闭包
参考文章:
JS内存泄漏 和Chrome 内存分析工具简介(摘)
JavaScript 闭包都会内存泄露吗?

此条目发表在JavaScript分类目录。将固定链接加入收藏夹。

发表评论

邮箱地址不会被公开。 必填项已用*标注