function foo(){
var name = "hello",
age = 18;
return function(){
return name;
}
}
对于上面构建的闭包,众所周知name会保存在内存中。那么age呢?age有没有被回收?以及有什么方法可以证明age是否被回收呢?
谢谢解答!
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
来看看 justjavac 的一篇
age有没有回收和这段程序有什么关系呢?GC实现有选择的自由,开发者可以决定是否以及何时回收age,至于这个程序段,反正age你也没用,它有没有被回收对这段程序没有任何影响。要记住一点,一个最简单的GC实现可以什么都不干,任由内存随便泄漏,虽然这样做很扯,但再扯也是符合标准的。
我想是会的,因为
age和底下的匿名函数没有任何关系,为什么不回收呢?但是是不是立即回收,这个只有gc知道了。