### 垃圾回收機制原理
```
垃圾收集器按固定時間間隔周期性的找出那些不再繼續使用的變量,然后釋放其占用的內存
```
### 局部變量
```
1. 只在函數執行的過程中存在,會為局部變量在棧(堆)內存上分配相應的空間
2. 函數執行結束,局部變量就沒有存在的必要了
3. 垃圾回收器必須跟蹤哪個變量可用哪個變量沒用,對于不再有用的變量打上標記,以備將來收回其占用的內存
```
### 標記清除
```
js中最常用的垃圾收集方式是標記清除
當變量進入環境,變量被標記進入環境,變量離開環境時,將其標記為離開環境
```
### 引用計數
```
種不太常見的垃圾收集策略叫做引用計數
當聲明了一個變量并將一個引用類型值賦給該變量時,則這個值的引用次數就是 1
如果同一個值又被賦給另一個變量,則該值的引用次數加 1。相反,如果包含對這個值引用的變量又取
得了另外一個值,則這個值的引用次數減 1。當這個值的引用次數變成 0 時,則說明沒有辦法再訪問這
個值了,因而就可以將其占用的內存空間回收回來。
```
### 性能問題
```
```
### 管理內存
```
確保占用最少的內存可以讓頁面獲得更好的性能。而優化內存占用的最佳方式,就是為執行
中的代碼只保存必要的數據。一旦數據不再有用,最好通過將其值設置為 null 來釋放其引用——這個
做法叫做解除引用(dereferencing)。這一做法適用于大多數全局變量和全局對象的屬性。局部變量會在
它們離開執行環境時自動被解除引用
```
- 語言
- Javascript
- 簡介
- 常量變量
- var
- let
- const
- 解構賦值
- 數據類型
- 簡單數據類型
- Undefined
- Null
- Boolean
- Number
- String
- 引用數據類型
- Object
- Array
- Json
- 閉包
- 閉包中的變量
- 函數
- 函數參數
- arguments
- rest
- 傳值方式
- 調用方式
- 函數調用
- 方法調用
- 構造函數
- 上下文
- 箭頭函數
- 異步
- promise
- async/await
- 面向對象
- 簡介
- 構造函數
- 創建對象
- 工廠模式
- 構造函數模式
- 原型模式
- 構造函數/原型組合模式
- 繼承
- 什么是繼承
- 怎么繼承
- 原型鏈繼承
- 拷貝繼承
- 原型式繼承
- 借用構造函數
- 對象擴展
- Object.assign
- 類
- 定義
- 類的繼承
- 模塊
- 定義模塊
- 導入模塊
- 簡介
- 垃圾回收
- Typescript
- 簡介
- 搭建環境
- 數據類型
- boolean
- number
- string
- array
- enum
- any
- void
- 類型推測
- 聯合類型
- 類
- 定義
- 繼承
- 封裝
- static
- 函數
- 定義
- 參數
- 接口
- 屬性類型接口
- 函數類型接口
- 數組類型接口
- 類類型接口
- 泛型
- 泛型函數
- 泛型類
- 模塊
- 定義
- Node.js
- 簡介
- IO優勢
- Node與V8
- 內部機制
- 多線程
- 并發支持
- libuv
- 創建項目
- 安裝Node
- 創建項目
- 全局對象
- console
- path
- process
- I/O
- 系統信息
- 命令行
- Buffer
- 模塊
- 創建模塊
- 導入模塊
- 系統模塊
- fs
- stat
- fstat
- 讀
- 寫
- http
- 服務端
- 客戶端
- stream
- 4種基本類型
- event
- 事件監聽
- 繼承
- child_process
- spawn
- fork
- path
- url
- 三方模塊
- socket.io
- 安裝
- 例子
- server
- client
- redis
- 安裝
- 編碼
- 數據類型
- 鍵值對
- 散列表
- 列表
- 集合
- 發布訂閱
- mongodb
- express
- mssql
- pm2
- qrcode
- ua-parse-js
- cpr
- js-cookie
- whatwg-fetch
- ora
- shelljs
- log4js
- Dart
- 框架
- Vue
- 簡介
- 基礎
- 聲明式渲染
- Vue實例
- 模板語法
- 插值
- 文本
- 原始Html
- 特性
- js表達式
- 指令