オンライントラブルシューティング---高メモリ使用量


1.  メモリが比較的大きいメモリのPIDを見つける(topコマンドを使用)
例えばPIDが8763
 
2.  現在のJavaプロセスで作成されたアクティブなオブジェクトの数と使用メモリのサイズを表示
jmap -histo:live $pid > jmap.log
 
たとえば、24102プロセスの生存オブジェクトを表示します.
jmap -histo:live 24102 | more
例:
$ /usr/java/default/bin/jmap -histo:live 8763 > ~/jmap.log
 
3.  現在のJavaプロセスのメモリ使用量を導き出し、専用のメモリ分析ツール(例えばMAT)で分析するのに便利です.
jmap -dump:live,format=b,file=jmap.log [pid]
--dumpはファイルに積み上げられ、liveは生きているオブジェクトであることを示し、fileはファイル名を指定する
dump:liveの前にfull gcが行われるので、liveを入れないスタックの大きさはliveスタックの大きさより大きい
-heap       
-histo[:live]          ,     、      

例: 
$ /usr/java/default/bin/jmap -dump:live,format=b,file=jmap.log  8763
ヒント:Dumping heap to /home/dmadmin/jmap.log ...
Heap dump file created