垃圾回收就是 找出不再使用的变量,然后释放掉其占用的内存,但这个过程不是实时的,因为开销比较大,所以垃圾回收机制会按照固定的时间间隔周期性的执行。
变量生命周期:
全局变量的生命周期直至页面卸载才会结束;局部变量只在函数执行的 过程中存在,在堆或栈上分配好空间存储起来以便函数中使用,直至函数结束(不存在闭包的情况下)。
几种垃圾回收的方式:
1)标记清除:
最常见的方式; 函数中声明一个变量,垃圾回收器将会标记为‘进入环境’,当函数执行结束也就是变量离开环境的时候将其标记为‘离开环境’,原则上就是不能释放进入环境的变量的内存,因为他们随时可能会被调用。
2)引用计数:
低版本IE的方式,很容易出现内存泄漏。引用计数的策略就是跟踪记录每个值被使用的次数