java.exe javac.exe是咱們熟悉的命令,這個目錄下面還有其餘不少命令,有時候咱們程序部署在服務器上就只能藉助這些命令來定位咱們程序問題,這些命令一般都很輕巧,由於這些命令的核心功能代碼是在lib/tools.jar中實現了,看幾個經常使用的工具:java
jps服務器
功能:虛擬機進程情況工具,主要用來查詢虛擬機進程信息jvm
命令: jps [options] [hostid]函數
參數: -m 輸出main函數參數,-v輸出啓動時jvm參數,-l輸出主類全名工具
例子:輸出當前機器上java進程的id和主類名:jps -lspa
jinfo命令行
功能:java配置信息工具,查看虛擬機參數,也能夠動態修改虛擬機參數線程
命令:jinfo [option] pidcode
參數:-flag name 顯示參數,-flag [+|-] name 啓用或禁用參數,-flag name=value給指定參數設定值,-flags打印jvm命令行參數,-sysprops打印java系統屬性orm
例子:在系統運行期打印垃圾回收信息:
jinfo -flag +PrintGC 23890
jinfo -flag +PrintGCDetails 23890
jstat
功能:虛擬機統計信息監控,收集虛擬機進程運行數據
命令:jstat [option vmid [interval[s|ms] [count]]],interval 表明間隔,count表明統計次數
參數:
class | 類加載器的行爲統計 |
compiler | HotSpot即時編譯器的行爲統計 |
gc | 堆的垃圾回收器的行爲統計 |
gccapacity | Java各代區域以及對應空間的容量統計 |
gccause | 垃圾回收的摘要信息(等同於-gcutil), 以及最後的和當前的(如適用)垃圾回收事件的緣由。 |
gcnew | new generation的行爲統計 |
gcnewcapacity | new generation及其對應空間的大小統計。 |
gcold | old和permanent generation的行爲統計。 |
gcoldcapacity | old generation的大小統計。 |
gcpermcapacity | permanent generation的大小統計。 |
gcutil | 垃圾回收統計的摘要信息。 |
printcompilation | HotSpot彙編方法統計。 |
例子:查看進程id爲23812的垃圾回收摘要信息:jstat -gcutil 23812 1000
jmap
功能:內存映像工具,查看內存快照
命令:jmap [option] vmid
參數:-heap 顯示堆詳細信息,如使用哪一種回收器、參數配置、分代內存情況, -histo 統計對象信息, -dump:[live,]format=b,file=<filename>轉存爲快照
例子:查看進程id爲23812 的內存分配狀況,jmap -heap 23812
jstack
功能:堆棧跟蹤工具,主要查詢線程快照,經常使用於線程掛住、死鎖分析 ,結合top -Hp pid命令能夠找出cpu佔用最多的線程
命令:jstack [option] vmid
參數:-l 顯示鎖的附加信息
Jconsole.exe:把上面命令行信息圖形化展現出來,主要包含四個部分,堆、線程、類、cpu
Jvisualvm.exe:Jconsole的升級版,把更多命令行工具整合了進來
遠程監控
1. Jmx:
setenv.sh
-Djava.rmi.server.hostname=192.168.1.110
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8081
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false'
2.jstatd.exe 創建jstatd.all.policy文件,內容: grant codebase "file:/usr/java/jdk1.8.0_45/lib/tools.jar" { permission java.security.AllPermission; }; jstatd -J-Djava.security.policy=jstatd.all.policy