本博客介紹一下jvisualvm的簡單使用教程,jvisualvm功能還是挺多的,不過本博客之簡單介紹一下
1、拿線程快照信息
在jdk安裝目錄找到jvisualvm.exe,${JDK_HOME}\bin\jvisualvm.exe
這里可以看到具體的線程快照信息:
收集后可以看到如圖,右鍵,保存線程快照信息
收集線程快照信息主要是為了監控是否有出現死鎖的情況:
觀察收集到快照信息,拉到最后看看,如圖,就是有出現死鎖
再往上看:
這里就列出了對應的死鎖情況,根據http-nio-8080-exec-274這些去搜索,定位問題
"http-nio-8080-exec-274":
waiting to lock monitor 0x000000000b0263b0 (object 0x000000070008cbd0, a com.tongweb.log.PassThroughPrintStream),
which is held by "http-nio-8080-exec-87"
"http-nio-8080-exec-87":
waiting to lock monitor 0x0000000029989058 (object 0x00000007000a0fa0, a com.tongweb.web.webutil.util.log.SystemLogHandler),
which is held by "pool-12-thread-2"
"pool-12-thread-2":
waiting to lock monitor 0x0000000026915308 (object 0x00000007000a0fc8, a com.tongweb.log.PassThroughPrintStream),
which is held by "http-nio-8080-exec-85"
"http-nio-8080-exec-85":
waiting to lock monitor 0x0000000029989058 (object 0x00000007000a0fa0, a com.tongweb.web.webutil.util.log.SystemLogHandler),
which is held by "pool-12-thread-2"
2、拿堆棧快照信息
拿堆棧快照信息,如圖,選擇監控->堆Dump
時間會比較久,需要等待
同樣右鍵->保存,保存堆棧快照信息