jvm可能存在的問題:
OutOfMemoryError:內存不足
內存泄露
線程死鎖
鎖競爭(Lock Contention)
Java消耗過多的CPU
1、jps(java virtual machine process status tool)
監控jvm進程轉檯信息
jps [options] [hostid]
-m:輸出傳入main方法的參數
-l:顯示main類或jar文件的徹底限定名稱
-v:顯示爲jvm虛擬機制定的參數
2、jstack:查看某個java進程內的線程堆棧信息
jstack [option] pid
-l long listings:輸出完整的鎖信息
-m 混合模式,即會輸出java堆棧及C/C++堆棧信息
3、jmap和jhat
jmap:jvm memory map 查看堆內存使用狀況
jhat:java heap analysis tool
jmap [options] pid
-heap:詳細退內存空間使用狀態信息
-histo[:live]查看堆內存中的對象數目、大小統計結果
4、jstat:jvm統計監測工具
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
其中<option>爲必須提供的選項,全部可用選項可以使用jstat -options列出:
-class
-compiler
-gc
-gccapacity
-gccause
-gcmetacapacity
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcutil
-printcompilation
字段意義(gc):
SOC,S1C,S0U,S1U:C表示容量,U表示已用量
EC,EU:eden區域的容量和已用量
OC,OU
PC,PU
YGC,YGT:新生代的GC次數和耗時
FGC,FGCT:FULL GC的次數和耗時
GCT:GC總耗時
java