0

プログラムの作成中に、特定のアプリケーションが 64 ビット アプリケーションか 32 ビット アプリケーションかを確認するにはどうすればよいですか。

アプリがそれぞれ 64 ビットまたは 32 ビットであることをハードコードすることは可能ですか? 可能であれば、64 ビット アプリが通常の 32 ビット アプリよりも多くのメモリを使用する必要がありますか?

32 ビット アプリケーション/ハードウェアのメモリ制限について認識しています。

4

5 に答える 5

4

Java はプラットフォームに依存しません。したがって、気にする必要はありません。32 と 64 の唯一の違いは、使用される jdk にあります。

64 ビットの jdk を使用する場合、アプリは 64 ビットと互換性があります

32 ビットの jdk を使用する場合、アプリは 32​​ ビットと互換性があります

32 ビット JDK でプログラムをコンパイルし、64 ビット JVM で実行すると動作しますか?

はい、実際にコンパイルしているのではなく、バイトコードを作成しているだけなので、そうなります。

JVM がクラスをロードするとき、jdk が 64 ビットか 32 ビットかをチェックし、jvm をそれぞれ 64 ビットまたは 32 ビットにします。

于 2012-08-07T09:59:15.597 に答える
2

32 ビット用か 64 ビット用かに関係なく、1 バイト コードがあります。

これは、64 ビット JVM が存在する前に 32 ビット マシンでコンパイルされたライブラリを 64 ビット JVM で使用できることを意味します。

64 ビット JVM はより多くのメモリを使用できますが、最新の 64 ビット JVM は Compressed Oops を使用するため、最大 32 GB のヒープに 32 ビット参照を使用できます。(オフヒープメモリをさらに使用することもできます)

32 ビット OS 上の多くの 32 ビット JVM は、1.2 ~ 1.5 GB のメモリに制限されています。64 ビット OS では、この制限は OS に応じて 2.5 ~ 3.5 GB になる場合があります。64 ビット OS 上の 64 ビット JVM は、実際には約 1 TB のメモリに制限されていますが、この制限は将来解除される可能性があります (OS によって異なります)。

唯一の違いは、JNI を使用する場合です。JNI 共有ライブラリは 32​​ ビットまたは 64 ビットのライブラリに依存しており、1 つしかない場合 (この場合、同じビット数の JVM にのみロードできます) や、動作が異なる場合があります。

于 2012-08-07T10:17:56.227 に答える
1

Java バイトコードはプラットフォームに依存しません。JNI などの呼び出しを開始しない限り、心配する必要はありません。

JVM を 32 ビット モードで実行するか 64 ビット モードで実行するかを指定できます。

于 2012-08-07T09:58:13.317 に答える
0

32 ビット / 64 ビットの Java プログラムなどというものはありません。

JVM 自体はさまざまなアーキテクチャで開発されていますが、Java の仕様は一定であり、基盤となるハードウェアによって変更されることはありません。

于 2012-08-07T09:58:47.627 に答える