JavaScript 内存管理
内存分配
JavaScript 中创建变量时会自动分配内存
数据类型 | 内存位置 | 说明 |
---|---|---|
基本类型数据 | 存储在栈空间 ( Stack ) | 数据大小固定,不能被修改 直接将值存放在栈空间中,可直接通过值访问 |
引用类型数据 | 存储在堆空间 ( Heap ) | 数据大小不固定,可以修改 在栈空间中存放的是一个指向堆空间中的地址,可通过引用访问 多个引用可指向同一个地址,一个改变则全部都变 |
内存泄露
内存泄露是指程序中已经分配的内存未能及时释放
未及时释放的变量会持续占用内存,容易导致响应变慢以及应用崩溃
常见的内存泄露原因
- 过多的全局变量
- 过多的无效 DOM
- 过多的缓存未被释放
- 过多的闭包未被释放
- 过多的定时器或回调未被释放
- 死循环、长时间运行的代码