日期:2014-05-16  浏览次数:20361 次

JavaScript内存泄漏 rss文章订阅

1、什么是闭包、以及闭包所涉及的作用域链这里就不说了。

2、JavaScript垃圾回收机制?

???? JavaScript不需要手动地释放内存,它使用一种自动垃圾回收机制(garbage collection)。当一个对象无用的时候,即程序中无变量引用这个对象时,就会从内存中释放掉这个变量。

?


<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->????var?s?=?[?1,?2?,3];
????
var?s?=?null;
????
//这样原始的数组[1?,2?,3]就会被释放掉了。

?

3、循环引用

???? 三个对象 A 、B 、C

???? AàBàC :A的某一属性引用着B,同样C也被B的属性引用着。如果将A清除,那么B、C也被释放。

???? AàBàCàB :这里增加了C的某一属性引用B对象,如果这是清除A,那么B、C不会被释放,因为B和C之间产生了循环引用。

?


<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->????var?a?=?{};
????a.pro?
=?{?a:100?};
????a.pro.pro?
=?{?b:100?};
????a?
=?null?;?
????
//这种情况下,{a:100}和{b:100}就同时也被释放了。
????????????
????
var?obj?=?{};
????obj.pro?
=?{?a?:?100?};
????obj.pro.pro?
=?{?b?:?200?};
????
var?two?=?obj.pro.pro;
????ob