虛擬機進程情況工具,能夠列出正在運行的虛擬機進程,並顯示虛擬機執行主類(MainClass,main()函數所在的類)名稱以及這些進程的本地虛擬機惟一ID(Local Virtual Machine Identifier,LVMID)。java
jps[options][hostid]
-q
:只輸出LVMID,省略主類名稱-m
:輸出虛擬機進程啓動時傳給主類main()函數的參數-l
:輸出主類全名,若是進程執行的時jar包則輸出jar路徑-v
:輸出虛擬機進程啓動時的jvm參數虛擬機統計信息監視工具,用於監視虛擬機各類運行狀態信息的命令行工具。它能夠顯示本地或者遠程虛擬機進程中的類裝載、內存、垃圾收集、JIT編譯等運行數據,在沒有GUI圖形界面,只提供了純文本控制檯環境的服務器上,它將是運行期定位虛擬機性能問題的首選工具。瀏覽器
jstat[option vmid[interval[s|ms][count]]]
[protocol:][//]lvmid[@hostname[:port]/servername]
// 每250毫秒查詢一次進程2764垃圾收集情況,一共查詢20次
jstat-gc 2764 250 20
複製代碼
-class
:監視類裝載、卸載數量、總空間和類裝載消耗的時間-gc
:監視java堆情況,包括Eden區、2個Survivor區、老年代、永久代等的容量,已用空間,GC時間合計等信息-gccapacity
: 監視內容與-gc
相同,但輸出主要關注Java堆各個區域使用到的最大、最小空間-gcutil
:監視內容與-gc
相同,但輸出主要關注已使用空間佔總空間的百分百-gccause
:與-gcutil
同樣,但會額外輸出上一次GC產生的緣由-gcnew
:監視新生代GC的情況-gcnewcapacity
:監視內容與-gcnew
相同,輸出主要關注使用到的最大、最小空間-gcold
:監視老年代GC的情況-gcoldcapacity
:監視內容與-gcold
相同,輸出主要關注使用到的最大、最小空間-gcpermcapacity
:輸出永久代使用到的最大、最小空間-compiler
:輸出JIT編譯過的方法、耗時等信息-printcompilation
:輸出已被JIT編譯的方法Java配置信息工具,可實時查看和調整虛擬機各項參數。bash
jinfo[option]pid
-flag
:輸出指定args參數的值-flags
:不須要args參數,輸出全部JVM參數的值-sysprops
:輸出系統屬性,等同於System.getProperties()Java內存映像工具用於生成堆轉儲快照(dump文件)服務器
Kill-3
命令發送進程退出信號也能拿到dump文件jmap[option]vmid
-dump
:生成堆轉儲快照-finalizerinfo
:顯示在F-Queue隊列等待Finalizer線程執行finalizer方法的對象-heap
:顯示Java堆詳細信息-histo
:顯示堆中對象的統計信息-permstat
:以CLassLoader爲統計口徑顯示永久代內存狀態-F
:當-dump沒有響應時,強制生成dump快照與jmap搭配使用,用來分析jmap生成的堆轉儲快照。jhat內置了一個微型的HTTP/HTML服務器,生成dump文件的分析結果後,能夠在瀏覽器中查看。jvm
jhat [dumpfile]
Java堆棧跟蹤工具,用於生成虛擬機當前時刻的線程快照。函數
線程快照就是當前虛擬機內每一條線程正在執行的方法堆棧的集合,生成線程快照的主要目的是定位線程出現長時間停頓的緣由,如線程間死鎖、死循環、請求外部資源致使的長時間等待等都是致使線程長時間停頓的常見緣由。工具
線程出現停頓的時候經過jstack來查看各個線程的調用堆棧,就能夠知道沒有響應的線程到底在後臺作些什麼事情,或者等待着什麼資源。性能
jstack[option]vmid
-F
:當正常輸出的請求不被響應時,強制輸出線程堆棧-l
:除堆棧外,顯示關於鎖的附加信息-m
:若是調用本地方法,可顯示C/C++的堆棧java.lang.Thread
類新增了一個getAllStackTraces()
方法用於獲取虛擬機中全部線程的StackTraceElement對象。