2017-10-17 135 views
0

我有一个与JSON对象的内存分配有关的问题。 JSON会比单个变量占用更多内存吗?对于防爆:JSON对象内存分配vs变量

var testVar1 = "testVar1"; // 8*2 bytes for char + integer pointer (8bytes) 
var testVar2 = "testVar1";// 8*2 bytes for char + integer pointer (8bytes) 
var testVar3 = "testVar1";// 8*2 bytes for char + integer pointer (8bytes) 

vs 
testVariables = { 
"testVar1":"testVar1", 
"testVar2":"testVar2", 
"testVar3":"testVar3" 
} 

当我打开了内存设置,testVariables留住记忆似乎比单个可变存储(保留)总和。请让我知道哪一个更好的解决方案

+1

你似乎不明白JSON是什么。 JSON是包含对象表示的*字符串*。你有三个字符串变量和一个对象。 –

+2

当然,一个对象比其属性值的总和占用更多的内存。如果没有其他的话,属性名称也需要被存储。 –

+0

另外每个“var”都有自己的原型链。这增加了更多的对象本身。 –

回答

0

当您创建3个新变量时,Javascript引擎将在范围对象中创建3个新属性并影响其值。

当你创建一个对象女巫包含3个属性。引擎为范围对象创建1个新属性。它会影响包含3个属性引用及其值的新对象实例。

因此,在第二种情况下,比第一种情况多1个引用和1个对象实例。