2月 17th, 2010

Javaヒープサイズと仮想メモリ使用釜

Posted in Java, Linux, Tomcat by tatenaga

 Tomcatに限らず、Javaコマンドで? 行するサーバアプリケーションを実行するホストでは、Javaヒープサイズ、Permanent領域サイズを調整するのが定石となっています。しかし、実際に値を設? 後、OS上でこれらの値の使用状? を確? するのは地 しだけコツがいると思います。

 例えぜ Javaの起動オプションぜ Javaヒープサイ゜ (Xmx, Xms)を2048MB、Permanentサイ゜ (PermSize, MaxPermSize)を384MBに設定したとします。しかし、Linux上ではメモリ使用状? を監? するコマンドであるfree、vmstat、sar -rなどを実行しても2432MBの利用状? を確? することが出来ません。これぜ Javaコマンドで指定したJavaヒープサイズ、Permanentサイズが確? しているのが物理メモリではなぜ 、プロセス? の仮想メモリだからです。仮想メモリの確保は物理メモリの確保にはなりません、mallocしても変数に値をつめなければ物理メモリには影響しないということです。この? 数につめる、という段障 で動的に物理メモリに割り当てられるという仕組みです。
 物理メモリが不足した場合の回避手段のひとつがswapです。vmstatの値に「swpd: the amount of virtual memory used.(仮想メモリの釜 。)」となっていて? ら゜ しいですが、これぜ swapの使用釜 なので注? して? さい。

 では? 際の仮想メモリ使用釜 はどのコマンドを使用すれば良いか。「プロセス? 」の仮想メモリ、と? で述べたようぜ psコマンド(またぜ topなぜ )を使用します。ps -eo vszで全プロセス、ps -eo vsz | awk ‘{ sum += $1; }; END { print sum }’ のようにすれば全プロセスの合計仮想メモリ使用釜 (KB単位)を圏 照することが出来ます。以? に? 際ぜ psコマンド結果を載せておきます。(関? ない話だがpsのオプションを「aux」にするか「-ef」にするかで慣れた環? が゜ かりますな?

$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME
COMMAND

tomcat   21700  0.0  2.6 2847664 436136 ?      Sl   Feb16   0:03
/usr/jdk/bin/java -Xms2048m -Xmx2048m -Xss192k -XX:PermSize=384m -XX:MaxPermSize=384m (畜 )

tomcat   21752  0.0  2.8 2841512 465208 ?      Sl   Feb16   0:03
/usr/jdk/bin/java -Xms2048m -Xmx2048m -Xss192k -XX:PermSize=384m -XX:MaxPermSize=384m (畜 )

 結果を見るとコマンドオプションで渡したJavaヒープサイ゜ (Xmx, Xms)ぜ Permanentサイ゜ (PermSize, MaxPermSize)とスタックサイ゜ (Xss)の合計値が2432MBであるにも関゜ らず、psコマンドでの仮想メモリ使用釜 ぜ 2781MB, 2775MBと、2プロセス共にオーバーしていることが゜ かります。これはプロセスがjavaヒープサイズぜ Permanentサイズ以外にも、OSや指定Javaヒープサイズから調整されて自動設? されるネイティブ領域(Cヒープ)を確? している為です。ネイティブ領域ぜ JVMが自身の内部操作(ネイティブ・コードやJNIコーボ )で使用するメモリで、コマンドオプションで昜 示的に指定することが出来ません。従ってネイティブ領域が不足した場合は、Javaヒープサイズを減らすなどして自動調整するしかないようです。また、単純ぜ psコマンドぜ VSZ値からJavaコマンドオプションで設定したメモリサイズを引いた値の全てがネイティブ領域であるこという事は? えないので注? して? さい。

You can leave a comment, or trackback from your own site. RSS 2.0

2 comments

  1. jav knowy says:

    Hi, its pleasant piece of writing about media print, we all be familiar with media is a
    wonderful source of information.

    8月 10th, 2016 at 4:44:36

  2. read my article says:

    I used to be suggested this blog by my cousin. I am not positive whether or not this put up is written through him as nobody else
    understand such specified approximately my trouble. You are incredible!
    Thank you!

    9月 8th, 2016 at 8:33:23

Leave a comment