天天看點

JVM調試指令與調試工具

作者:Doker多克

一、JDK自帶指令

  Sun JDK監控和故障處理指令如:

1、jps

  JVM Process Status Tool,顯示指定系統内所有的HotSpot虛拟機程序。

jsp指令格式:

jps [ options ] [ hostid ]
擴充參數:jps -l;jps -mlv;           

各參數說明如下:

JVM調試指令與調試工具

2、jstat

  JVM statistics Monitoring,用于監視虛拟機運作時狀态資訊的指令,它可以顯示出虛拟機程序中的類裝載、記憶體、垃圾收集、JIT編譯等運作資料。

jstat指令格式:

jstat [ option vmid [interval[s|ms] [count]] ]
jstat -gc pid 1000 10
檢視目前pid使用jvm堆棧空間的記憶體使用情況,每1000豪秒,共列印10次
jstat -gcutil pid 1000 10 記憶體百分比           
JVM調試指令與調試工具

3、jmap

  JVM Memory Map,用于生成heap dump檔案。

jmap指令格式:

jmap [ option ] vmid           
JVM調試指令與調試工具

4、jhat

  JVM Heap Analysis Tool,與jmap搭配使用,用來分析jmap生成的dump,該指令解析 Java 堆轉儲檔案并啟動 Web 伺服器,生成dump的分析結果後,可以在浏覽器中檢視。

 使用案例:

1. 導出dump資訊到a.bin檔案

JVM調試指令與調試工具

2. 啟動jhat進行分析檔案

JVM調試指令與調試工具

5、jstack

 用于生成虛拟機目前時刻的線程快照(一般稱為threaddump或者javacore檔案)。線程快照就是目前虛拟機内每一條線程正在執行的方法堆棧集合,生成線程快照的目的通常是定位線程出現長時間停頓的原因,如線程間死鎖、死循環、請求外部資源導緻的長時間挂起等,都是導緻線程長時間停頓的常見原因。

jstack指令格式:

jstack [ option ] vimd           
JVM調試指令與調試工具

6、jinfo

  JVM Configuration info,用于實時檢視和調整虛拟機運作參數。

jinfo指令格式:

主要介紹-flag參數,如果想檢視一個已經運作的java程式的虛拟機參數值

jinfo [ option ] pid
$ jinfo -flag MaxMetaspaceSize 962
-XX:MaxMetaspaceSize=18446744073709547520           

二、JDK的可視化工具JConsole

1、JConsole

JConsole(Java Monitoring and Management Console)是一種基JMX(Java Management Extensions,即Java管理擴充)的可視化監視、管理工具。

  通過JDK/bin目錄下的“jconsole.exe”啟動JConsole後,将自動搜尋出本機運作的所有虛拟機程序。

2、VisualVM

VisualVM是更常用的可視化監控工具,它本身還具有插件擴充功能,是以功能非常強大,目前使用非常多。

需要先說明的是一些安裝上的問題,雖然安裝好jdk之後是會有一個VisualVM的程式在jdk的bin目錄下,但是不建議使用jdk提供的這個,建議直接去官網下載下傳最新的版本使用。

下載下傳:

http://visualvm.github.io/download.html

插件下載下傳:

http://visualvm.github.io/pluginscenters.html

繼續閱讀