2017-10-17 9 views
0

JSONオブジェクトのメモリ割り当てに関する質問があります。 JSONは個々の変数よりも多くのメモリを消費しますか?例の場合:JSONオブジェクトのメモリ割り当てと変数の比較

私はtestVariablesがメモリを保持して、メモリプロファイラを開く
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" 
} 

は、個々の変数メモリ(保持)の合計よりも多くのように見えます。

+1

あなたはJSONが何であるか分かりません。 JSONは、オブジェクトの表現を含む*文字列*です。あなたが持っているものは、3つの文字列変数と1つのオブジェクトです。 –

+2

もちろん、オブジェクトはプロパティ値の合計より多くのメモリを消費します。それ以外の場合は、プロパティ名も保存する必要があります。 –

+0

また、各 "var"には独自のプロトタイプチェーンがあります。これは、オブジェクト自体にさらに多くを追加します。 –

答えて

0

3つの新しい変数を作成すると、Javascriptエンジンはスコープオブジェクト内に3つの新しいプロパティを作成し、その値に影響を与えます。

オブジェクトウィッチを作成すると、3つのプロパティが含まれます。エンジンはスコープオブジェクトに1つの新しいプロパティを作成します。 3つのプロパティーの参照とその値を含むObjectの新しいインスタンスに影響します。

したがって、2番目のケースでは、1つの参照と1つのオブジェクトインスタンスが最初のケースより多くあります。