Interstage Application Serverにおいて、javaコマンドの起動オプションに-Xmx512mを指定しましたが、タスクマネージャで仮想メモリサイズを見ると、512MBではなく1GBになっています。
- javaコマンドの起動オプションに-Xmx512mを指定しましたが、タスクマネージャで仮想メモリサイズを見ると、512MBではなく1GBになっているのは、なぜですか?
- タスクマネージャで表示される仮想メモリサイズの値は、プロセス全体としての仮想メモリの使用状況を表示しています。プロセスが使用する仮想メモリは、Javaヒープなど、プログラムが個々の目的で使用するメモリ領域だけでなく、プログラムの実体がコピーされた領域やスタックなど、別の様々な目的でも使用されています。さらに、実行するプログラムだけでなく、そのプログラムを実行させるためのOS側のプログラムでも、プロセスの仮想メモリは使用されます。Javaのヒープは、Java VMがJavaオブジェクトを格納/管理する目的で使用するメモリ領域であり、プロセスが使用する仮想メモリの一部にすぎません。そのため、Javaのヒープサイズと、タスクマネージャで表示される仮想メモリサイズの値が一致することはなく、必ず「仮想メモリサイズの値>Javaのヒープサイズ(注)」の関係になります。また、Javaのヒープサイズとプロセスが使用する仮想メモリの大きさに直接的な制御関係はありませんので、Javaのヒープサイズから仮想メモリサイズの値を求める方法もありません。
なお、タスクマネージャで表示されるメモリ使用量の値は、仮想メモリサイズの値=プロセスが使用する仮想メモリ量のうち、OS制御により与えられている実メモリ量(ワーキングセットとしてのメモリ量)を示しています。そのため、プロセスが使用する仮想メモリ量を把握する場合は、メモリ使用量の値ではなく、仮想メモリサイズの値を使用してください。(ワーキングセットの制御はOS制御であるため、メモリ使用量の値とJavaのヒープサイズとの間には、何の関係もありません。) タスクマネージャが出力する各情報の詳細については、タスクマネージャのヘルプ情報を参照してください。
注:Javaヒープは、Javaプロセス起動時に各領域(メモリ割り当てプールおよびPermanent世代領域)の初期値を割り当て、各領域の最大値まで段階的に拡大する制御方法を用いて管理されています。そのため、値を参照した時点で各領域の最大値まで使用していなかった場合は、この関係が成り立たない場合もあります。
製品・サービス区分 | Interstage | ||||||
---|---|---|---|---|---|---|---|
製品・サービス情報 |
|
||||||
アンサー種別 | 構築(導入/移行) |