JVM 性能調優監控工具之jstack
文章目錄
- JVM 性能調優監控工具之jstack
- 前言
- 一、jstack 是什麼?
- 二、使用步驟
-
- 1.查詢伺服器pid
- 2.檢視伺服器程序中最耗費CPU的線程
- 3.轉換成16進制碼
- 3.通過jstack輸出程序pid的堆棧資訊
- 3.定位代碼
- 總結
前言
提示:以下是本篇文章正文内容,下面案例可供參考
一、jstack 是什麼?
示例:jstack主要用來檢視某個Java程序内的線程堆棧資訊。文法格式如下。
jstack pid
二、使用步驟
1.查詢伺服器pid
代碼如下(示例):
ps -ef|gerp 伺服器名稱
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI2EzX4xSZz91ZsAzNfRHLGZkRGZkRfJ3bs92YsAjMfVmepNHL90zdjtGbYVGO1RTNxNVY1c3R0UTQClGVF5UMR9Fd4VGdsATNfd3bkFGazxycykFaKdkYzZUbapXNXlleSdVY2pESa9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLlNmMzEDNlNTOxEGN2EDMidjYkRDM1QjZiJzY2YjZ4AzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2.檢視伺服器程序中最耗費CPU的線程
找出該程序内最耗費CPU的線程,可以使用ps -Lfp pid或者ps -mp pid -o THREAD, tid, time或者top -Hp pid,我這裡用第三個:
top -Hp pid
3.轉換成16進制碼
TIME列就是各個Java線程耗費的CPU時間,CPU時間最長的是線程ID為67720的線程,用得到67720的十六進制值為10888,下面會用到。
printf "%x" 67720
3.通過jstack輸出程序pid的堆棧資訊
然後根據線程ID的十六進制值grep
jstack 67252 | grep 10888
3.定位代碼
這是我們項目中用到的占用CPU最高的代碼片段,就是線程池的單一模式。
總結
提示:jstack可以定位到線程堆棧,根據堆棧資訊我們可以定位到具體代碼,是以它在JVM性能調優中使用得非常多。