天天看點

JVM 性能調優監控工具之jstackJVM 性能調優監控工具之jstack前言一、jstack 是什麼?二、使用步驟總結

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  伺服器名稱 
           
JVM 性能調優監控工具之jstackJVM 性能調優監控工具之jstack前言一、jstack 是什麼?二、使用步驟總結

2.檢視伺服器程序中最耗費CPU的線程

找出該程序内最耗費CPU的線程,可以使用ps -Lfp pid或者ps -mp pid -o THREAD, tid, time或者top -Hp pid,我這裡用第三個:

top -Hp pid
           
JVM 性能調優監控工具之jstackJVM 性能調優監控工具之jstack前言一、jstack 是什麼?二、使用步驟總結

3.轉換成16進制碼

TIME列就是各個Java線程耗費的CPU時間,CPU時間最長的是線程ID為67720的線程,用得到67720的十六進制值為10888,下面會用到。

printf "%x" 67720
           
JVM 性能調優監控工具之jstackJVM 性能調優監控工具之jstack前言一、jstack 是什麼?二、使用步驟總結

3.通過jstack輸出程序pid的堆棧資訊

然後根據線程ID的十六進制值grep

jstack 67252 | grep 10888
           
JVM 性能調優監控工具之jstackJVM 性能調優監控工具之jstack前言一、jstack 是什麼?二、使用步驟總結

3.定位代碼

這是我們項目中用到的占用CPU最高的代碼片段,就是線程池的單一模式。

JVM 性能調優監控工具之jstackJVM 性能調優監控工具之jstack前言一、jstack 是什麼?二、使用步驟總結

總結

提示:jstack可以定位到線程堆棧,根據堆棧資訊我們可以定位到具體代碼,是以它在JVM性能調優中使用得非常多。