這篇文章主要介紹了淺析JS垃圾收集機制和記憶體管理,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧
垃圾收集
javascript中的垃圾收集機制很簡單:找出那些不在使用的變數,然後釋放他們.
# 局部變數只存在在函數執行過程中,所以,當函數執行結束之後,局部變數就沒有存在的必要了.但是並不是所有的變數都是那樣容易判斷的,所以要用一些方法來回收這些變數
1 標記清除:
javascript中最常用的垃圾收集方式是清除標記.當變數進入環境時,將這個變數標記為"進入環境" ,當變數離開環境時,將變數標記為"離開環境",一般來說,咱們只會清除帶有離開環境標記的變數,因為已經沒辦法存取他們了.然後垃圾收集器來完成記憶體清除工作.
2 引用計數:
這個方法不是那麼常用.引用計數的意思就是記錄每個值被引用的次數,當被引用的次數減為0的時候,則說明再也沒有辦法存取那個值了,所以可以將它佔用的記憶體釋放.
但是引用計數有一個問題:循環引用.舉個例子:
function problem(){ var objectA = new Object(); var objectB = new Object(); objectA.someOtherObject = objectB; objectB.anotherObject = objectA; }在這個例子中,在這個例子中,objectA 和objectB 透過各自的屬性互相引用;也就是說,這兩個物件的引用次
function createPerson(name){ var localPerson = new Object(); localPerson.name = name; return localPerson; } var globalPerson = createPerson("Nicholas"); // 手工解除globalPerson 的引用 globalPerson = null;解除數值的參考並不表示自動回收該值所佔用的記憶體。解除引用的真正作用是讓值脫離執行環境,以便垃圾收集器下次運行時將其回收。
相關推薦:
以上是淺析JS垃圾收集機制與記憶體管理的詳細內容。更多資訊請關注PHP中文網其他相關文章!