Java中怎么監(jiān)控一個(gè)應(yīng)用的性能,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的龍山網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
標(biāo)準(zhǔn)參數(shù)(Eg.)
-help
-server/-client
-version/-showversion
-cp/-classpath
X參數(shù)(非標(biāo)準(zhǔn)化參數(shù))
-Xint: 解釋執(zhí)行
-Xcomp: 第一次使用就編譯成本地代碼
-Xmixed: 混合模式,jvm自己來(lái)決定是否編譯成本地代碼
XX參數(shù)(非標(biāo)轉(zhuǎn)化參數(shù),相對(duì)不穩(wěn)定,主要用于JVM調(diào)優(yōu)和Debug)
XX參數(shù)的分類(lèi):
-Xmx/-Xms
(實(shí)際上是XX參數(shù)) 設(shè)置JVM的最大內(nèi)存和最小內(nèi)存,-Xms等價(jià)于-XX:InitialHeapSize
,-Xmx等價(jià)于-XX:MaxHeapSize
-XX:+PrintFlagsInitial
查看JVM運(yùn)行參數(shù)的初始值
-XX:+PrintFlagsFinal
查看JVM運(yùn)行參數(shù)的最終值(=表示默認(rèn)值,:=表示被用戶(hù)或者JVM修改后的值)
-XX:+UnlockExperimentalVMOptions
解鎖實(shí)驗(yàn)參數(shù)
-XX:+UnlockDiagnosticVMOptions
解鎖診斷參數(shù)
-XX:+PrintCommandLineFlags
打印命令行參數(shù)
-XX:+HeapDumpOnOutOfMemoryError
當(dāng)發(fā)生內(nèi)存溢出了,自動(dòng)Dump Heap Error
-XX:HeapDumpPath=./
內(nèi)存溢出HeapDump的日志,./
指的是當(dāng)前運(yùn)行目錄
Boolean類(lèi)型: -XX:[+|-]<name>
,例如: -XX:+UseConcMarkSweepGC
非Boolean類(lèi)型: -XX:<name>=<value>
表示name屬性的值是value,例如:-XX:MaxGCPauseMillies=500
jps
jps默認(rèn)能夠看到所有的java進(jìn)程
-l
參數(shù)表示看到具體的Class
!??!需要補(bǔ)全所有的參數(shù)
jinfo
jinfo -flag MaxHeapSize [pid]
看到所選擇pid的MaxHeapSize的值
jinfo -flags [pid]
看到所選pid的所有參數(shù)值,包括被修改的和沒(méi)有被修改過(guò)的
?。?!需要補(bǔ)全所有參數(shù)
jstat
Loaded
類(lèi)加載的個(gè)數(shù)
Bytes
類(lèi)加載了多少個(gè)kBs
Unloaded
類(lèi)卸載的個(gè)數(shù)
Bytes
類(lèi)卸載了多少個(gè)kBs
Time
類(lèi)加載和卸載總共花費(fèi)的時(shí)間
Compiled
完成了多少個(gè)編譯的任務(wù)(把一個(gè)方法編譯成本地方法)
Failed
編譯任務(wù)失敗的次數(shù)
Invalid
編譯任務(wù)是無(wú)效的次數(shù)
Time
總的編譯時(shí)間
FailedType
上一次編譯失敗的編譯類(lèi)型
FailedMethod
上一次編譯失敗的類(lèi)名稱(chēng)或方法名稱(chēng)
S0C\S1C\S0U\S1U
S0和S1的總量和使用量
EC\EU
Eden區(qū)總量與使用量
OC\OU
Old區(qū)總量與使用量
MC\MU
Metaspace區(qū)總量和使用量
CCSC\CCSU
壓縮類(lèi)空間總量和使用量
YGC\YGCT
YoungGC的次數(shù)和時(shí)間
FGC\FGCT
FullGC的次數(shù)和時(shí)間
GCT
總的GC時(shí)間
可以查看如下信息:
所有選項(xiàng):
-class
查看類(lèi)裝載信息,用法 jstat -class [pid] [interval millseconds] [count]
代表間隔interval毫秒時(shí)間打印count次的pid的類(lèi)裝載信息:
-compiler
查看JIT編譯的信息,jstat -compiler [pid] [interval millseconds] [count]
代表間隔interval毫秒時(shí)間打印count次的pid的JIT編譯信息信息:
-gc
查看垃圾收集的信息,用法 jstat -gc [pid] [interval millseconds] [count]
代表間隔interval毫秒時(shí)間打印count次的pid的gc信息:
-gcutil
-gccause
-gcnew
-gcold
-printcompilation
?。?!需要補(bǔ)全所有參數(shù)
類(lèi)裝載信息
垃圾收集信息
JIT編譯信息
JVM的內(nèi)存結(jié)構(gòu)
堆區(qū):Young區(qū)(Servival區(qū)[S0+S1]+Eden區(qū)) + Old區(qū),S0和S1是一樣大的,在同一時(shí)間,S0和S1只會(huì)啟用一個(gè)
非堆區(qū)(Metaspace):操作系統(tǒng)的本地內(nèi)存,CCS區(qū)(啟用了短指針之后則存在)+CodeCache區(qū)(存放的是JIT的代碼信息,JNI的代碼信息也在這)
如何定位內(nèi)存溢出的問(wèn)題
構(gòu)造一個(gè)內(nèi)存溢出,例如設(shè)置下-Xmx32M -Xms32M
,構(gòu)造一個(gè)堆內(nèi)存溢出,只需要一直不停的new對(duì)象;設(shè)置-XX:MetaspaceSize=32M -XX:MaxMetaspaceSize=32M
下構(gòu)造出一個(gè)非堆內(nèi)存溢出,例如使用ASM不太的構(gòu)造Class文件。
內(nèi)存溢出的區(qū)別
C++內(nèi)存溢出主要是指丟失內(nèi)存指針,Java的內(nèi)存溢出主要是指一直占用對(duì)象不釋放
jmap
-dump:<dump-options>
options有:live
-僅僅導(dǎo)出存活的對(duì)象,format=b
-導(dǎo)出二進(jìn)制格式,file=<file>
代表導(dǎo)出的文件
可以手動(dòng)導(dǎo)出Heap日志
看完上述內(nèi)容,你們掌握J(rèn)ava中怎么監(jiān)控一個(gè)應(yīng)用的性能的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
標(biāo)題名稱(chēng):Java中怎么監(jiān)控一個(gè)應(yīng)用的性能
文章源于:http://muchs.cn/article30/jepopo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、服務(wù)器托管、虛擬主機(jī)、網(wǎng)頁(yè)設(shè)計(jì)公司、全網(wǎng)營(yíng)銷(xiāo)推廣、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)