javaScript代码运行的时候,需要分配内存空间来存储变量和值。变量不再参与的时候,就需要系统收回被占用的内存空间,这就是垃圾回收
回收机制:
● js具有自动垃圾回收机制,会定期对那些不再使用的变量、对象占用的内存进行释放
● js 中存在变量,局部变量和全局变量。全局变量的是声明周期会持续到要页面卸载;局部变量声明在函数中,它的生命周期从函数执行开始,直到函数执行结束
● 局部变量使用闭包在外部可以使用,函数的执行结束后,函数外部的变量依然指向函数内部的局部变量。此时局部变量仍然在使用,所以不会回收
标记清除是浏览器最常见的垃圾回收方式,当环境进入执行环境的时候,被标记为进入环境的变量是不能被回收的,离开环境标记离开,会被内存释放
垃圾收集器在运行的时候会给存储在内存上的所有变量都加上标记,然后去掉环境中的变量以及被环境中的变量引用的标记
使用计数器来跟踪对象被引用的对象
浏览器可以进行垃圾自动回收,但是代码复杂的时候,垃圾回收带来的代价比较大,所以应该减少垃圾回收
以下三种方法
● 对数组进行优化
清空一个数组的时候,最简单的方法就是将数组置空,但此时会同时创建一个新的空对象。可以选择将数组长度设为0
● 对对象进行优化
对象尽量复用,对于不再使用的对象,就将其设置为null,尽快被回收
● 对函数进行优化
在循环中的表达式,如果可以复用,尽量放在函数的外面