jstat用于見識虛擬機各種運行狀態信息的命令行工具,它可以顯示本地或者遠程虛擬機進程中的類裝載、內存、垃圾收集、JIT編譯等運行數據,在沒有GUI圖形界面,只提供了存文本控制臺環境的服務器上,它將是運行期定位虛擬機性能問題的首選工具;
jstat命令格式:jstat option vmid interval(s|ms) count
option:代表虛擬機需要查詢的虛擬機信息,主要分為3類:類裝載,垃圾收集和運行期編譯狀況;
vmid:虛擬機進程id,如果是本地虛擬機進程,VMID與lvmid是一直的,如果是遠程虛擬機進程,那vmid格式為 protocol://lvmid[@hostname[:port]/servername];
interval:查詢間隔,隔多少秒/毫秒查詢一次;
count:查詢次數;
如果省略interval和count則表示只查詢一次;
例如:jstat -gc 16381 10 2 表示每10毫秒查詢一次進程16381的gc情況,總共查詢2次;
option:
| option | 說明 |
| -------- |:------:|
| -class | 監視類裝載、卸載數量、總空間以及類裝載所耗費的時間 |
| -gc | 監視Java堆狀況,包括Eden區、兩個servivor區、老年代、永久代等的容量、已用空間、GC時間合計等信息|
| -gccapacity | 監視內容與-gc基本相同,但輸出主要關注Java堆各個區域使用到的最大、最小空間 |
| -gcutil | 監視內容與-gc基本相同,但輸出主要關注已使用空間占總空間的百分比|
| -gccause | 與-gcutil功能一樣,但是會額外輸出導致上一次GC產生的原因|
| -gcnew | 監視新生代gc狀況 |
| -gcnewcapacity| 監視內容與-gcnew基本相同,輸出主要關注使用到的最大、最小空間 |
| -gcold | 監視老年代gc狀況 |
| -gcoldcapacity | 監視內容與-gcold基本相同,輸出主要關注使用到的最大、最小空間 |
| -gcpermcapacity | 輸出永久代使用高的最大、最小空間 |
| -compiler | 輸出JIT編譯器編譯過的方法、耗時等信息 |
| -printcompilation | 輸出已經被JIT編譯的方法 |
輸出的各個參數描述信息可參考:http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jstat.html#class_option