js垃圾回收机制
栈内存中的基本类型,可以通过操作系统直接处理;而堆内存中的引用类型,正是由于可以经常变化,大小不固定,因此需要 JavaScript 的引擎通过垃圾回收机制来处理 js自己有套垃圾回收机制,开发人员不用关心内存分配和回收问题,但要知道其机制
不被回收的固有值
- 本地函数的局部变量和参数
- 全局变量 (所以为什么要注意)
- 内部的
回收机制
基于'可达性'概念,活在作用域中。
标记清除法
当进入作用域,局部变量打上进入的标签,垃圾回收时对进入状态的变量永远不会清除,当作用域结束时,局部变量打上结束标签,下一次垃圾回收时,就会被干掉
引用计数法
声明一个引用类型时,标记其引用为0,然后跟踪这个引用类型,当这个引用类型地址赋值给变量时引用标记+1,当变量改变值之后,引用标记-1,当0时,下一次垃圾回收时被干掉
JStar