0

以下の GC メモリ パラメータを使用しています。

export MEM_OPTS="-Xmx2900m -Xms2900m -XX:NewSize=786m -XX:MaxNewSize=786m -XX:+UseTLAB -XX:MaxPermSize=128m"

32 ビット JVM を使用しています。サーバー RAM は 10 GB です。

オラクルのサイトから、

32 ビット JVM でより大きなヒープを取得できないのはなぜですか?

32 ビット JVM の理論上の最大ヒープ制限は 4G です。利用可能なスワップ、カーネル アドレス空間の使用、メモリの断片化、VM のオーバーヘッドなど、さまざまな追加の制約があるため、実際には、制限ははるかに低くなる可能性があります。最近のほとんどの 32 ビット Windows システムでは、最大ヒープ サイズは 1.4G から 1.6G の範囲です。32 ビットの Solaris カーネルでは、アドレス空間は 2G に制限されています。32 ビット VM を実行している 64 ビット オペレーティング システムでは、最大ヒープ サイズが大きくなる可能性があり、多くの Solaris システムでは 4G に近づきます。Java SE 6 以降、Windows の /3GB boot.ini 機能はサポートされていません。アプリケーションで非常に大きなヒープが必要な場合は、64 ビット アプリケーションをサポートするバージョンのオペレーティング システムで 64 ビット VM を使用する必要があります。詳細については、Java SE がサポートするシステム構成を参照してください。

わかりました。では、私の 32 ビット サーバーが 3.2 GB を使用できると仮定しましょう。

-Xmx is the total heap memory
-XX:NewSize / -XX:MaxNewSize is the range of the size of the new generation inside that heap
the difference is the range of the size of the old generation
-XX:PermSize / -XX:MaxPermSize is the range of the size of the permanent generation, which is the non-heap memory

これによると、これはヒープ コンテンツではないため、3.2 GB には PermSize を含める必要はありません。

間違っている場合はお知らせください。

Xmx と NewSize で 3.2 GB を分割できます。右 ?

4

1 に答える 1

1

NewSize は、最大ヒープ サイズの一部です。小さくする必要があります。

Java 6 を使用している場合は、64 ビット JVM を使用すると、作業がより簡単になります。;) 32 ビット共有ライブラリを使用する必要がない限り、マイナス面はほとんどありません。

ところで-XX:+UseTLAB、デフォルトです。

于 2012-09-14T09:50:10.440 に答える