HiiHahWIKI - making some notes for... -
Java:スレッドダンプをとる
をテンプレートにして作成
開始行:
*Java:スレッドダンプをとる [#bccdbb75]
こんな状況ありませんか?
>JAVAのプログラムが''OutOfMemoryError''を出力していて、も...
そんなとき、
-実行中のプログラムを一時停止することが可能(運用的に)
-実行中のVMのFULLGCを実行することが可能(運用的に)
であれば、一手間かけることでJAVAVM中のスレッドダンプを出...
***手順 [#p40176ec]
至って簡単です。
+javaの起動オプションに~
-XX:+PrintClassHistogram
~を追加する
+VMを再起動する
+再起動したVMのプロセスに対して「SIGQUIT」シグナルを送信...
javaの起動オプションで''-XX:+PrintClassHistogram''を追加...
***実験 [#zbf6d7b4]
あるjavaプログラムの起動オプションに上述のオプションを設...
まず、SIGQUITシグナルを送信します。
kill -SIGQUIT <PID>
以下の出力の表部分で、どのクラスがどれくらいメモリを使用...
Full thread dump Java HotSpot(TM) Client VM (1.5.0_22-b0...
"Timer-3" daemon prio=1 tid=0x084ba458 nid=0x1bcb in Obj...
at java.lang.Object.wait(Native Method)
- waiting on <0x89454688> (a java.util.TaskQueue)
at java.util.TimerThread.mainLoop(Unknown Source)
- locked <0x89454688> (a java.util.TaskQueue)
at java.util.TimerThread.run(Unknown Source)
"Timer-2" daemon prio=1 tid=0x084b92f0 nid=0x1bca in Obj...
at java.lang.Object.wait(Native Method)
- waiting on <0x8945b128> (a java.util.TaskQueue)
at java.lang.Object.wait(Unknown Source)
at java.util.TimerThread.mainLoop(Unknown Source)
- locked <0x8945b128> (a java.util.TaskQueue)
at java.util.TimerThread.run(Unknown Source)
"Timer-1" daemon prio=1 tid=0x084a3d70 nid=0x1bc9 in Obj...
at java.lang.Object.wait(Native Method)
- waiting on <0x8945b1a0> (a java.util.TaskQueue)
at java.util.TimerThread.mainLoop(Unknown Source)
- locked <0x8945b1a0> (a java.util.TaskQueue)
at java.util.TimerThread.run(Unknown Source)
"Timer-0" daemon prio=1 tid=0x0849bfa8 nid=0x1bc8 in Obj...
at java.lang.Object.wait(Native Method)
- waiting on <0x89444d70> (a java.util.TaskQueue)
at java.util.TimerThread.mainLoop(Unknown Source)
- locked <0x89444d70> (a java.util.TaskQueue)
at java.util.TimerThread.run(Unknown Source)
"Low Memory Detector" daemon prio=1 tid=0x08313198 nid=0...
"CompilerThread0" daemon prio=1 tid=0x08311c40 nid=0x1bc...
"Signal Dispatcher" daemon prio=1 tid=0x08310d70 nid=0x1...
"Finalizer" daemon prio=1 tid=0x0830a410 nid=0x1bc3 in O...
at java.lang.Object.wait(Native Method)
- waiting on <0x8942b980> (a java.lang.ref.Refer...
at java.lang.ref.ReferenceQueue.remove(Unknown S...
- locked <0x8942b980> (a java.lang.ref.Reference...
at java.lang.ref.ReferenceQueue.remove(Unknown S...
at java.lang.ref.Finalizer$FinalizerThread.run(U...
"Reference Handler" daemon prio=1 tid=0x08309760 nid=0x1...
at java.lang.Object.wait(Native Method)
- waiting on <0x8942ba08> (a java.lang.ref.Refer...
at java.lang.Object.wait(Unknown Source)
at java.lang.ref.Reference$ReferenceHandler.run(...
- locked <0x8942ba08> (a java.lang.ref.Reference...
"main" prio=1 tid=0x082ca130 nid=0x1bbf in Object.wait()...
at java.lang.Object.wait(Native Method)
- waiting on <0x89444e38> (a com.clustercontrol....
at java.lang.Object.wait(Unknown Source)
at com.clustercontrol.agent.Agent.main(Agent.jav...
- locked <0x89444e38> (a com.clustercontrol.agen...
"VM Thread" prio=1 tid=0x083082f8 nid=0x1bc1 runnable
"VM Periodic Task Thread" prio=1 tid=0x08314630 nid=0x1b...
num #instances #bytes class name
--------------------------------------
1: 1433 183216 <no name>
2: 3165 169256 <symbolKlass>
3: 1294 155992 [C
4: 184 92064 <constantPoolKlass>
5: 293 88072 [I
6: 218 82776 [B
7: 1433 80280 <methodKlass>
8: 184 68560 <instanceKlassKlass>
9: 155 49168 <constantPoolCacheKlass>
10: 1320 31680 java.lang.String
11: 255 24480 java.lang.Class
12: 62 18848 <objArrayKlassKlass>
13: 259 14760 [S
14: 326 12896 [Ljava.lang.Object;
15: 288 10656 [[I
16: 296 7104 java.util.HashMap$Entry
17: 84 6568 [Ljava.util.HashMap$Entry;
18: 162 5184 java.lang.ref.SoftReference
19: 207 4968 java.util.Hashtable$Entry
・・・途中省略・・・
308: 1 8 java.util.jar.JavaUtilJarAcc...
Total 13634 1174392
***参考サイト [#e7f2d9e9]
-http://www.smg.co.jp/seminar/JTSMM/backnumber.cgi?id=121...
終了行:
*Java:スレッドダンプをとる [#bccdbb75]
こんな状況ありませんか?
>JAVAのプログラムが''OutOfMemoryError''を出力していて、も...
そんなとき、
-実行中のプログラムを一時停止することが可能(運用的に)
-実行中のVMのFULLGCを実行することが可能(運用的に)
であれば、一手間かけることでJAVAVM中のスレッドダンプを出...
***手順 [#p40176ec]
至って簡単です。
+javaの起動オプションに~
-XX:+PrintClassHistogram
~を追加する
+VMを再起動する
+再起動したVMのプロセスに対して「SIGQUIT」シグナルを送信...
javaの起動オプションで''-XX:+PrintClassHistogram''を追加...
***実験 [#zbf6d7b4]
あるjavaプログラムの起動オプションに上述のオプションを設...
まず、SIGQUITシグナルを送信します。
kill -SIGQUIT <PID>
以下の出力の表部分で、どのクラスがどれくらいメモリを使用...
Full thread dump Java HotSpot(TM) Client VM (1.5.0_22-b0...
"Timer-3" daemon prio=1 tid=0x084ba458 nid=0x1bcb in Obj...
at java.lang.Object.wait(Native Method)
- waiting on <0x89454688> (a java.util.TaskQueue)
at java.util.TimerThread.mainLoop(Unknown Source)
- locked <0x89454688> (a java.util.TaskQueue)
at java.util.TimerThread.run(Unknown Source)
"Timer-2" daemon prio=1 tid=0x084b92f0 nid=0x1bca in Obj...
at java.lang.Object.wait(Native Method)
- waiting on <0x8945b128> (a java.util.TaskQueue)
at java.lang.Object.wait(Unknown Source)
at java.util.TimerThread.mainLoop(Unknown Source)
- locked <0x8945b128> (a java.util.TaskQueue)
at java.util.TimerThread.run(Unknown Source)
"Timer-1" daemon prio=1 tid=0x084a3d70 nid=0x1bc9 in Obj...
at java.lang.Object.wait(Native Method)
- waiting on <0x8945b1a0> (a java.util.TaskQueue)
at java.util.TimerThread.mainLoop(Unknown Source)
- locked <0x8945b1a0> (a java.util.TaskQueue)
at java.util.TimerThread.run(Unknown Source)
"Timer-0" daemon prio=1 tid=0x0849bfa8 nid=0x1bc8 in Obj...
at java.lang.Object.wait(Native Method)
- waiting on <0x89444d70> (a java.util.TaskQueue)
at java.util.TimerThread.mainLoop(Unknown Source)
- locked <0x89444d70> (a java.util.TaskQueue)
at java.util.TimerThread.run(Unknown Source)
"Low Memory Detector" daemon prio=1 tid=0x08313198 nid=0...
"CompilerThread0" daemon prio=1 tid=0x08311c40 nid=0x1bc...
"Signal Dispatcher" daemon prio=1 tid=0x08310d70 nid=0x1...
"Finalizer" daemon prio=1 tid=0x0830a410 nid=0x1bc3 in O...
at java.lang.Object.wait(Native Method)
- waiting on <0x8942b980> (a java.lang.ref.Refer...
at java.lang.ref.ReferenceQueue.remove(Unknown S...
- locked <0x8942b980> (a java.lang.ref.Reference...
at java.lang.ref.ReferenceQueue.remove(Unknown S...
at java.lang.ref.Finalizer$FinalizerThread.run(U...
"Reference Handler" daemon prio=1 tid=0x08309760 nid=0x1...
at java.lang.Object.wait(Native Method)
- waiting on <0x8942ba08> (a java.lang.ref.Refer...
at java.lang.Object.wait(Unknown Source)
at java.lang.ref.Reference$ReferenceHandler.run(...
- locked <0x8942ba08> (a java.lang.ref.Reference...
"main" prio=1 tid=0x082ca130 nid=0x1bbf in Object.wait()...
at java.lang.Object.wait(Native Method)
- waiting on <0x89444e38> (a com.clustercontrol....
at java.lang.Object.wait(Unknown Source)
at com.clustercontrol.agent.Agent.main(Agent.jav...
- locked <0x89444e38> (a com.clustercontrol.agen...
"VM Thread" prio=1 tid=0x083082f8 nid=0x1bc1 runnable
"VM Periodic Task Thread" prio=1 tid=0x08314630 nid=0x1b...
num #instances #bytes class name
--------------------------------------
1: 1433 183216 <no name>
2: 3165 169256 <symbolKlass>
3: 1294 155992 [C
4: 184 92064 <constantPoolKlass>
5: 293 88072 [I
6: 218 82776 [B
7: 1433 80280 <methodKlass>
8: 184 68560 <instanceKlassKlass>
9: 155 49168 <constantPoolCacheKlass>
10: 1320 31680 java.lang.String
11: 255 24480 java.lang.Class
12: 62 18848 <objArrayKlassKlass>
13: 259 14760 [S
14: 326 12896 [Ljava.lang.Object;
15: 288 10656 [[I
16: 296 7104 java.util.HashMap$Entry
17: 84 6568 [Ljava.util.HashMap$Entry;
18: 162 5184 java.lang.ref.SoftReference
19: 207 4968 java.util.Hashtable$Entry
・・・途中省略・・・
308: 1 8 java.util.jar.JavaUtilJarAcc...
Total 13634 1174392
***参考サイト [#e7f2d9e9]
-http://www.smg.co.jp/seminar/JTSMM/backnumber.cgi?id=121...
ページ名: