ページの先頭行へ戻る
Interstage Application Server V12.3.0 使用上の注意
FUJITSU Software

2.12.20 32ビットOSから64ビットOSへの移植時の注意事項

32ビットOSから64ビットOSへの移植にあたり、Javaヒープとスタックの使用量が増加します。
以下の記事を熟読の上、十分なチューニングを実施してください。


Javaヒープ

64ビットOS上で64ビットモードのJDK/JREを使ってJavaプログラムを動作させる場合、32ビットOSまたは64ビットOS上で32ビットモードのJDK/JREを使ってJavaプログラムを動作させた場合の設定に対して、1.5~2倍のJavaヒープ量が必要です。これは、64ビットモードの場合、1オブジェクトあたりに必要となるメモリ域の大きさが32ビットモードの場合よりも大きくなっているためです。
そのため、32ビットモードのJDK/JREを使用して他システム上で動作していたアプリケーションを移植する際、同じ設定で64ビットモードのJDK/JREを使用して動作させた場合、OutOfMemoryErrorが発生するか、ガーベジコレクション(GC/Full GC)による性能への影響が考えられます。


オブジェクト参照圧縮機能が有効な場合のJavaヒープ

Interstage Application Server V10.0より、64ビットモードで実行されるJDK/JRE 6以降のFJVMには「オブジェクト参照圧縮機能」が実装され、かつデフォルト状態で当該機能が有効となっています。そのため、64ビットモードで実行されるJDK/JRE 6以降でJavaアプリケーションを実行する場合は、Javaヒープサイズ(注)が32GB未満の場合に限り、当該機能のない64ビットモードで実行されるJDK/JREよりも少ないJavaヒープ量でJavaアプリケーションが実行できます。

詳細は、「チューニングガイド」の「JDK/JRE 7のチューニング」、および「JDK/JRE 8のチューニング」の「ガーベジコレクション(GC)」の「オブジェクト参照の圧縮機能」を参照してください。

注)JDK/JRE 7以前では、メモリ割り当てプールとPermanent世代領域の大きさの合計です。JDK/JRE 8では、メモリ割り当てプールの大きさになります。

スタック

Java APIで生成されたスレッドや動的コンパイルを行うコンパイラスレッドのスタックサイズは、64ビットモードのJDK/JREと32ビットモードのJDK/JREでは異なり、64ビットモードのJDK/JREの場合の方がより大きな値になっています。
詳細は、「チューニングガイド」の「JDK/JRE 7のチューニング」、および「JDK/JRE 8のチューニング」の「チューニング方法」の「スタックのチューニング」を参照してください。