JavaScript内存泄漏 rss文章订阅
1、什么是闭包、以及闭包所涉及的作用域链这里就不说了。
2、JavaScript垃圾回收机制?
???? JavaScript不需要手动地释放内存,它使用一种自动垃圾回收机制(garbage collection)。当一个对象无用的时候,即程序中无变量引用这个对象时,就会从内存中释放掉这个变量。
?
Code
<!--<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之间产生了循环引用。
?
Code
<!--<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