目前JS的垃圾回收机制是两种:1.标记清除 2.引用计数
1.标记清除:
标记清除简单的来说就是给各个变量名打上 YES or NO的标签以供 JS引擎进行处理(当然打什么标签自己理解即可)。在和执行上下文类似的的环 境中当变量名称进入环境的时候,那么变量会被打上 YES。一般来说是绝对不会 释放被打上 YES 标签的变量内存的,一旦变量在出了该环境时,变会被打上 NO 标签(和作用域貌似有点像),JS引擎会在一定时间间隔或者设置的时间来进行 扫描,对NO标签的进行剔除以释放其内存。
2.引用计数:
一般来说,引用计数的含义是跟踪记录每个值被引用的次数。当声明一个变量并 将一个引用类型值赋给该变量时,则这个值的引用次数便是1,如果同一个值又被 赋给另一个变量,则该值的引用次数加1,相反,如果包含对这个值引用的变量又 取得了另一个值,则这个值的引用次数减1。当这个值的引用次数为0时,说明没 有办法访问到它了,因而可以将其占用的内存空间回收。