這篇文章帶給大家的內容是關於什麼是js垃圾回收機制?js垃圾回收機制的介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
JS具有自動垃圾回收機制。垃圾收集器會依照固定的時間間隔週期性的執行。
Js常見的垃圾回收方式:標記清除、引用計數方式。
1、標記清除方式:
運作原理:當變數進入環境時,將這個變數標記為「進入環境」。當變數離開環境時,則標記為「離開環境」。標記「離開環境」的就回收記憶體。
工作流程:
垃圾回收器,在運作的時候會為儲存在記憶體中的所有變數都加上標記;
去掉環境中的變數以及被環境中的變數所引用的變數的標記;
加上標記的會被視為準備刪除的變數;
垃圾回收器完成記憶體清理工作,銷毀那些標記的值並回收他們所佔用的記憶體空間。
2、引用計數方式:
運作原理:追蹤記錄每個數值被引用的次數。
工作流程:
宣告了一個變數並將一個引用型別的值賦值給這個變量,這個引用型別值的引用次數就是1;
同一個值又被賦值給另一個變量,這個引用型別值的引用次數加1;
#當包含這個引用型別值的變數又被賦值成另一個值了,那麼這個引用型別值的參考次數減1;
當引用次數變成0時,表示沒辦法存取這個值了。
當垃圾收集器下次執行時,它就會釋放引用次數是0的值所佔的記憶體。
但是循環引用的時候就會釋放不掉記憶體-造成記憶體洩漏
因為IE中的BOM、DOM的實作使用了COM,而COM對象使用的垃圾收集機制是引用技術策略。所以會存在循環引用的問題。
解決:手工斷開JS物件和DOM之間的鏈接,賦值為null。 IE9把DOM和BOM轉換成真正的JS物件了,所以避免了這個問題。
相關建議:
PHP的垃圾回收機制可回收垃圾有哪些 垃圾回收 不可回收的傳複製
以上是什麼是js垃圾回收機制?js垃圾回收機制的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!