### 垃圾回收机制原理
```
垃圾收集器按固定时间间隔周期性的找出那些不再继续使用的变量,然后释放其占用的内存
```
### 局部变量
```
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表达式
- 指令