jps
查看Java進(jìn)程
jps [option] [hostid]
hostid:默認(rèn)為本機(jī)
option(常用):
-l 輸出主類的全名娃豹,如果是Jar則輸出jar的路徑
jinfo
實(shí)時(shí)查看虛擬機(jī)的各項(xiàng)參數(shù)信息
jinfo [option] pid
option(常用):
-flag name? 打印命令行參數(shù)(name為參數(shù)名稱)。
-flag [+|-]name ?啟用或禁用指定的boolean類型的命令行標(biāo)識(shí)參數(shù)务漩。
-flag name=value? 為給定的命令行標(biāo)識(shí)參數(shù)設(shè)置指定的值即供。
jmap
jmap用于生成堆快照(heapdump)
jmap [option] pid
option(常用):
-dump ?生成對(duì)應(yīng)的dump信息奥喻,用法為-dump:[live,]format=b,file=fileName倦淀。
-histo ?顯示堆棧中的對(duì)象的統(tǒng)計(jì)信息绩衷,包含類吊输、實(shí)例數(shù)量和合計(jì)容量饶号。
-F ?當(dāng)虛擬機(jī)對(duì)-dump無響應(yīng)時(shí)可使用這個(gè)選項(xiàng)強(qiáng)制生成dump快照(線上慎用!!!)
當(dāng)然我們有很多方法可以取到對(duì)應(yīng)的dump信息:
1 如我們通過JVM啟動(dòng)時(shí)加入啟動(dòng)參數(shù) –XX:HeapDumpOnOutOfMemoryError參數(shù),可以讓JVM在出現(xiàn)內(nèi)存溢出錯(cuò)誤的時(shí)候自動(dòng)生成dump文件季蚂。
2 也可以通過-XX:HeapDumpOnCtrlBreak參數(shù)茫船,在運(yùn)行時(shí)使用ctrl+break按鍵生成dump文件。
3 當(dāng)然我們也可以使用kill -3 pid的方式去恐嚇JVM生成dump文件扭屁。
jhat
jhat是用來分析dump文件的一個(gè)微型的HTTP/HTML服務(wù)器算谈,一般和jmap連用。它能將jmap生成的dump文件生成在線的HTML文件料滥,讓我們可以通過瀏覽器進(jìn)行查閱然眼,然而實(shí)際中我們很少使用這個(gè)工具,因?yàn)橐话惴?wù)器上設(shè)置的堆葵腹、棧內(nèi)存都比較大高每,生成的dump也比較大,直接用jhat容易造成內(nèi)存溢出礁蔗,而是我們大部分會(huì)將對(duì)應(yīng)的文件拷貝下來觉义,通過其他可視化的工具進(jìn)行分析。例如:VisualVm浴井,IBM HeapAnalyzer晒骇。
jhat dump_file
執(zhí)行命令后,我們看到系統(tǒng)開始讀取這段dump信息磺浙,當(dāng)系統(tǒng)提示Server is ready的時(shí)候洪囤,用戶可以通過在瀏覽器鍵入http://ip:7000進(jìn)行查詢。
jstat
jstat主要用于監(jiān)控虛擬機(jī)的各種運(yùn)行狀態(tài)信息撕氧,如類的裝載瘤缩、內(nèi)存、垃圾回收伦泥、JIT編譯器等剥啤。
jstat [option] pid [interval] [count]
option(常用):
-class ?監(jiān)視類的裝載锦溪、卸載數(shù)量以及類的裝載總空間和耗費(fèi)時(shí)間等。
-gc ?監(jiān)視Java堆府怯,包含eden刻诊、2個(gè)survivor區(qū)、old區(qū)和永久帶區(qū)域的容量牺丙、已用空間则涯、GC時(shí)間合計(jì)等信息。
-gcutil ?監(jiān)視內(nèi)容與-gc相同冲簿,但輸出主要關(guān)注已使用空間占總空間的百分比粟判。
-gccause ?與-gcutil輸出信息相同,額外輸出導(dǎo)致上次GC產(chǎn)生的原因峦剔。
S0 — Heap上的 Survivor space 0 區(qū)已使用空間的百分比
S1 — Heap上的 Survivor space 1 區(qū)已使用空間的百分比
E ? — Heap上的 Eden space 區(qū)已使用空間的百分比
O ? — Heap上的 Old space 區(qū)已使用空間的百分比
P ? — Perm space 區(qū)已使用空間的百分比
YGC — 從應(yīng)用程序啟動(dòng)到采樣時(shí)發(fā)生 Young GC 的次數(shù)?
YGCT– 從應(yīng)用程序啟動(dòng)到采樣時(shí) Young GC 所用的時(shí)間(單位秒) ? ??
FGC — 從應(yīng)用程序啟動(dòng)到采樣時(shí)發(fā)生 Full GC 的次數(shù)
FGCT– 從應(yīng)用程序啟動(dòng)到采樣時(shí) Full GC 所用的時(shí)間(單位秒) ? ??
GCT — 從應(yīng)用程序啟動(dòng)到采樣時(shí)用于垃圾回收的總時(shí)間(單位秒)
jstack
jstack用于JVM當(dāng)前時(shí)刻的線程快照瞻凤,又稱threaddump文件姚建,它是JVM當(dāng)前每一條線程正在執(zhí)行的堆棧信息的集合抬伺。生成線程快照的主要目的是為了定位線程出現(xiàn)長時(shí)間停頓的原因捉撮,如線程死鎖、死循環(huán)野舶、請(qǐng)求外部時(shí)長過長導(dǎo)致線程停頓的原因。
jstack [option] pid
option(常用):
-F ?當(dāng)正常輸出的請(qǐng)求不響應(yīng)時(shí)強(qiáng)制輸出線程堆棧(線上慎用!!!)宰衙。
-l ?除堆棧信息外平道,顯示關(guān)于鎖的附加信息。
-m ?顯示native方法的堆棧信息供炼。
PS:為什么在線上慎用-F參數(shù)一屋。大體意思就是使用了-F參數(shù)之后,it will suspend all Java threads in the target process
https://stackoverflow.com/questions/12061226/how-does-jstack-f-affect-a-running-java-process