2013-05-03 4 views
10

年前、私は64ビットJDKを試しましたが、実際はバグでした。32ビットまたは64ビットのJDKを使用する必要がありますか?

これは今どのくらい安定していると思いますか?あなたはそれをお勧めしますか? 64ビットJDK + eclipseをインストールするか、32ビットに固執する必要がありますか?また、4GBのメモリ制限をバイパスする以外に、32ビットを超える64ビットの利点がありますか?

+0

これを参照してください - http://stackoverflow.com/questions/3669778/why-should-i-use-the-64-bit-jdk-over-the-32-bit-version – Coffee

+1

@Adel:それは – user2348638

+1

メモリ制限はプロセスあたり4GBではありませんが、WindowsとLinuxの両方でメモリがマップされているため標準2GBです。どちらのOSもその限界を上げるためのトリックを提供しますが、それは決して4GBではありません(より多くの3GBのように) – fvu

答えて

10

あなただけが多くのメモリ(2GBより大きい、すなわち、ヒープ)を使用するアプリケーションを構築したい場合はそれを気にし始めます。

は、私は、Red Hatを引用することを許可する:

64ビットJVMの本当の利点が2GBよりもはるかに大きいヒープサイズを使用することができるということです。 64ビットJVMのラージ・ページ・メモリーは、さらに最適化を行います。次のグラフは、4GBのヒープサイズから実行された結果を2ギガバイトの増分で、最大20GBのヒープで示しています。

、あのかわいいグラフで:

32 bit vs 64 bit JVMs in performance

を参照してください、ない大きな違い。

は(イェーイ、複数のグラフ!)もっと見るには:Java Virtual Machine Tuning

5

私は答えがかなり簡単に見つけることができると思います。

質問に答えてください: "私は4GB以上のRAMが必要ですか?"

64ビットJVMは、32ビットJVMと同じくらい安定しています。違いはありません。実際、64ビットJVMで動作するJavaアプリケーションは、32ビットJVMに比べてより多くのRAMを消費します。すべての内部データ構造にはさらに多くのRAMが必要です。

My Eclipseは64ビットJVMで動作しています。 32ビットと64ビットの間の唯一の違いは、任意のプログラムのビルド

2

は、機械語のサイズ、アドレス指定可能なメモリの量、および使用中のオペレーティングシステムABIあります。 Javaでは、言語仕様によって、ネイティブコードを使用していない限り、マシンのワードサイズとOS ABIの違いはまったく問題にならないはずです。 (ネイティブコードは、ロードするJVMのワードサイズと同じになるように構築する必要があります; 32ビットと64ビットのビルドを同じプロセスで混在させることはできません。実際には非常にエキゾチックなコーディングは必要ありません。 tは約ジャワでそれを行うこと。)

は64苦いは、64ビット・ポインタを使用しています。 4GB以上のRAMを搭載し、4GB以上のデータ構造をメモリに保持するJavaプログラムを実行している場合、64ビットのメモリに対応します。ビッグファットポインタは、4GB +メモリ空間内の任意のバイトを指すことができます。

しかし、あなたのプログラムが少ないメモリを使用して、あなたは、64ビットJVMを実行する場合、意志内のポインタはまだ64ビット(8バイト)をそれぞれ占めています。これにより、データ構造が大きくなり、不必要にメモリを消費します。

4

あなたは32または64ビット環境に展開するつもりですか?本番環境の環境に馴染みがある場合、開発環境は同じ環境タイプを使用する必要があります。

プラットフォームにとらわれない場合は、x64に行って、それについて考えることさえしないでください。プラットフォームは成熟し安定しています。メモリを追加してヒープを大きくするだけで、大規模な拡張が可能です。

CEOは、「申し訳ありませんが、われわれはx86を選択しており、望みどおりにスケールアップすることはできません」と誰も言わず、x64のすべてを再テストし、すべてを再構築するプロジェクトです。