我正在维护一个JavaScript代码,其中执行一些繁重处理以生成数组的函数会将结果保存在该函数本身内部的缓存变量中。它是这样实现的:
function heavyProcessingStuff(x) {
if(heavyProcessingStuff.cache == undefined)
heavyProcessingStuff.cache = [];
if(heavyProcessingStuff.cache[x] != undefined) {
return heavyProcessingStuff.cache[x]
} else {
return heavyProcessingStuff.cache[x] = x + 1
}
}
奇怪的是,在页面卸载时执行了一个函数,该函数手动删除了缓存变量的每个属性,如下所示:
for (n in heavyProcessingStuff.cache) {
delete heavyProcessingStuff.cache[n]
}
我对为什么要这样实施感到困惑。
这是针对某些奇怪的极端情况吗?有这样做的动力吗?页面关闭时,浏览器是否/不应该垃圾收集所有内容?
Javascript使用垃圾回收,最好不要显式释放内存。对此的良好阅读在文章“编写快速的,具有内存效率的JavaScript”中的“取消引用错误观念”中。
文章引用:
无法在JavaScript中强制进行垃圾回收。您不希望这样做,因为垃圾收集过程是由运行时控制的,并且通常最清楚何时应该清理事物。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句