java虚拟机内存监控_java虚拟机内存监控工具jps,jinfo,Jstack,jstat,jmap,jhat使用...
將會(huì)打印出很多jvm運(yùn)行時(shí)參數(shù)信息,由于比較長這里不再打印出來,可以自己試試,內(nèi)容一目了然
Jstack(Stack Trace for Java):JVM堆棧跟蹤工具
jstack用于打印出給定的java進(jìn)程ID或core file或遠(yuǎn)程調(diào)試服務(wù)的Java堆棧信息,如果是在64位機(jī)器上,需要指定選項(xiàng)"-J-d64“
命令格式:jstack [ option ] pid
常用參數(shù)說明:
-F 當(dāng)’jstack [-l] pid’沒有相應(yīng)的時(shí)候強(qiáng)制打印棧信息
-l ?長列表. 打印關(guān)于鎖的附加信息,例如屬于java.util.concurrent的ownable synchronizers列表.
-m 打印java和native c/c++框架的所有棧信息.
-h | -help打印幫助信息
例如:
Cmd命令行代碼 ?
C:\Users\Administrator>jstack?1796
2013-05-22?11:42:38
Full?thread?dump?Java?HotSpot(TM)?Client?VM?(20.6-b01?mixed?mode):
"Worker-30"?prio=6?tid=0x06514c00?nid=0x1018?in?Object.wait()?[0x056af000]
java.lang.Thread.State:?TIMED_WAITING?(on?object?monitor)
at?java.lang.Object.wait(Native?Method)
at?org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
-?locked?<0x1ad84a90>?(a?org.eclipse.core.internal.jobs.WorkerPool)
at?org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
at?org.eclipse.core.internal.jobs.Worker.run(Worker.java:50)
......
......
......
......
jstat(JVM statistics Monitoriing Tool):JVM統(tǒng)計(jì)信息監(jiān)視工具
對(duì)Java應(yīng)用程序的資源和性能進(jìn)行實(shí)時(shí)的命令行的監(jiān)控,包括了對(duì)Heap?size和垃圾回收狀況的監(jiān)控
命令格式:jstat?[?option? pid [interval [ s | ms ] [count] ] ]
常用參數(shù)說明:
-gcutil? 輸出已使用空間占總空間的百分比
-gccapacity 輸出堆中各個(gè)區(qū)域使用到的最大和最小空間
例如:每隔1秒監(jiān)控jvm內(nèi)存一次,共監(jiān)控5次
Cmd命令行代碼 ?
C:\Users\Administrator>jstat?-gccapacity??1796??1s??5
NGCMN????NGCMX?????NGC?????S0C???S1C???????EC??????OGCMN??????OGCMX???????OGC?????????OC??????PGCMN????PGCMX?????PGC???????PC?????YGC????FGC
13632.0?174720.0??40896.0?4032.0?4032.0??32832.0????27328.0???349568.0????81684.0????81684.0??12288.0?262144.0??80640.0??80640.0?????42????96
13632.0?174720.0??40896.0?4032.0?4032.0??32832.0????27328.0???349568.0????81684.0????81684.0??12288.0?262144.0??80640.0??80640.0?????42????96
13632.0?174720.0??40896.0?4032.0?4032.0??32832.0????27328.0???349568.0????81684.0????81684.0??12288.0?262144.0??80640.0??80640.0?????42????96
13632.0?174720.0??40896.0?4032.0?4032.0??32832.0????27328.0???349568.0????81684.0????81684.0??12288.0?262144.0??80640.0??80640.0?????42????96
13632.0?174720.0??40896.0?4032.0?4032.0??32832.0????27328.0???349568.0????81684.0????81684.0??12288.0?262144.0??80640.0??80640.0?????42????97
Cmd命令行代碼 ?
C:\Users\Administrator>jstat?-gcutil??1796??1s??5
S0?????S1?????E??????O??????P?????YGC?????YGCT????FGC????FGCT?????GCT
0.00???0.00???0.52??53.35??99.77?????42????0.513????99???38.119???38.632
0.00???0.00???0.52??53.35??99.77?????42????0.513????99???38.119???38.632
0.00???0.00???0.52??53.35??99.77?????42????0.513????99???38.119???38.632
0.00???0.00???0.52??53.35??99.77?????42????0.513????99???38.119???38.632
0.00???0.00???0.52??53.35??99.77?????42????0.513????99???38.119???38.632
一些術(shù)語的中文解釋:
S0C:年輕代中第一個(gè)survivor(幸存區(qū))的容量 (字節(jié))
S1C:年輕代中第二個(gè)survivor(幸存區(qū))的容量 (字節(jié))
S0U:年輕代中第一個(gè)survivor(幸存區(qū))目前已使用空間 (字節(jié))
S1U:年輕代中第二個(gè)survivor(幸存區(qū))目前已使用空間 (字節(jié))
EC:年輕代中Eden(伊甸園)的容量 (字節(jié))
EU:年輕代中Eden(伊甸園)目前已使用空間 (字節(jié))
OC:Old代的容量 (字節(jié))
OU:Old代目前已使用空間 (字節(jié))
PC:Perm(持久代)的容量 (字節(jié))
PU:Perm(持久代)目前已使用空間 (字節(jié))
YGC:從應(yīng)用程序啟動(dòng)到采樣時(shí)年輕代中g(shù)c次數(shù)
YGCT:從應(yīng)用程序啟動(dòng)到采樣時(shí)年輕代中g(shù)c所用時(shí)間(s)
FGC:從應(yīng)用程序啟動(dòng)到采樣時(shí)old代(全gc)gc次數(shù)
FGCT:從應(yīng)用程序啟動(dòng)到采樣時(shí)old代(全gc)gc所用時(shí)間(s)
GCT:從應(yīng)用程序啟動(dòng)到采樣時(shí)gc用的總時(shí)間(s)
NGCMN:年輕代(young)中初始化(最小)的大小 (字節(jié))
NGCMX:年輕代(young)的最大容量 (字節(jié))
NGC:年輕代(young)中當(dāng)前的容量 (字節(jié))
OGCMN:old代中初始化(最小)的大小 (字節(jié))
OGCMX:old代的最大容量 (字節(jié))
OGC:old代當(dāng)前新生成的容量 (字節(jié))
PGCMN:perm代中初始化(最小)的大小 (字節(jié))
PGCMX:perm代的最大容量 (字節(jié))
PGC:perm代當(dāng)前新生成的容量 (字節(jié))
S0:年輕代中第一個(gè)survivor(幸存區(qū))已使用的占當(dāng)前容量百分比
S1:年輕代中第二個(gè)survivor(幸存區(qū))已使用的占當(dāng)前容量百分比
E:年輕代中Eden(伊甸園)已使用的占當(dāng)前容量百分比
O:old代已使用的占當(dāng)前容量百分比
P:perm代已使用的占當(dāng)前容量百分比
S0CMX:年輕代中第一個(gè)survivor(幸存區(qū))的最大容量 (字節(jié))
S1CMX :年輕代中第二個(gè)survivor(幸存區(qū))的最大容量 (字節(jié))
ECMX:年輕代中Eden(伊甸園)的最大容量 (字節(jié))
DSS:當(dāng)前需要survivor(幸存區(qū))的容量 (字節(jié))(Eden區(qū)已滿)
TT: 持有次數(shù)限制
MTT : 最大持有次數(shù)限制
jmap( Memory Map for Java):JVM內(nèi)存映像工具
打印出某個(gè)java進(jìn)程(使用pid)內(nèi)存內(nèi)的所有‘對(duì)象’的情況(如:產(chǎn)生那些對(duì)象,及其數(shù)量)
命令格式:jmap [ option ] pid
常用參數(shù)說明:
-dump:[live,]format=b,file=?使用二進(jìn)制形式輸出jvm的heap內(nèi)容到文件中,?live子選項(xiàng)是可選的,假如指定live選項(xiàng),那么只輸出活的對(duì)象到文件.
-histo[:live]?打印每個(gè)class的實(shí)例數(shù)目,內(nèi)存占用,類全名信息.?VM的內(nèi)部類名字開頭會(huì)加上前綴”*”.?如果live子參數(shù)加上后,只統(tǒng)計(jì)活的對(duì)象數(shù)量.
-F?強(qiáng)迫.在pid沒有相應(yīng)的時(shí)候使用-dump或者-histo參數(shù).?在這個(gè)模式下,live子參數(shù)無效.
例如:以二進(jìn)制形式輸入當(dāng)前堆內(nèi)存映像到文件data.hprof中
Cmd命令行代碼 ?
jmap?-dump:live,format=b,file=data.hprof?1796
生成的文件可以使用jhat工具進(jìn)行分析,在OOM(內(nèi)存溢出)時(shí),分析大對(duì)象,非常有用
通過使用如下參數(shù)啟動(dòng)JVM,也可以獲取到dump文件:
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=./java_pid.hprof
在jvm發(fā)生內(nèi)存溢出時(shí)生成內(nèi)存映像文件
jhat(JVM Heap Analysis Tool):JVM堆轉(zhuǎn)儲(chǔ)快照分析工具
用于對(duì)JAVA?heap進(jìn)行離線分析的工具,他可以對(duì)不同虛擬機(jī)中導(dǎo)出的heap信息文件進(jìn)行分析,如LINUX上導(dǎo)出的文件可以拿到WINDOWS上進(jìn)行分析,可以查找諸如內(nèi)存方面的問題。
命令格式:jhat dumpfile(jmap生成的文件)
例如:分析jmap導(dǎo)出的內(nèi)存映像
Cmd命令行代碼 ?
jhat?data.hprof
MAT(Memory Analyzer Tool):一個(gè)基于Eclipse的內(nèi)存分析工具
這是eclipse的一個(gè)插件,安裝后可以打開xxx.hprof文件,進(jìn)行分析,比jhat更方便使用,有些時(shí)候由于線上xxx.hprof文件過大,直接使用jhat進(jìn)行初步分析了,可以的話拷貝到本地分析效果更佳。
圖形化監(jiān)控工具:
在JDK安裝目錄bin下面有兩個(gè)可視化監(jiān)控工具
1. JConsole(Java Monitoring and Management Console) 基于JMX的可視化管理工具。
2. VisualVM(All-in-one Java Troubleshooting Tool)隨JDK發(fā)布的最強(qiáng)大的運(yùn)行監(jiān)視和故障處理程序。
推薦使用VisualVM,他有很多插件,可以更方便的監(jiān)控運(yùn)行時(shí)JVM
總結(jié)
以上是生活随笔為你收集整理的java虚拟机内存监控_java虚拟机内存监控工具jps,jinfo,Jstack,jstat,jmap,jhat使用...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 拉登为什么要袭击美国?
- 下一篇: java is-a_java中 is -