Javaスタック情報ファイルにおける秘密(三)

992 ワード

Javaアプリケーションから導出されたスタック情報については、スレッドIDが含まれているため、各スレッドのCPU占有状況を分析するために使用することができ、CPU占有が高すぎる問題を分析し、CPU関連の最適化クラスの作業を指導するために使用することができる.
まず、エクスポートされたスタック情報の一部を参照してください.
"main" prio=6 tid=0x00868c00 nid=0x19a4 waiting on condition [0x0098f000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
	at java.lang.Thread.sleep(Native Method)
	at DeadLock.main(DeadLock.java:3)

   Locked ownable synchronizers:
	- None

NidフィールドはオペレーティングシステムのスレッドIDを識別し,16プロセスで表す.現在オペレーティングシステムのスレッドIDがありますが、各スレッドが占有するCPUを観察する方法はありますか?
Linuxプラットフォームでは、topコマンドとオプションHを使用できます.例は以下のとおりです.
# top -H -p <pid>

出力から各スレッドのIDが見つかり、10進数で表示されます.各スレッドに対応するスタック情報を見つけるには、topコマンドで観察したスレッドIDを手動で16進数表示に変換し、プロセスのスタック情報ファイルで検索する必要があります.
Windowsプラットフォームでは、無料のツール、有名なProcessExplorerをダウンロードする必要があります.このツールにより,ターゲットJavaプロセスのスレッドIDリストやCPU占有率を容易に見ることができるが,CPU占有率の高いスレッドが具体的に何をしているのかを明らかにするためには,スレッドIDを手動で16進数表示に変換し,スタック情報ファイルで検索する必要がある.