提问人:Alexander Abakumov 提问时间:9/20/2015 最后编辑:Alexander Abakumov 更新时间:1/22/2016 访问量:357
闭包需要多少内存?
How much memory does a closure take?
问:
我想知道 JavaScript 闭包的内存占用是多少?
这个金额取决于什么?
闭包消耗内存的第一个明显因素是它捕获的变量数量及其大小。
好的,让我们假设我们有一个简单的闭包:
var counter = (function () {
var num = 0;
return function () {
return ++num;
}
}());
需要多少内存?
如果很难说出确切的数字,我至少想知道这些数字的规模。是 10、100 字节还是更多?
JavaScript 实现之间是否存在显著差异?
我希望这些问题的答案,尤其是一些数字的答案,能帮助我和其他读者澄清:
尽可能多地使用闭包是一种好的做法吗?
或者您应该谨慎使用它并尽可能避免使用它,因为使用封盖的开销可能会超过它带来的好处。
换句话说,我希望我能够更好地理解哪些情况值得使用闭包,哪些不值得。
编辑 1:
为了解决@MaximillianLaumeister关于问题过于宽泛的评论,让我们稍微改写一下:
这样的闭包由内存中的哪些部分组成?它们彼此之间有多大,也许是绝对数量?它们在 JavaScript 引擎中是否相同?
从下面的评论中,这些部分应该是:
- 与捕获的变量具有相同属性数的对象 (@Dan)
- 到目前为止,闭包的最大部分是其(编译)代码 (@Bergi)
答: 暂无答案
评论