2

Windows上のJDKは、最大で約2GBのRAMを使用します。JDKにより多くのRAMを割り当てたとしても、それはかかりません。Windowsで8GBのRAMを必要とするプロセスを実行する必要がある場合。どうすればそれを達成できますか?

それをサポートできる他のプロバイダーから提供されたJDKはありますか?Memcachedは、使用できる追加のキャッシュを提供します...しかし、それは私が探しているものではありません。Windowsボックスで8GBのRAMを使用してjMeterを実行する必要があるとします。Memcachedは確かに役に立ちません..これを提供してくれるプロバイダーはありますか?以前、私はテラコッタがそれをしていると思っていました。しかし、それもMemcachedのように見えます。

私はWindows7を使用しています。必要に応じてWindowsServerも使用できます。実行する必要があります。

4

5 に答える 5

3

64ビットOSで64ビットJDKを使用すると修正されます

于 2012-12-14T10:07:52.037 に答える
3

私の知る限り、Windowsでは32ビットプロセスごとに2GBのメモリ制限があります。ただし、このページは、それを3GBに拡張するためのレジスタ設定があることを示しているようです。具体的には、IMAGE_FILE_LARGE_ADDRESS_AWARE

http://msdn.microsoft.com/en-gb/library/windows/desktop/aa366778(v=vs.85).aspx

したがって、32ビットJDKを使用していてそれを使い続けている場合は、それが最善の策ですが、64ビットJDKにアップグレードできる場合は、64ビットバージョンのWindowsで64ビットJDKを使用しているかのようにアップグレードしてください。制限は8TBになります

于 2012-12-14T10:08:01.723 に答える
1

を使用-ms8g -mx8gして正しく起動した場合、ヒープサイズは8GBの「最小」になります。ただし、プログラムが8 GBを使用しない場合でも、2GB以下である可能性があります。つまり、hello Worldプログラムは、どのような設定を行っても8GBを使用しません。(あいまいなものを除いて、私は何の用途も考えていません;)

32ビットアプリケーションを作るのは、32ビットが持つ限られたアドレス空間です。64ビットまたは128ビットのデータを引き続き使用できます。それを区別するのは、アドレス指定できるメモリの量が限られていることです。Windowsは、独自の目的でアドレススペースの割り当てを使用します。つまり、実際の制限はヒープに対して約1.2〜1.5 GBです(4GBの2^ 32ではありません)。

64ビットJVMは、ヒープサイズが約30GBまでの32ビット参照を引き続き使用することに注意してください。つまり、参照は32ビットプログラムの場合のようにプレーンメモリアドレスではありません。

于 2012-12-14T11:01:23.390 に答える
0

私は64ビットWindowsマシンで12G(-Xmx12G)を正常に使用し、(64ビット)JVMはそのすべてのバイトを使用しました。

-d64私が遭遇した唯一の問題は、64ビットのJDK / JREの場合、コマンドラインでイベントを明示的に提供する必要がある場合があることでした。

于 2012-12-14T10:36:24.273 に答える
0

キャッシュされたデータが大量にある場合は、Javaヒープの外に配置することをお勧めします。そうしないと、GCは、繰り返して無駄に、それをトラバースするのに多くの時間を費やします。

TerracottaのBigMemoryは、Javaヒープの外部にある直接ByteBufferにデータを配置することでこれを実現します。たぶん無料/オープンのものもあります。

于 2012-12-14T15:09:55.780 に答える