Java中怎么監(jiān)控一個(gè)應(yīng)用的性能

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è)合作伙伴!

JVM的參數(shù)類(lèi)型
  1. 標(biāo)準(zhǔn)參數(shù)(Eg.)

    1. -help

    2. -server/-client

    3. -version/-showversion

    4. -cp/-classpath

  2. X參數(shù)(非標(biāo)準(zhǔn)化參數(shù))

    1. -Xint: 解釋執(zhí)行

    2. -Xcomp: 第一次使用就編譯成本地代碼

    3. -Xmixed: 混合模式,jvm自己來(lái)決定是否編譯成本地代碼

  3. XX參數(shù)(非標(biāo)轉(zhuǎn)化參數(shù),相對(duì)不穩(wěn)定,主要用于JVM調(diào)優(yōu)和Debug)

    • XX參數(shù)的分類(lèi):

    1. -Xmx/-Xms(實(shí)際上是XX參數(shù)) 設(shè)置JVM的最大內(nèi)存和最小內(nèi)存,-Xms等價(jià)于-XX:InitialHeapSize,-Xmx等價(jià)于-XX:MaxHeapSize

    2. -XX:+PrintFlagsInitial 查看JVM運(yùn)行參數(shù)的初始值

    3. -XX:+PrintFlagsFinal 查看JVM運(yùn)行參數(shù)的最終值(=表示默認(rèn)值,:=表示被用戶(hù)或者JVM修改后的值)

    4. -XX:+UnlockExperimentalVMOptions 解鎖實(shí)驗(yàn)參數(shù)

    5. -XX:+UnlockDiagnosticVMOptions 解鎖診斷參數(shù)

    6. -XX:+PrintCommandLineFlags 打印命令行參數(shù)

    7. -XX:+HeapDumpOnOutOfMemoryError 當(dāng)發(fā)生內(nèi)存溢出了,自動(dòng)Dump Heap Error

    8. -XX:HeapDumpPath=./ 內(nèi)存溢出HeapDump的日志,./指的是當(dāng)前運(yùn)行目錄

    9. Boolean類(lèi)型: -XX:[+|-]<name>,例如: -XX:+UseConcMarkSweepGC

    10. 非Boolean類(lèi)型: -XX:<name>=<value>表示name屬性的值是value,例如:-XX:MaxGCPauseMillies=500

  4. jps

    • jps默認(rèn)能夠看到所有的java進(jìn)程

    • -l參數(shù)表示看到具體的Class

    • !??!需要補(bǔ)全所有的參數(shù)

  5. jinfo

    • jinfo -flag MaxHeapSize [pid]看到所選擇pid的MaxHeapSize的值

    • jinfo -flags [pid]看到所選pid的所有參數(shù)值,包括被修改的和沒(méi)有被修改過(guò)的

    • ?。?!需要補(bǔ)全所有參數(shù)

  6. 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):

    1. -class 查看類(lèi)裝載信息,用法 jstat -class [pid] [interval millseconds] [count] 代表間隔interval毫秒時(shí)間打印count次的pid的類(lèi)裝載信息:

    2. -compiler 查看JIT編譯的信息,jstat -compiler [pid] [interval millseconds] [count]代表間隔interval毫秒時(shí)間打印count次的pid的JIT編譯信息信息:

    3. -gc 查看垃圾收集的信息,用法 jstat -gc [pid] [interval millseconds] [count] 代表間隔interval毫秒時(shí)間打印count次的pid的gc信息:

    4. -gcutil

    5. -gccause

    6. -gcnew

    7. -gcold

    8. -printcompilation

    9. ?。?!需要補(bǔ)全所有參數(shù)

    10. 類(lèi)裝載信息

    11. 垃圾收集信息

    12. JIT編譯信息

  7. JVM的內(nèi)存結(jié)構(gòu)

    1. 堆區(qū):Young區(qū)(Servival區(qū)[S0+S1]+Eden區(qū)) + Old區(qū),S0和S1是一樣大的,在同一時(shí)間,S0和S1只會(huì)啟用一個(gè)

    2. 非堆區(qū)(Metaspace):操作系統(tǒng)的本地內(nèi)存,CCS區(qū)(啟用了短指針之后則存在)+CodeCache區(qū)(存放的是JIT的代碼信息,JNI的代碼信息也在這)

  8. 如何定位內(nèi)存溢出的問(wèn)題

    1. 構(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文件。

  9. 內(nèi)存溢出的區(qū)別

    • C++內(nèi)存溢出主要是指丟失內(nèi)存指針,Java的內(nèi)存溢出主要是指一直占用對(duì)象不釋放

  10. jmap

    • -dump:<dump-options> options有:live-僅僅導(dǎo)出存活的對(duì)象,format=b-導(dǎo)出二進(jìn)制格式,file=<file>代表導(dǎo)出的文件

    1. 可以手動(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)

網(wǎng)站優(yōu)化排名