日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

JDK自带VM分析工具jps,jstat,jmap,jconsole

發(fā)布時(shí)間:2024/4/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JDK自带VM分析工具jps,jstat,jmap,jconsole 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、概述?

??? SUN 的JDK中的幾個(gè)工具,非常好用。秉承著有免費(fèi),不用商用的原則。以下簡(jiǎn)單介紹一下這幾種工具。(注:本文章下的所有工具都存在JDK5.0以上版本的工具集里,同javac一樣,不須特意安裝)? 。
??? ??
??? 我一共找到以下四個(gè)工具:重點(diǎn)看看jconsole和jmap。

Java代碼 ?
  • jps??
  • :與unix上的ps類似,用來(lái)顯示本地的java進(jìn)程,可以查看本地運(yùn)行著幾個(gè)java程序,并顯示他們的進(jìn)程號(hào)。???
  • ??
  • jstat??
  • :一個(gè)極強(qiáng)的監(jiān)視VM內(nèi)存工具。可以用來(lái)監(jiān)視VM內(nèi)存內(nèi)的各種堆和非堆的大小及其內(nèi)存使用量。???
  • ??
  • jmap??
  • :打印出某個(gè)java進(jìn)程(使用pid)內(nèi)存內(nèi)的,所有‘對(duì)象’的情況(如:產(chǎn)生那些對(duì)象,及其數(shù)量)。???
  • ??
  • jconsole??
  • :一個(gè)java?GUI監(jiān)視工具,可以以圖表化的形式顯示各種數(shù)據(jù)。并可通過(guò)遠(yuǎn)程連接監(jiān)視遠(yuǎn)程的服務(wù)器VM。??
  • ?

    二、 使用介紹:??
    ??? ??
    ??? 1、jps
    :我想很多人都是用過(guò)unix系統(tǒng)里的ps命令,這個(gè)命令主要是用來(lái)顯示當(dāng)前系統(tǒng)的進(jìn)程情況,有哪些進(jìn)程,及其 id。 jps 也是一樣,它的作用是顯示當(dāng)前系統(tǒng)的Java進(jìn)程情況,及其id號(hào)。我們可以通過(guò)它來(lái)查看我們到底啟動(dòng)了幾個(gè)java進(jìn)程(因?yàn)槊恳粋€(gè)java程序都會(huì)獨(dú)占一個(gè)java虛擬機(jī)實(shí)例),和他們的進(jìn)程號(hào)(為下面幾個(gè)程序做準(zhǔn)備),并可通過(guò)opt來(lái)查看這些進(jìn)程的詳細(xì)啟動(dòng)參數(shù)。?
    ??? 使用方法:在當(dāng)前命令行下打 jps(需要JAVA_HOME,沒(méi)有的話,到改程序的目錄下打) 。

    可惜沒(méi)有Linux下的ps好用,名稱不好用。但是在第四個(gè)工具jconsole的界面里面會(huì)有具體JAR包的名稱。
    ??? ??
    ????2、jstat:對(duì)VM內(nèi)存使用量進(jìn)行監(jiān)控。??
    ??? jstat工具特別強(qiáng)大,有眾多的可選項(xiàng),詳細(xì)查看堆內(nèi)各個(gè)部分的使用量,以及加載類的數(shù)量。使用時(shí),需加上查看進(jìn)程的進(jìn)程id,和所選參數(shù)。以下詳細(xì)介紹各個(gè)參數(shù)的意義。?
    ??? jstat -class pid:顯示加載class的數(shù)量,及所占空間等信息。??
    ??? jstat -compiler pid:顯示VM實(shí)時(shí)編譯的數(shù)量等信息。??
    ??? jstat -gc pid:可以顯示gc的信息,查看gc的次數(shù),及時(shí)間。其中最后五項(xiàng),分別是young gc的次數(shù),young gc的時(shí)間,full gc的次數(shù),full gc的時(shí)間,gc的總時(shí)間。?
    ??? jstat -gccapacity:可以顯示,VM內(nèi)存中三代(young,old,perm)對(duì)象的使用和占用大小,如:PGCMN顯示的是最小perm的內(nèi)存使用量,PGCMX顯示的是perm的內(nèi)存最大使用量,PGC是當(dāng)前新生成的perm內(nèi)存占用量,PC是但前perm內(nèi)存占用量。其他的可以根據(jù)這個(gè)類推, OC是old內(nèi)純的占用量。?
    ??? jstat -gcnew pid:new對(duì)象的信息。??
    ??? jstat -gcnewcapacity pid:new對(duì)象的信息及其占用量。??
    ??? jstat -gcold pid:old對(duì)象的信息。??
    ??? jstat -gcoldcapacity pid:old對(duì)象的信息及其占用量。??
    ??? jstat -gcpermcapacity pid: perm對(duì)象的信息及其占用量。??
    ??? jstat -gcutil pid:統(tǒng)計(jì)gc信息統(tǒng)計(jì)。??
    ??? jstat -printcompilation pid:當(dāng)前VM執(zhí)行的信息。??
    ??? 除了以上一個(gè)參數(shù)外,還可以同時(shí)加上 兩個(gè)數(shù)字,如:jstat -printcompilation 3024 250 6是每250毫秒打印一次,一共打印6次,還可以加上-h3每三行顯示一下標(biāo)題。?
    ??? ??

    查看GC時(shí),各列對(duì)應(yīng)關(guān)系:?S0C??? S1C??? S0U??? S1U????? EC?????? EU??????? OC???????? OU?????? PC???? PU??? YGC???? YGCT??? FGC??? FGCT???? GCT


    S0CCurrent survivor space 0 capacity (KB).
    ECCurrent eden space capacity (KB).
    EUEden space utilization (KB).
    OCCurrent old space capacity (KB).
    OUOld space utilization (KB).
    PCCurrent permanent space capacity (KB).
    PUPermanent space utilization (KB).
    YGCNumber of young generation GC Events.
    YGCTYoung generation garbage collection time.
    FGCNumber of full GC events.
    FGCTFull garbage collection time.
    GCTTotal garbage collection time.


    ???











    jstat -gcutil PID interval? count

    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í)間(單位秒)

    jstat 用法http://eecn.blog.sohu.com/177061930.html

    ??? 3、jmap?是一個(gè)可以輸出所有內(nèi)存中對(duì)象的工具,甚至可以將VM 中的heap,以二進(jìn)制輸出成文本。使用方法 jmap -histo pid。如果連用 SHELL jmap -histo pid>a.log可以將其保存到文本中去(windows下也可以使用),在一段時(shí)間后,使用文本對(duì)比工具,可以對(duì)比出GC回收了哪些對(duì)象。jmap -dump:format=b,file=f1 3024可以將3024進(jìn)程的內(nèi)存heap輸出出來(lái)到f1文件里。?
    ??? ??
    ??? 4、jconsole是一個(gè)用java寫(xiě)的GUI程序,用來(lái)監(jiān)控VM,并可監(jiān)控遠(yuǎn)程的VM,非常易用,而且功能非常強(qiáng)。由于是GUI程序,這里就不詳細(xì)介紹了,不會(huì)的地方可以參考SUN的官方文檔。?
    ??? 使用方法:命令行里打 jconsole,選則進(jìn)程就可以了。??
    ??? ??
    ??? 友好提示:windows查看進(jìn)程號(hào),由于任務(wù)管理器默認(rèn)的情況下是不顯示進(jìn)程id號(hào)的,所以可以通過(guò)如下方法加上。ctrl+alt+del打開(kāi)任務(wù)管理器,選擇‘進(jìn)程’選項(xiàng)卡,點(diǎn)‘查看’->''選擇列''->加上''PID'',就可以了。當(dāng)然還有其他很好的選項(xiàng)。

    ?

    三、參考資料:

    ??? article:http://elf8848.iteye.com/blog/442806


    ??? jps:http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jps.html?


    ??? jstat:http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jstat.html?


    ??? jmap:http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jmap.html?


    ??? jconsole:http://java.sun.com/j2se/1.5.0/docs/guide/management/jconsole.html ? ? ??

    總結(jié)

    以上是生活随笔為你收集整理的JDK自带VM分析工具jps,jstat,jmap,jconsole的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。