SlideShare a Scribd company logo
Javaのs
Thread dumpの読み方
          船戸 隆
            2010/11/26
アジェンダ


●Thread dumpとは
●Thread dumpを取るとき

●取り方

●読み方

●ケーススタディ
Thread dumpとは


 Java VisualVM では、ローカルアプリケーションの実行中にスレッド
ダンプ (スタックトレース) を取ることができます。スレッドダンプを
取ってもアプリケーションが停止されることはありません。スレッド
ダンプを出力すると、Java スレッドのスレッド状態を含むスレッドス
タックの出力が得られます。
ようするに、Javaの各スレッドのメソッド呼び出しのスタックトレース
とそのスレッドの実行状態を取得することができる。
 各javaVM(Sun、IBM、HP、Apple・・・)などなど実装系はいくつか
あって出力内容は若干違うけれど大体一緒。
Thread dumpを取るとき

●       デッドロック
    ●   どのリソースがロックされているか?
●       メモリーリーク
●       無限ループ
    ●   CPUを使っているLWP(LightWeightProcess)を探す
●       コネクションプール枯渇
●       などなど、よくわからない挙動をしてたらとにかくThread dumping!
取り方
   ●    任意のタイミングでプロセスにSIGQUITのシ
        グナルを送る
        (Unix、Mac)、Ctrl+Break(Windows)
   ●    標準出力か標準エラーに出力される
    ●   通常はTomcatなのでcatalina.outかlocalhost.logに出力される
    ●   具体的にはLinuxでの例

                                                  プロセスIDは
                                                   プロセスIDは
           $ kill -3 <プロセスID>                Psコマンドやjpsコマンドで
                                              Psコマンドやjpsコマンドで
                                                 予め探しておく
                                                  予め探しておく



JDI(Java Debug Interface)
 JDI(Java Debug Interface)
を使っても取れるらしいが
 を使っても取れるらしいが
        詳細求む
         詳細求む
取るときの注意

●Thread dumpは数秒おきに数回とる
● 無限ループの確認


    –   スタック状態が変わっていたらループしてない
         という判断
●   間違えて-9を指定しない
読み方

●   出力されるスレッドはいっぱいある
●   JVM内部で使用されるスレッドも出力
     –   Reference HandlerとかLowMemoryDetectorとか大概無視していい
     –   Tomcatのリクエストを受け付けるスレッドだと

●   注目すべきスレッドの状態は3種類
●   waiting for monitor entry=ロック解放待ち
●   waiting on monitor = スリープ中
●   runnable = 実行中 =

●
スレッドの状態

●    runnable
 ●    通常スレッドが処理を行なっている状態
       –   Javaコードを実行中かネイティブメソッドを実行中
●    以下はソケットのIO待ち


"Thread-0" prio=9 tid=0x1bef58 nid=8 lwp_id=13105 runnable [0x6fc58000..0x6fc58438]
 "Thread-0" prio=9 tid=0x1bef58 nid=8 lwp_id=13105 runnable [0x6fc58000..0x6fc58438]
at java.net.SocketInputStream.socketRead(Native Method)
 at java.net.SocketInputStream.socketRead(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:90)
 at java.net.SocketInputStream.read(SocketInputStream.java:90)
at java.net.SocketInputStream.read(SocketInputStream.java:106)
 at java.net.SocketInputStream.read(SocketInputStream.java:106)
at SocketClose$SocketListener.run(SocketClose.java:18)
 at SocketClose$SocketListener.run(SocketClose.java:18)
at java.lang.Thread.run(Thread.java:479)
 at java.lang.Thread.run(Thread.java:479)
スレッドの状態

●   waiting on monitor
●   スレッドダンプにwaiting on、lockedの出力が含まれる
●   オブジェクトに関するロックを獲得後、一旦ロックを開放
     し通知(notify)を待っている状態
●
スレッドの状態

●   waiting for monitor entry
●    デッドロックしたときにでてることが多い
●    オブジェクトロック待ち状態
      –   syncronizedなメソッドの開放待ち
LWP

●       LightWeightProcess
    ●   ひとつのプロセスの中でさらに複数の処理を並行稼動させ
         るための仕組み
●     Javaのプロセスの内部的なLWPの情報を取得
    ●  それぞれのスレッドがどのように使われてるかがわかる
          –   CPU、メモリなど
●     スレッドのIDと紐付け
    ● 右のコマンドを打つとLWPの一覧がでる
          –   LWPの項目(10進数)を16進数に変換したものが出力
               される。
                              $ ps -L auxw
ケーススタディ

More Related Content

What's hot

ClassLoader Leak Patterns
ClassLoader Leak PatternsClassLoader Leak Patterns
ClassLoader Leak Patterns
nekop
 
クラスローダーについて
クラスローダーについてクラスローダーについて
クラスローダーについて
Suguru ARAKAWA
 
Jvm internal
Jvm internalJvm internal
Jvm internal
Go Tanaka
 

What's hot (20)

java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷javajava.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷java
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2
 
ClassLoader Leak Patterns
ClassLoader Leak PatternsClassLoader Leak Patterns
ClassLoader Leak Patterns
 
クラスローダーについて
クラスローダーについてクラスローダーについて
クラスローダーについて
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
 
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
 
Javaメモリ勉強会
Javaメモリ勉強会Javaメモリ勉強会
Javaメモリ勉強会
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
 
SpringBootTest入門
SpringBootTest入門SpringBootTest入門
SpringBootTest入門
 
Jvm internal
Jvm internalJvm internal
Jvm internal
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
 
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 
jcmd をさわってみよう
jcmd をさわってみようjcmd をさわってみよう
jcmd をさわってみよう
 
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
 
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
 
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
 

Similar to スレッドダンプの読み方

JVMの中身を可視化してみた
JVMの中身を可視化してみたJVMの中身を可視化してみた
JVMの中身を可視化してみた
Kengo Toda
 
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based languageKink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
Ryosuke IWANAGA
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
hiro345
 

Similar to スレッドダンプの読み方 (20)

Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
 
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめ
 
JVMの中身を可視化してみた
JVMの中身を可視化してみたJVMの中身を可視化してみた
JVMの中身を可視化してみた
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
 
Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタ
 
TruffleSqueakの紹介
TruffleSqueakの紹介TruffleSqueakの紹介
TruffleSqueakの紹介
 
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
 
MySQLトラブル解析入門
MySQLトラブル解析入門MySQLトラブル解析入門
MySQLトラブル解析入門
 
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based languageKink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
 
Project Loom - 限定継続と軽量スレッド -
Project Loom - 限定継続と軽量スレッド - Project Loom - 限定継続と軽量スレッド -
Project Loom - 限定継続と軽量スレッド -
 
【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門 【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, Codereading
 
HeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LTHeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LT
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
 
Java8から17へ
Java8から17へJava8から17へ
Java8から17へ
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
 
Webサーバのチューニング
WebサーバのチューニングWebサーバのチューニング
Webサーバのチューニング
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
 
Heap statsfx analyzer
Heap statsfx analyzerHeap statsfx analyzer
Heap statsfx analyzer
 

More from Funato Takashi (7)

プログラムを作って飯を食うということ
プログラムを作って飯を食うということプログラムを作って飯を食うということ
プログラムを作って飯を食うということ
 
Git flow cheatsheet
Git flow cheatsheetGit flow cheatsheet
Git flow cheatsheet
 
Springでdao 20070413
Springでdao 20070413Springでdao 20070413
Springでdao 20070413
 
Unit testで定時帰宅!
Unit testで定時帰宅!Unit testで定時帰宅!
Unit testで定時帰宅!
 
Maven2 plugin
Maven2 pluginMaven2 plugin
Maven2 plugin
 
問題解決ノ勘所
問題解決ノ勘所問題解決ノ勘所
問題解決ノ勘所
 
Javaでmongo db
Javaでmongo dbJavaでmongo db
Javaでmongo db
 

Recently uploaded

2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
ssuserbefd24
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 

Recently uploaded (14)

2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 

スレッドダンプの読み方

  • 1. Javaのs Thread dumpの読み方 船戸 隆 2010/11/26
  • 3. Thread dumpとは  Java VisualVM では、ローカルアプリケーションの実行中にスレッド ダンプ (スタックトレース) を取ることができます。スレッドダンプを 取ってもアプリケーションが停止されることはありません。スレッド ダンプを出力すると、Java スレッドのスレッド状態を含むスレッドス タックの出力が得られます。 ようするに、Javaの各スレッドのメソッド呼び出しのスタックトレース とそのスレッドの実行状態を取得することができる。  各javaVM(Sun、IBM、HP、Apple・・・)などなど実装系はいくつか あって出力内容は若干違うけれど大体一緒。
  • 4. Thread dumpを取るとき ● デッドロック ● どのリソースがロックされているか? ● メモリーリーク ● 無限ループ ● CPUを使っているLWP(LightWeightProcess)を探す ● コネクションプール枯渇 ● などなど、よくわからない挙動をしてたらとにかくThread dumping!
  • 5. 取り方 ● 任意のタイミングでプロセスにSIGQUITのシ グナルを送る (Unix、Mac)、Ctrl+Break(Windows) ● 標準出力か標準エラーに出力される ● 通常はTomcatなのでcatalina.outかlocalhost.logに出力される ● 具体的にはLinuxでの例 プロセスIDは プロセスIDは $ kill -3 <プロセスID> Psコマンドやjpsコマンドで Psコマンドやjpsコマンドで 予め探しておく 予め探しておく JDI(Java Debug Interface) JDI(Java Debug Interface) を使っても取れるらしいが を使っても取れるらしいが 詳細求む 詳細求む
  • 6. 取るときの注意 ●Thread dumpは数秒おきに数回とる ● 無限ループの確認 – スタック状態が変わっていたらループしてない という判断 ● 間違えて-9を指定しない
  • 7. 読み方 ● 出力されるスレッドはいっぱいある ● JVM内部で使用されるスレッドも出力 – Reference HandlerとかLowMemoryDetectorとか大概無視していい – Tomcatのリクエストを受け付けるスレッドだと ● 注目すべきスレッドの状態は3種類 ● waiting for monitor entry=ロック解放待ち ● waiting on monitor = スリープ中 ● runnable = 実行中 = ●
  • 8. スレッドの状態 ● runnable ● 通常スレッドが処理を行なっている状態 – Javaコードを実行中かネイティブメソッドを実行中 ● 以下はソケットのIO待ち "Thread-0" prio=9 tid=0x1bef58 nid=8 lwp_id=13105 runnable [0x6fc58000..0x6fc58438] "Thread-0" prio=9 tid=0x1bef58 nid=8 lwp_id=13105 runnable [0x6fc58000..0x6fc58438] at java.net.SocketInputStream.socketRead(Native Method) at java.net.SocketInputStream.socketRead(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:90) at java.net.SocketInputStream.read(SocketInputStream.java:90) at java.net.SocketInputStream.read(SocketInputStream.java:106) at java.net.SocketInputStream.read(SocketInputStream.java:106) at SocketClose$SocketListener.run(SocketClose.java:18) at SocketClose$SocketListener.run(SocketClose.java:18) at java.lang.Thread.run(Thread.java:479) at java.lang.Thread.run(Thread.java:479)
  • 9. スレッドの状態 ● waiting on monitor ● スレッドダンプにwaiting on、lockedの出力が含まれる ● オブジェクトに関するロックを獲得後、一旦ロックを開放 し通知(notify)を待っている状態 ●
  • 10. スレッドの状態 ● waiting for monitor entry ● デッドロックしたときにでてることが多い ● オブジェクトロック待ち状態 – syncronizedなメソッドの開放待ち
  • 11. LWP ● LightWeightProcess ● ひとつのプロセスの中でさらに複数の処理を並行稼動させ るための仕組み ● Javaのプロセスの内部的なLWPの情報を取得 ● それぞれのスレッドがどのように使われてるかがわかる – CPU、メモリなど ● スレッドのIDと紐付け ● 右のコマンドを打つとLWPの一覧がでる – LWPの項目(10進数)を16進数に変換したものが出力 される。 $ ps -L auxw