内存
JavaScript通过自动内存管理实现内存分配和闲置资源回收
内存泄露
- 意外声明全局变量
- 定时器
- 闭包
栈内存和堆内存的区别

栈内存
- 栈内存用于存储基本数据类型的值,还有引用类型的指针
- 栈内存是线性有序存储。容量小,系统分配效率高
- 栈内存每个存储空间大小基本相同,存储值大小固定
堆内存
- 堆内存用于存储引用类型值
- 堆内存存储值大小不固定,通过栈内存存储的指针访问
- 堆内存首先要在堆内存新分配存储区域,之后又要把指针存储到栈内存中,效率相对就要低一些。
垃圾回收机制
垃圾回收是周期性的,回收程序每隔一段时间会自动执行
- 离开作用域的值,会被自动标记为可回收,在垃圾回收期间被删除
- 主流垃圾回收算法是标记清理
- 在不适用变量时解除引用有助于垃圾回收