プログラムの作成中に、特定のアプリケーションが 64 ビット アプリケーションか 32 ビット アプリケーションかを確認するにはどうすればよいですか。
アプリがそれぞれ 64 ビットまたは 32 ビットであることをハードコードすることは可能ですか? 可能であれば、64 ビット アプリが通常の 32 ビット アプリよりも多くのメモリを使用する必要がありますか?
32 ビット アプリケーション/ハードウェアのメモリ制限について認識しています。
プログラムの作成中に、特定のアプリケーションが 64 ビット アプリケーションか 32 ビット アプリケーションかを確認するにはどうすればよいですか。
アプリがそれぞれ 64 ビットまたは 32 ビットであることをハードコードすることは可能ですか? 可能であれば、64 ビット アプリが通常の 32 ビット アプリよりも多くのメモリを使用する必要がありますか?
32 ビット アプリケーション/ハードウェアのメモリ制限について認識しています。
Java はプラットフォームに依存しません。したがって、気にする必要はありません。32 と 64 の唯一の違いは、使用される jdk にあります。
64 ビットの jdk を使用する場合、アプリは 64 ビットと互換性があります
32 ビットの jdk を使用する場合、アプリは 32 ビットと互換性があります
32 ビット JDK でプログラムをコンパイルし、64 ビット JVM で実行すると動作しますか?
はい、実際にコンパイルしているのではなく、バイトコードを作成しているだけなので、そうなります。
JVM がクラスをロードするとき、jdk が 64 ビットか 32 ビットかをチェックし、jvm をそれぞれ 64 ビットまたは 32 ビットにします。
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 にのみロードできます) や、動作が異なる場合があります。
Java バイトコードはプラットフォームに依存しません。JNI などの呼び出しを開始しない限り、心配する必要はありません。
JVM を 32 ビット モードで実行するか 64 ビット モードで実行するかを指定できます。
32 ビット / 64 ビットの Java プログラムなどというものはありません。
JVM 自体はさまざまなアーキテクチャで開発されていますが、Java の仕様は一定であり、基盤となるハードウェアによって変更されることはありません。