##垃圾收集##
**3. 垃圾收集**
JavaScript具有自動垃圾收集機制,也就是說,執行環境會負責管理代碼執行過程中使用的內存。
垃圾收集機制的原理:找出那些不再繼續使用的變量,然后釋放其占用的內存。
垃圾收集器是按固定的時間間隔,周期性地執行回收操作。
垃圾收集器如何判斷哪些變量不需要使用了呢?常見的有兩種方式
**(1)標記清除**
當變量進入環境(比如在函數中聲明一個變量)時,就將這個變量標記為“進入環境”。
標記變量的方式可以是任意的。
垃圾收集器在運行時會給存儲在內存中的所有變量都加上標記。然后,它會去掉環境中的變量以及被環境中的變量引用的變量的標記,而在此之后再被標記的變量將被視為待刪除的變量,原因是環境中的變量以及無法訪問到這些變量了,最后完成內存清除工作,銷毀那些帶標記的值并回收它們占用的內存空間。
**(2) 引用計數**
引用計數是不太常見的垃圾收集策略。引用計數可以說是跟蹤記錄每個值被引用的次數。比如:當聲明了一個變量并將一個引用類型值賦給變量時,則這個值的引用次數是1,當同一個值又被賦給另一個變量,則該值的引用次數加1,相反,當包含對這個值引用的變量取得了另外一個值(也就是不指向前面的值)時,這個值的引用次數減1,當這個值的引用次數為0時,就會被銷毀并釋放內存空間了。
解除引用:一旦數據不再有用,最好通過將其值設置為null來釋放其引用。
- 前言
- JavaScript簡介
- 基本概念
- 語法
- 數據類型
- 運算符
- 表達式
- 語句
- 對象
- 數組
- 函數
- 引用類型(對象)
- Object對象
- Array對象
- Date對象
- RegExp對象
- 基本包裝類型(Boolean、Number、String)
- 單體內置對象(Global、Math)
- console對象
- DOM
- DOM-屬性和CSS
- BOM
- Event 事件
- 正則表達式
- JSON
- AJAX
- 表單和富文本編輯器
- 表單
- 富文本編輯器
- canvas
- 離線應用
- 客戶端存儲(Cookie、Storage、IndexedDB)
- HTML5 API
- Video/Audio
- Geolocation API
- requestAnimationFrame
- File API
- FullScreen API
- IndexedDB
- 檢測設備方向
- Blob
- vibrate
- Luminosity API
- WebRTC
- Page Visibility API
- Performance API
- Web Speech
- Notification
- 面向對象的程序設計
- 概述
- this關鍵字
- 原型鏈
- 作用域
- 常用API合集
- SVG
- 錯誤處理機制
- JavaScript開發技巧合集
- 編程風格
- 垃圾回收機制