天天看點

javaScript 記憶體優化

1、  作用域

作用域是js 程式設計中一個重要的機制,它在記憶體管理中起着至關重要的作用。

在js中能形成作用域的有函數的調用,全局作用域,with語句。

2、  作用域鍊

對某一變量通路時,查找的原則是:在本函數作用域内查找,沒找到,便到上一層去找。

3、  閉包

它是一種技術,讓外層作用域通路内層作用域。

4、  記憶體管理算法

引用計數算法

引用計數算法定義“記憶體不再使用”的标準很簡單,就是看一個對象是否有指向它的引用。如果沒有其他對象指向它了,說明該對象已經不再需了。

緻命問題:循環引用

正是因為有這個嚴重的缺點,這個算法在現代浏覽器中已經被下面要介紹的标記清除算法所取代了。但絕不可認為該問題已經不再存在了,因為還占有大量市場的IE6、IE7使用的正是這一算法。

标記清除算法

标記清除算法将“不再使用的對象”定義為“無法達到的對象”。簡單來說,就是從根部(在JS中就是全局對象)出發定時掃描記憶體中的對象。凡是能從根部到達的對象,都是還需要使用的。那些無法由根部出發觸及到的對象被标記為不再使用,稍後進行回收。