1

int は、ほぼすべてのプラットフォームで 4 バイトかかります。Javaリファレンスはどうですか?

Map<String, String> m = null;

変数 m は、32 ビット/64 ビット JVM にどのくらいのスペースを必要としますか?

byte[] b = new byte[10];

上記のバイト配列は 10 バイトを使用しますが、b への参照にはどのくらい余分なスペースが必要でしょうか? b には少なくとも住所と長さが含まれていると思いますが、誰か詳細を教えてもらえますか?

4

3 に答える 3

10

最近の64ビットJVMは最大32GBのヒープにCompressedOopsを使用するため、オブジェクト内の参照はほとんどのJVM(32ビットまたは64ビット)で4バイトを使用します。一部の64ビットJVMでは8バイトを使用します。

ただし、通常、スタック上のサイズはカウントされず、ヒープサイズのみが重要であり、この場合、ヒープ上のサイズは考慮されません。

8〜12バイトのヘッダーが含まれ、オブジェクトが8バイト境界に割り当てられるため、byte[10]実際には最大24バイトを使用します。

于 2012-07-13T10:21:01.160 に答える
0

文字通り、ほとんどのJVMで、32ビットJVMのすべての参照は4バイト、1つの64ビットJVM、参照は8バイトを取ります。

于 2012-07-13T10:20:43.600 に答える
0

指定された仕様によると、参照変数のメモリに関する制約はありません。JVM の開発者次第です。32 ビット コンピューターでは 32 ビット、64 ビット コンピューターでは 32 ビットまたは 64 ビットを使用できます。すべて jvm プログラマーに依存します。

于 2012-07-13T10:30:52.693 に答える