1、JDK的命令行工具
1.1 jps?
jps 全稱?JVM Process Status Tool,用于顯示指定系統(tǒng)內(nèi)所有的HotSpot虛擬機(jī)進(jìn)程,并顯示虛擬機(jī)執(zhí)行主類(mian()所在類)名稱
命令格式: jps [option] [hostid],其中hostid是RMI注冊(cè)表中的注冊(cè)的主機(jī)名,如果不指定hostid就默認(rèn)為當(dāng)前主機(jī)或服務(wù)器。其中option選項(xiàng):

1.2 jstat
jstat 全稱?JVM Statistics Monitoring Tool,用于監(jiān)視虛擬機(jī)各種運(yùn)行狀態(tài)信息,可以顯示本地或遠(yuǎn)程進(jìn)程中的類裝載、內(nèi)存、垃圾回收、JIT編譯等運(yùn)行數(shù)據(jù),是運(yùn)行期定位性能問題的首選工具
命令格式: jstat [option vmid [interval][s|ms] [count]],其中參數(shù)vmid表示進(jìn)程ID,參數(shù)interval和count分別表示時(shí)間間隔和統(tǒng)計(jì)次數(shù),如果兩個(gè)都省略,只查詢一次。其中option選項(xiàng):

1.3 jinfo?
jinfo 全稱 JVM Configuration Info,用于實(shí)時(shí)查看和調(diào)整虛擬機(jī)運(yùn)行參數(shù),jps -v口令只能查看到顯示指定的參數(shù),如果想要查看未被顯示指定的參數(shù)的值就要使用jinfo口令
命令格式:jinfo [option] [args] LVMID。其中option參數(shù):-flag : 輸出指定args參數(shù)的值;-flags : 不需要args參數(shù),輸出所有JVM參數(shù)的值;-sysprops : 輸出系統(tǒng)屬性,等同于System.getProperties()
1.4 jmap?
jmap 全稱 JVM Memory Map,用于生成heap dump文件,如果不使用這個(gè)命令,還可以使用-XX:+HeapDumpOnOutOfMemoryError參數(shù)來讓虛擬機(jī)出現(xiàn)OOM的時(shí)候·自動(dòng)生成dump文件。jmap不僅能生成dump文件,還可以查詢finalize執(zhí)行隊(duì)列、Java堆和永久代的詳細(xì)信息,如當(dāng)前使用率、當(dāng)前使用的是哪種收集器等
命令格式:jmap [option] LVMID,其中option選項(xiàng):

1.5 jstack
jstack 全稱 jvm stack trace,用于生成java虛擬機(jī)當(dāng)前時(shí)刻的線程快照。線程快照是當(dāng)前java虛擬機(jī)內(nèi)每一條線程正在執(zhí)行的方法堆棧的集合,生成線程快照的主要目的是定位線程出現(xiàn)長(zhǎng)時(shí)間停頓的原因,如線程間死鎖、死循環(huán)、請(qǐng)求外部資源導(dǎo)致的長(zhǎng)時(shí)間等待等。 線程出現(xiàn)停頓的時(shí)候通過jstack來查看各個(gè)線程的調(diào)用堆棧,就可以知道沒有響應(yīng)的線程到底在后臺(tái)做什么事情,或者等待什么資源。 如果java程序崩潰生成core文件,jstack工具可以用來獲得core文件的java stack和native stack的信息,從而可以輕松地知道java程序是如何崩潰和在程序何處發(fā)生問題。另外,jstack工具還可以附屬到正在運(yùn)行的java程序中,看到當(dāng)時(shí)運(yùn)行的java程序的java stack和native stack的信息, 如果現(xiàn)在運(yùn)行的java程序呈現(xiàn)hung的狀態(tài),jstack是非常有用的
命令格式:jstack [option] LVMID

參考文章:http://www.hollischuang.com/archives/110