>> js是使用垃圾回收的语言,执行环境在代码执行时管理内存。具体是怎么实现的?
<< 确定那些不会再使用的变量,间隔一定时间去自动运行回收。
现在主要是使用标记清理实现。标记并清除标记,上下文变量访问不到后,垃圾回收程序进行内存清理。
function createPersion(name){
let localPerson = new Object()
localPerson.name = name
return localPerson
}
let globalPerson = createPersion('duzi')
// 手动解除引用
globalPerson = null
以前用过引用计数,引用一次加1,如果引用的变量被其他值覆盖减1。垃圾回收程序运行时释放引用数为0的内存。因为像下面这样的问题
// 左脚踩右脚互相引用就永远是2
function problem(){
let objectA = new Object()
let objectB = new Object()
obectA.someOtherObject = objectB
objectB.someOtherObject = obectA
}