JVM調優工具總結

一、jps : 虛擬機進程狀況工具

它可以列出正在運行的虛擬機進程,並顯示虛擬機執行主類(Main Class,main()函數所在的類)名稱以及正在運行的本地虛擬機唯一ID(LVMID);

它是使用率最高的一個JDK命令行工具,因爲其他的命令行工具都需要輸入查詢到的ID來確定要監控的是哪一個虛擬機進程。

命令格式:jps [options] [hostid]

選項 作用
-q 只輸出LVMID,省略主類的名稱
-m 輸出虛擬機進程啓動時傳遞給主類main()函數的參數
-l 輸出主類的全名,如果進程執行的是Jar包,輸出Jar包路徑;
-v 輸出虛擬機進程啓動時的JVM參數;

在這裏插入圖片描述

二、jstat:虛擬機統計信息監視工具

用於監視虛擬機各種運行狀態信息的命令行工具。它可以顯示本地或者遠程虛擬機進程中的類加載、內存、垃圾收集、JIT編譯等運行時數據,它是運行期定位虛擬機性能的首選工具。

命令格式:jstat [option vmid [interval [s | ms] [count] ] ]
對於命令行中的VMID與LVMID需要特別說明一下:如果是本地虛擬機進程,兩者是一致的,如果是遠程虛擬機進程,兩者是不一樣的;

參數interval 和 count 代表查詢間隔和次數如果省略這兩個參數,說明只查詢一次;

jstat -gc 2764 250 20
代表需要每250ms查詢一次進程2764垃圾收集情況,一共查詢20次;

選項option代表用戶希望查詢什麼信息,主要分爲三類:類加載、垃圾收集、運行期編譯狀況;

選項 作用
-class 監視類的裝載、卸載數量、總空間以及類裝載所耗費的時間
-gc 監視Java堆狀況、包括Eden區、兩個survivor區、老年代、永久代等的容量、已用空間、GC時間合計等信息
-gcutil 監視內容與-gc基本相同,主要輸出的是使用空間的百分比
-gcnew 監視新生代GC狀況
-gcold 監視老年代GC情況
-compiler 輸出JIT編譯器編譯過的方法、耗時等信息

在這裏插入圖片描述

三、jinfo:Java配置信息工具

可以做到實時查看和調整虛擬機各項參數

命令格式:jinfo [option] pid

四、jmap:Java內存映像工具

用於生成堆轉儲快照(一般稱爲heapmap或dump文件)。還可以查詢finalize執行隊列、Java堆和永久代的詳細信息,如空間使用率、當前用的是哪種收集器等。

命令格式:jmap [option] vmid

選項 作用
-dump 生成Java堆轉儲快照。格式爲:dump:[live, ]format=b, file=,其中live參數說明是否只dump出存活對象。
-finalizerinfo 顯示在F-Queue中等待Finalizer線程執行finalize方法的對象。
-heap 顯示Java堆詳細信息,如使用哪種回收器、參數配置、分代狀況等。
-histo 顯示堆中對象的統計信息,包括類、實例數量、合計容量。
-permstat 以classLoader爲統計口徑顯示永久代內存狀態;
-F 當虛擬機進程對-dump選項沒有響應時,可使用這個選項強制生成dump快照;

五、jhat:虛擬機堆轉儲快照分析工具

該命令與jmap搭配使用,來分析jmap生成的堆轉儲快照文件。jhat內置了一個微型的HTTP/HTML服務器,生成dump文件的分析結果後,可以在瀏覽器查看(http://localhost:7000/)
但是在實際應用中來講,除非沒有其他工具來分析dump文件,否則一般不會使用它來分析,有兩點原因:
1、一般不會在部署應用程序的服務器上直接分析dump文件,因爲分析工作是一個耗時且消耗硬件資源的過程;
2、jhat的分析功能相對來說比較簡陋,後面會介紹到VisualVM;

首先使用jmap生成dump文件,再使用jhat解析:
在這裏插入圖片描述
在瀏覽器查看dump文件:http://localhost:7000/
在這裏插入圖片描述

六、jstack:Java堆棧跟蹤工具

用於生成虛擬機當前時刻的線程快照(一般稱爲threaddump或者javacore文件)。線程快照就是當前虛擬機內每一條線程正在執行的方法堆棧集合,生成線程快照的主要目的是定位現場出現長時間停頓的原因,如線程死鎖、死循環、請求外部資源導致長時間等待等都是線程長時間等待的原因。

命令格式:jstack [option] vmid

選項 作用
-F 當正常請求不被響應時,強制輸出線程堆棧
-l 除堆棧外,顯示關於鎖的附加信息
-m 如果調用到本地方法的話,可以顯示C/C++的堆棧

在這裏插入圖片描述

七、VisualVm:多合一故障處理工具

用於運行監視、故障處理、性能分析。它對應用程序的實際性能影響很小,可以直接應用在生產環境中。

在命令行輸入:jvisualvm
會彈出下面窗口
在這裏插入圖片描述
我們可以手動在這裏安裝很多插件更好的進行JVM性能調優;
VisualGC是一個很好用的插件!
打開工具 -> 插件 -> 可用插件,如果沒有可用插件就到http://visualvm.github.io/index.html中選擇最新的url地址,將”設置“中的url地址更改爲我們訪問到的github上找到的對應我們JDK版本的地址;

首先找見plugins:
在這裏插入圖片描述

找見對應自己JDK版本的更新地址
在這裏插入圖片描述
進入jvisualvm插件管理,修改url地址
在這裏插入圖片描述
之後就可以在可用插件安裝相應插件了
在這裏插入圖片描述
VisualGC頁面
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章