1.JDK的命令行工具
jdk自帶監(jiān)控和故障處理工具
名稱 | 主要作用 |
---|---|
jps | JVM Process Status Tool,顯示指定系統(tǒng)內(nèi)所有HotSpot虛擬機進程 |
jstat | JVM Statistics Monitoring Tool,用于收集HostSport虛擬機各方面的運行數(shù)據(jù) |
jinfo | Configuation Info for Java,顯示虛擬機的配置信息 |
jmap | Mammory Map for java,生成虛擬機的存儲快照(heapdump文件) |
jhat | JVM Heap Dump Browser,用于分析heapdump文件舞丛,會建立一個http/HTML的服務(wù)器昂利,讓用戶通過瀏覽器查看分析結(jié)果 |
jstack | Stack Trace for Java,顯示虛擬機的線程快照 |
1.1 jps
jsp運行示例:
jps -mlv
選項 | 作用 |
---|---|
-q | 只輸出LVMID,省略主類名稱 |
-m | 輸出虛擬機啟動時傳遞給main函數(shù)的參數(shù) |
-l | 輸出主類的名稱娃殖,如果執(zhí)行進程是jar包炼吴,則輸出jar包路徑 |
-v | 輸出虛擬機進程啟動時的jvm參數(shù) |
1.2 jstat
jstat 虛擬機統(tǒng)計信息監(jiān)控工具
jstat命令格式:
jstat [option vmid [interval [s|ms] [count] ] ]
表示 選項 進程ID 間隔時間[s|ms] 查詢次數(shù)
如果運行的是遠程主機揪荣,則vmid格式如下:
[protocol:][//]lvmid[@hostname[:port]/servername]
jstat運行示例
選項 | 作用 |
---|---|
-q | 只輸出LVMID,省略主類名稱 |
-class | 監(jiān)視類裝載遵绰、卸載數(shù)量冈爹、總空間以及類裝載所耗費的時間 |
-gc | 監(jiān)視java堆狀況喜德,包括eden區(qū)嗤瞎,兩個survivor區(qū)墙歪,老年代,永久代等的容量贝奇、已用空間虹菲、GC時間等統(tǒng)計信息 |
-gccapacity | 監(jiān)視與-gc基本相同,但是輸出關(guān)注java堆的各個區(qū)域的最大掉瞳、最小空間 |
-gcutil | 監(jiān)視內(nèi)容與-gc基本相同毕源,但輸出的主要關(guān)注已使用空間占總空間的百分比 |
-gccause | 與-gcutil基本相同,但會輸出上一次GC產(chǎn)生的原因 |
-gcnew | 監(jiān)視新生代的GC狀況 |
-gcnewcapacity | 監(jiān)視與-gcnew基本相同陕习,但是輸出關(guān)注java堆的各個區(qū)域的最大霎褐、最小空間 |
-gcold | 監(jiān)視老年代的GC狀況 |
-gcnewcapacity | 監(jiān)視與-gcold基本相同,但是輸出關(guān)注java堆的各個區(qū)域的最大该镣、最小空間 |
-gcpermcapcacity | 輸出永久代的最大冻璃、最小空間 |
-compiler | 輸出JIT編譯器編譯過的方法,耗時等信息 |
-printcompilation | 輸出已經(jīng)被JIT編譯的方法 |
1.3 jinfo
jinfo java配置信息工具损合,其作用是實時查看和調(diào)整虛擬機各項參數(shù)省艳。
jinfo [option] pid
選項 | 作用 |
---|---|
-flag <name> | 打印指定name參數(shù)的值 |
-flag [+|-]<name> | 讓指定的name參數(shù)可用或者不可用 |
-flag <name>=<value> | 設(shè)置一個新參數(shù),name=value |
-flags | 打印全部JVM參數(shù) |
-sysprops | 打印JAVA系統(tǒng)參數(shù) |
無 | 打印jvm和系統(tǒng)參數(shù) |
1.4 jmap
jmap 用于生成堆轉(zhuǎn)儲快照 heapdump文件.
命令格式
jmap [option] vmid
選項說明:
選項 | 作用 |
---|---|
-dump | 生成java轉(zhuǎn)儲的堆快照塌忽,格式為 -dump:[live,]format=b,file=<filename>拍埠,其中l(wèi)ive子參數(shù)說明是否只dump出存活的對象 |
-finalizerinfo | 顯示在F-Queue中等待Finalizer線程執(zhí)行的finalize方法的對象,只在Linux/Solairs平臺下有效 |
-heap | 顯示java堆的詳細信息土居,使用那種回收器、參數(shù)配置嬉探、分代狀況等擦耀,只在Linux/Solairs平臺下有效 |
-permstat | 以classLoader為統(tǒng)計口徑顯示永久代內(nèi)存狀態(tài)。只在Linux/Solairs平臺下有效 |
-F | 當(dāng)虛擬機對-dump選項沒有響應(yīng)時涩堤,可以使用這個參數(shù)強制生成dump快照,只在Linux/Solairs平臺下有效 |
1.4 jhat
該命令主要與jmap搭配使用眷蜓,用來分析jmap轉(zhuǎn)儲的轉(zhuǎn)儲快照。其中構(gòu)建了一個微型的http/html服務(wù)器胎围。生成dump文件的分析結(jié)果后可以通過瀏覽器進行查看吁系。
通常情況下不采用jhat進行分析德召,一方面,分析工作需要耗費額外的資源和時間汽纤,既然都要在其他機器進行上岗,則不需要限定于上述工具。另外一方面蕴坪,jhat界面比較簡陋肴掷,可以用visualVM,eclipse的Memory Analizer 等更加專業(yè)的分析工具進行替換背传。
1.5 jstack
jstack java堆棧跟蹤工具,用于生成虛擬機當(dāng)前時刻的線程快照threaddump文件呆瞻。
命令格式:
jstack [ option ] |vmid
選項說明:
選項 | 作用 |
---|---|
-F | 當(dāng)正常的輸出不被響應(yīng)時,強制輸出線程堆棧 |
-l | 除堆棧外径玖,顯示關(guān)于鎖的附加信息 |
-m | 如果調(diào)用到本地方法痴脾,則顯示C/C++的堆棧 |
2.JDK的可視化工具
主要包括:jConsole、jVisualVM
2.1 jConsole
2.2 jVisualVM
插件更新:
https://visualvm.github.io/pluginscenters.html
上述頁面選擇適合的JDK版本
如
JDK 8 Update 131
https://visualvm.github.io/uc/8u131/updates.xml.gz
JDK 8 Update 40 - 121
JDK 7 Update 79 - 80
https://visualvm.github.io/archive/uc/8u40/updates.xml.gz
jdk版本
選擇
https://visualvm.github.io/archive/uc/8u40/updates.xml.gz
打開 jvisualVM -> 設(shè)置
保存即可梳星。
之后更新插件赞赖, 安裝visualGC
重啟,重新進入即可