- 前言
Java Thread Dump 是一個非常有用的應用診斷工具, 通過thread dump出來的信息, 可以定位到你需要了解的線程, 以及這個線程的調用棧. 如果配合linux的top命令, 可以找到你的系統中的最耗CPU的線程代碼段, 這樣才能有針對性地進行優化.
- 場景和實踐
? ? 2.1. 后臺系統一直是在黑盒運行, 除了能暫停一部分任務的執行, 根本無法知道哪些任務耗CPU過多。所以一直以為是業務代碼的問題, 經過各種優化(刪減沒必要的邏輯, 合并寫操作)等等優化, 系統負載還是很高. 沒什么訪問量, 后臺任務處理也就是每天幾百萬的級別, load還是達到了15以上. CPU只有4核,天天收到load告警卻無從下手, 于是乎就被迫來分析一把線程.
2012 - 04 - 13 16 : 30 : 41 Full thread dump OpenJDK 64 -Bit Server VM ( 1 . 6 . 0 -b09 mixed mode): " TP-Processor12 " daemon prio= 10 tid=0x00000000045acc00 nid=0x7f19 in Object. wait () [0x00000000483d0000..0x00000000483d0a90] java.lang.Thread. State: WAITING (on object monitor ) at java.lang.Object. wait (Native Method) - waiting on <0x00002aaab5bfce70> (a org.apache.tomcat.util.threads.ThreadPool$ControlRunnable) at java.lang.Object. wait (Object. java: 502 ) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool. java: 662 ) - locked <0x00002aaab5bfce70> (a org.apache.tomcat.util.threads.ThreadPool$ControlRunnable) at java.lang.Thread.run(Thread. java: 636 ) " TP-Processor11 " daemon prio= 10 tid=0x00000000048e3c00 nid=0x7f18 in Object. wait () [0x00000000482cf000..0x00000000482cfd10] java.lang.Thread. State: WAITING (on object monitor ) .... " VM Thread " prio= 10 tid=0x00000000042ff400 nid=0x77de runnable " GC task thread#0 (ParallelGC) " prio= 10 tid=0x000000000429c400 nid=0x77d9 runnable " GC task thread#1 (ParallelGC) " prio= 10 tid=0x000000000429d800 nid=0x77da runnable " GC task thread#2 (ParallelGC) " prio= 10 tid=0x000000000429ec00 nid=0x77db runnable " GC task thread#3 (ParallelGC) " prio= 10 tid=0x00000000042a0000 nid=0x77dc runnable " VM Periodic Task Thread " prio= 10 tid=0x0000000004348400 nid=0x77e5 waiting on condition JNI global references: 815 Heap PSYoungGen total 320192K , used 178216K [0x00002aaadce00000, 0x00002aaaf1800000, 0x00002aaaf1800000) eden space 303744K , 55 % used [0x00002aaadce00000,0x00002aaae718e048,0x00002aaaef6a0000) from space 16448K , 65 % used [0x00002aaaf0690000,0x00002aaaf110c1b0,0x00002aaaf16a0000) to space 16320K , 0 % used [0x00002aaaef6a0000,0x00002aaaef6a0000,0x00002aaaf0690000) PSOldGen total 460992K , used 425946K [0x00002aaab3a00000, 0x00002aaacfc30000, 0x00002aaadce00000) object space 460992K , 92 % used [0x00002aaab3a00000,0x00002aaacd9f6a30,0x00002aaacfc30000) PSPermGen total 56192K , used 55353K [0x00002aaaae600000, 0x00002aaab1ce0000, 0x00002aaab3a00000) object space 56192K , 98 % used [0x00002aaaae600000,0x00002aaab1c0e520,0x00002aaab1ce0000)
最后一段是系統的對內存的使用情況.
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
