内存生命周期
- 内存分配:当我们申明变量、函数、对象,并执行的时候,系统会自动为他们分配内存
- 内存使用:即读写内存,也就是使用变量、函数等
- 内存回收:使用完毕,由垃圾回收机制自动回收不再使用的内存
垃圾回收可自动回收也可手动回收(赋值为null)
垃圾回收机制策略(标记清除算法)
这是js最常用的垃圾收集方式(标记清除),还有其他的垃圾收集算法,如引用计数算法等(这里我们只说最常用的)
此算法可以分为两个阶段,一个是标记阶段(mark),一个是清除阶段(sweep)。
标记阶段,垃圾回收器会从根对象开始遍历。每一个可以从根对象访问到的对象都会被添加一个标识,于是这个对象就被标识为可到达对象。
清除阶段,垃圾回收器会对堆内存从头到尾进行线性遍历,如果发现有对象没有被标识为可到达对象,那么就将此对象占用的内存回收,并且将原来标记为可到达对象的标识清除,以便进行下一次垃圾回收操作。
何时开始垃圾回收
当内存耗尽时,程序将会被挂起,垃圾回收开始执行