# 垃圾回收
## 回收機制
### 標記清除(mark and sweep)
這是JavaScript最常見的垃圾回收方式,當變量進入執行環境的時候,比如函數中聲明一個變量,垃圾回收器將其標記為“進入環境”,當變量離開環境的時候(函數執行結束)將其標記為“離開環境”。
垃圾回收器會在運行的時候給存儲在內存中的所有變量加上標記,然后去掉環境中的變量以及被環境中變量所引用的變量(閉包),在這些完成之后仍存在標記的就是要刪除的變量了
### 引用計數(reference counting)
在低版本IE中經常會出現內存泄露,很多時候就是因為其采用引用計數方式進行垃圾回收。引用計數的策略是跟蹤記錄每個值被使用的次數,當聲明了一個 變量并將一個引用類型賦值給該變量的時候這個值的引用次數就加1,如果該變量的值變成了另外一個,則這個值得引用次數減1,當這個值的引用次數變為0的時 候,說明沒有變量在使用,這個值沒法被訪問了,因此可以將其占用的空間回收,這樣垃圾回收器會在運行的時候清理掉引用次數為0的值占用的空間。
- Houser的個人Wiki
- Javascript
- 語言基礎
- 變量
- 操作符整理
- new
- Ajax
- 事件
- 遍歷
- 字符串轉數字方法
- 原型鏈
- apply/call/bind
- 異步編程
- 模塊化
- 繼承的方式
- 對象的創建方式
- 內存泄漏
- js延遲加載
- 數據類型
- typeof
- 垃圾回收
- 作用域
- 閉包
- this
- es6
- 代碼片段
- 對象拷貝
- Node.js
- 模塊
- 庫&框架
- Jquery
- 優點
- 組件庫
- React
- React原理
- Key的作用
- JSX
- Redux
- Mobx
- 生命周期
- Typescript
- HTML&CSS
- viewport meta
- websocket
- webwork
- web GL
- html全局屬性
- iframe
- 頁面間通訊
- SVG
- 盒模型
- 輸入url到顯示的過程
- BFC(塊格式化上下文)
- 動畫
- CSS 秘密花園
- 前端
- webpack
- 后端
- nginx
- springboot
- 網絡
- 跨域
- 網絡攻擊
- TCP
- Https
- Http狀態碼
- 緩存策略
- Http2
- 數據結構&算法
- 常用數據結構
- 開發&編碼
- Git
- 分支策略
- 基本操作
- VSCode
- 工具
- App開發
- ReactNative
- 項目&業務
- Docker
- 協作工具
- 前端性能優化
- 登錄授權
- 軟件工程
- 漸進增強和優雅降級
- 計算機基礎
- 設計模式
- 單例模式
- 工廠模式
- 發布訂閱模式
- 適配器模式
- 代理模式
- 外觀模式
- 命令模式
- 橋接模式
- 模板模式
- 職責鏈模式
- 正則