2017-10-17 126 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個對象實例。