垃圾回收
Javascript
是使用垃圾回收的语言,也就是说执行环境负责在代码执行的时候管理内存。
Javascript
通过自动内存管理实现分配内存和闲置资源回收。
v8 引擎 的内存限制
在浏览器中通过Javascript
使用内存的时候,就会发现只能使用部分内存(64 位系统 1.4G,32 位系统 0.7G)。这也就意味着将无法直接操作一些大内存对象。
V8 引擎 为何要内存限制
JavaScript
最初只运行在浏览器环境,几乎不会遇到大量使用内存的场景,所以对于网页来说,V8 的限制已经绰绰有余- V8 在执行垃圾回收时会阻塞
JavaScript
应用逻辑,直到垃圾回收结束再重新执行JavaScript
应用逻辑。 - V8 的堆内存为 1.5GB,V8 做一次小的垃圾回收需要 50ms 以上,做一次非增量式的垃圾回收甚至要 1 秒以上。这样浏览器将在 1s 内失去对用户的响应,造成假死现象。
垃圾回收基本思路
- 确定哪个变量不会在使用,然后释放它占用的内存。
- 垃圾回收这个过程是周期性的,所以垃圾回收会每隔一段时间