2012-01-06 29 views

答えて

27

はい。 Java longは、例外なくすべてのJVM上で64ビットです。すべてのJavaプリミティブ型は完全に移植可能であり、すべての実装で固定サイズです。

+5

JLSリファレンス:http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.2.3 – Mat

4

はい。 longは、64ビット整数として知られています。

4

プリミティブ型は常に同じサイズです。参照のみがサイズが変更できますが、一般的にはこれを知る必要はありません。

あなたは

int addressSize = Unsafe.addressSize(); 

注意を参照のサイズを取得することができます。でも、64ビットJVMに(最新のJava 6+のJVM上で)、参照は32ビットですが、あなたは32を使用しない限り、 GBのヒープ以上。これはOpenJDK/Sun/Oracle JDKのデフォルトですが、@ user988052に注意してください.IBM JVMはコマンドラインで適切なフラグを設定する必要があります。他のJVMはこのオプションをまったくサポートしていないかもしれません。

+0

* 64ビットJVM(ラッツセットJava 6+ JVM)であっても、 32 GBのヒープ以上を使用しない限り、参照は32ビットです* ... JVMに依存しませんか? * -XX:Oracle/Sun JVMの+ UseCompressedOOps *は、確かに私が知る限りは実際にはデフォルトですが、例えばIBM JVMのように* Xcompressedrefs * VMパラメータを使用しない場合は、デフォルトで64ビットに保存されています... – TacticalCoder

+0

私はあなたのコメントを含めるように私の答えを更新しました、ありがとう。 –

関連する問題