2

重複の可能性:
スクリプト言語の変数に対するメモリ割り当てはどのように行われますか?

JavaScript では型付けが緩い言語なので、コードを書くと次のようになります。

var foo;

このステップの直後に、メモリのブロックがいくつ割り当てられますか。私はそれに何かを割り当てます。また、入力するときにも割り当てます

var foo = 10;

var foo = "this is random"

どちらの場合も、何バイトのメモリが割り当てられますか?

4

1 に答える 1

1

実装に依存する詳細についてはわかりませんが、ここに私が推測するものがあります。

単純に行うだけでvar foo;は、新しいオブジェクトは作成されません。ただし、宣言された変数のディクショナリに foo を追加する必要がある場合があります。その場合、fooインターンされていないと仮定して、文字列と可能なメタデータ用のスペースが割り当てられます。

実行すると、通常はメモリを占有する文字列変数または整数変数がそれぞれ作成されますvar foo = 10;var foo = "this is random"ただし、小さな int と定数文字列はほぼ確実にインターンされます。さらに、JIT は数値参照を単純なマシン整数に最適化する可能性があります。この場合、余分なメモリはまったく必要ありません。

とにかく、特に JIT が関係している場合、さまざまな実装を持つ高水準言語でのパフォーマンスについて具体的に言うのは困難です。

于 2012-08-19T18:51:46.960 に答える