1、先運(yùn)行java項(xiàng)目
2、打開任務(wù)管理器,找到cpu占用的java進(jìn)程的PID
3、再利用jdk自帶的jstack命令,在控制臺(tái)下,jstack -l PID >E://wwww.stack,這個(gè)命令就是把這個(gè)進(jìn)程的堆棧信息打印到E盤下wwwww.stack這個(gè)文件中
4、下載windows查看線程的工具process-explorer? ?連接????https://download.sysinternals.com/files/ProcessExplorer.zip
5、解壓打開,根據(jù)系統(tǒng)選擇32位的或者64位的打開,找到j(luò)ava程序,找到你剛才任務(wù)cpu高的PID,再點(diǎn)擊進(jìn)去,選擇Thread的選項(xiàng)卡

6、找到CPU高的TID,這里是10進(jìn)制的數(shù)字,在計(jì)算器下輸入數(shù)字后,比如8504,轉(zhuǎn)換成16進(jìn)制

7、再打開先前導(dǎo)出的堆棧文件,查詢nid等于這個(gè)數(shù)字的

8、找到熟悉的類,就可以慢慢排查了

9、線程的狀態(tài)
? ? 1????新建狀態(tài)(New)
? ? 2????就緒狀態(tài)(Runnable)
????3????運(yùn)行狀態(tài)(Running)
? ? 4????阻塞狀態(tài)(Blocked)
? ? 5????死亡狀態(tài)(Dead)