読者です 読者をやめる 読者になる 読者になる

webネタ

技術系ブログ。web系SE。1988。♂。@rhong_

便利なjavaコマンド集

javaプロセス一覧

普通にps

% ps aux | grep java

jps

% jps
64806 activator-launch-1.0.8.jar

% jps -v
64806 activator-launch-1.0.8.jar -Dactivator.home=/Users/ryohongo/Downloads/activator-1.0.8 -Xms1024m -Xmx1024m -XX:MaxPermSize=256m -XX:ReservedCodeCacheSize=128m 

jps便利。

様々な統計

jcmd

threadやgcやロードしてるクラス数など色々な情報がざっくり出る。

% jcmd 64806 PerfCounter.print

java.ci.totalTime=5259552
java.cls.loadedClasses=8353
java.cls.sharedLoadedClasses=0
(略) ひたすら統計情報が出る。

jcmdは多機能で、使いこなせればかなり色々できるようです。参考

jconsole

メモリやスレッドやGCなどの情報がグラフなどのGUIで見れる素敵なツール。

% jconsole
アプリが立ち上がる

GC

jstat

javaのgcに関する統計が出せます。

vmstatなどと同じように間隔を指定でき、↓では1000ms間隔で3回表示してます。

% jstat -gcutil 64806 1000 3

  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
  0.00   0.00  23.43   2.69  99.26      0    0.000     3    0.556    0.556
  0.00   0.00  23.43   2.69  99.26      0    0.000     3    0.556    0.556
  0.00   0.00  23.43   2.69  99.26      0    0.000     3    0.556    0.556

-gcutil以外にも色々オプションがありますが、まずは見やすいgcutilを打ってから他のを試します。

詳しい説明はこちら

列のS0Uなどの説明も載ってますが、Survivor0は他ではFromと呼ばれていたりするのでメモ。

  • Survivor0 = From
  • Survivor1 = To
  • YoungGC = ScavengeGC

muninとかでモニタリングできたらいいなぁ。

スレッド

jstack

javaのthreadダンプが出せます。kill -3よりも使いやすそう。

% jstack 64806

2013-10-10 11:30:04
Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.0-b55 mixed mode):

"Attach Listener" daemon prio=5 tid=0x00007f8d129d1800 nid=0x7343 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE
(略)

ヒープ

jmap

各クラスのインスタンス数とバイト数を表示。

% jmap -histo 64806

 num     #instances         #bytes  class name
----------------------------------------------
   1:         14042      111591248  [I
   2:        179231       23342824  [C
   3:         41970       12141904  [B
   4:         85041       11575592  <methodKlass>
   5:         85041       10069928  <constMethodKlass>
   6:          6765        7655512  <instanceKlassKlass>
(略)

設定の確認と変更

jinfo

指定したjvmの情報などが事細かに表示される。

% jinfo 64806

Attaching to process ID 64806, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 23.25-b01
Java System Properties:
(略)

設定もできる。

% jinfo -flag PrintGC 64806
-XX:-PrintGC

有効に

% jinfo -flag +PrintGC 64806
-XX:+PrintGC

値もかえれるかと思ったけどなぜかダメだった。ヘルプにはできると書いてるんだけどなぁ...

% jjinfo -flag MaxPermSize=1G 64806

まとめ

  • jps
  • jcmd
  • jstat
  • jstack
  • jmap
  • jinfo
  • jconsole

の紹介でした。よく使いそうなのはjpsとjcmdとjstatかな。

つらたん...(;´・ω・`)