最大ヒープサイズは、プロセスあたりの最大アドレス空間によって決まります。次の表に、各種プラットフォームのプロセスあたりの最大アドレス値を示します。
表 4–1 プロセスあたりの最大アドレス空間
オペレーティングシステム |
プロセスあたりの最大アドレス空間 |
Redhat Linux 32 bit |
2G バイト |
Redhat Linux 64 bit |
3G バイト |
Windows 98/2000/NT/Me/XP |
2G バイト |
Solaris x86 (32 bit) |
4G バイト |
Solaris 32 bit |
4G バイト |
Solaris 64 bit |
テラバイト |
プロセスにもスタックやライブラリなどのための領域が必要なため、最大ヒープスペースは常に、プロセスあたりの最大アドレス空間よりも小さくなります。割り当て可能な最大ヒープスペースを決定するには、プロファイリングツールを使用して、メモリーがどのように使用されているかを調べます。プロセスで使用される最大スタック空間と、ライブラリやその他のメモリー構造で使用されるメモリー量を測定します。最大アドレス空間とこれらの値の合計の差が、ヒープに割り当て可能なメモリー量になります。
ヒープサイズを大きくしたり、別のガベージコレクタを使用したりすることで、パフォーマンスを改善できます。一般に、長時間実行されるサーバーアプリケーションでは、複数のプロセッサを持つマシンで J2SE スループットコレクタを使用し ( -XX:+AggressiveHeap)、ヒープサイズはマシンの空きメモリーをできるだけ多く使用した大きさにします。