首頁 >web前端 >js教程 >什麼是js垃圾回收機制?js垃圾回收機制的介紹

什麼是js垃圾回收機制?js垃圾回收機制的介紹

不言
不言原創
2018-08-15 17:40:444544瀏覽

這篇文章帶給大家的內容是關於什麼是js垃圾回收機制?js垃圾回收機制的介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

JS具有自動垃圾回收機制。垃圾收集器會依照固定的時間間隔週期性的執行。

Js常見的垃圾回收方式:標記清除、引用計數方式。

1、標記清除方式:

     運作原理:當變數進入環境時,將這個變數標記為「進入環境」。當變數離開環境時,則標記為「離開環境」。標記「離開環境」的就回收記憶體。

     工作流程:

  • 垃圾回收器,在運作的時候會為儲存在記憶體中的所有變數都加上標記;

  • 去掉環境中的變數以及被環境中的變數所引用的變數的標記;

  • 加上標記的會被視為準備刪除的變數;

  • 垃圾回收器完成記憶體清理工作,銷毀那些標記的值並回收他們所佔用的記憶體空間。

2、引用計數方式:

     運作原理:追蹤記錄每個數值被引用的次數。

     工作流程:

  • 宣告了一個變數並將一個引用型別的值賦值給這個變量,這個引用型別值的引用次數就是1;

  • 同一個值又被賦值給另一個變量,這個引用型別值的引用次數加1;

  • #當包含這個引用型別值的變數又被賦值成另一個值了,那麼這個引用型別值的參考次數減1;

  • 當引用次數變成0時,表示沒辦法存取這個值了。

  • 當垃圾收集器下次執行時,它就會釋放引用次數是0的值所佔的記憶體。

       但是循環引用的時候就會釋放不掉記憶體-造成記憶體洩漏

      因為IE中的BOM、DOM的實作使用了COM,而COM對象使用的垃圾收集機制是引用技術策略。所以會存在循環引用的問題。

解決:手工斷開JS物件和DOM之間的鏈接,賦值為null。 IE9把DOM和BOM轉換成真正的JS物件了,所以避免了這個問題。

相關建議:

PHP的垃圾回收機制可回收垃圾有哪些 垃圾回收 不可回收的傳複製

##相關PHP5 .3的垃圾回收機制

以上是什麼是js垃圾回收機制?js垃圾回收機制的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn