MDA/MDD/TDD/DDD/DDDDDDD
          posts - 536, comments - 111, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          java的thread dump

          Posted on 2009-01-14 14:29 leekiang 閱讀(1586) 評論(0)  編輯  收藏 所屬分類: java

          Sun的JVM用下列方法可以產生Thread Dump堆棧信息:

          1,Solaris OS
          <ctrl>-’\’ (Control-Backslash)
          ?kill -QUIT <pid>

          2, HP-UX/UNIX/Linux
          Kill -3 PID?
          PID通過下面方法獲取
          ps -efHl | grep 'java' **. **

          3,Windows
          直接對MSDOS窗口的程序按Ctrl-break

          有些Java應用服務器是在控制臺上運行,如Weblogic,為了方便獲取threaddump信息,在 weblogic啟動的時候,最好將其標準輸出重定向到一個文件,用"nohup sh startWebLogic.sh > start.log &"命令,執行"kill -3 <pid>",Stack trace就會輸出到start.log里。Tomcat的Thread Dump會輸出到命令行控制臺或者logs的catalina.out文件里。為了反映線程狀態的動態變化,需要接連多次做thread dump,每次間隔10-20s。

          Sun JVM的常見線程狀態

          對于thread dump信息,主要關注的是線程的狀態和其執行堆棧
          線程的狀態一般為三類
          Runnable(R):當前可以運行的線程
          Waiting on monitor(CW):線程主動wait
          Waiting for monitor entry(MW):線程等鎖
          一般關注的都是第一和第三種狀態的線程
          Cpu很忙則關注runnable的線程
          Cpu閑則關注waiting for monitor entry的線程
          一種典型的死鎖是由于在server端應用(比如servlet)中請求由同一weblogic實例server的資源
          解決辦法就是將該servlet放到另外的執行隊列里去執行


          來源:http://www.searchfull.net/blog/2007/04/10/1176207938784.html

          Thread Dump Analyzer 主頁:https://tda.dev.java.net/

          主站蜘蛛池模板: 宁城县| 内黄县| 施甸县| 南丰县| 随州市| 蛟河市| 潞西市| 四会市| 聂拉木县| 漯河市| 都匀市| 大城县| 界首市| 大竹县| 鹤庆县| 那曲县| 拉孜县| 丰原市| 卢龙县| 澎湖县| 南江县| 莱西市| 白山市| 文水县| 祁连县| 万宁市| 潜江市| 吴桥县| 弥渡县| 桐柏县| 房产| 双柏县| 东乌珠穆沁旗| 昆山市| 鄂尔多斯市| 喀喇| 宝山区| 岳阳县| 贺兰县| 忻州市| 阿拉善盟|