<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    stone2083

    JVM監控工具介紹

    jstatd
    啟動jvm監控服務。它是一個基于rmi的應用,向遠程機器提供本機jvm應用程序的信息。默認端口1099。
    實例:jstatd -J-Djava.security.policy=my.policy

    my.policy文件需要自己建立,內如如下:
    grant codebase "file:$JAVA_HOME/lib/tools.jar" {
     permission java.security.AllPermission;
    };
    這是安全策略文件,因為jdk對jvm做了jaas的安全檢測,所以我們必須設置一些策略,使得jstatd被允許作網絡操作

    jps
    列出所有的jvm實例
    實例:
    jps
    列出本機所有的jvm實例

    jps 192.168.0.77
    列出遠程服務器192.168.0.77機器所有的jvm實例,采用rmi協議,默認連接端口為1099
    (前提是遠程服務器提供jstatd服務)

    輸出內容如下:
    jones@jones:~/data/ebook/java/j2se/jdk_gc$ jps
    6286 Jps
    6174  Jstat

    jconsole
    一個圖形化界面,可以觀察到java進程的gc,class,內存等信息。雖然比較直觀,但是個人還是比較傾向于使用jstat命令(在最后一部分會對jstat作詳細的介紹)。

    jinfo(linux下特有)
    觀察運行中的java程序的運行環境參數:參數包括Java System屬性和JVM命令行參數
    實例:jinfo 2083
    其中2083就是java進程id號,可以用jps得到這個id號。
    輸出內容太多了,不在這里一一列舉,大家可以自己嘗試這個命令。

    jstack(linux下特有)
    可以觀察到jvm中當前所有線程的運行情況和線程當前狀態
    jstack 2083
    輸出內容如下:


    jmap(linux下特有,也是很常用的一個命令)
    觀察運行中的jvm物理內存的占用情況。
    參數如下:
    -heap
    :打印jvm heap的情況
    -histo:打印jvm heap的直方圖。其輸出信息包括類名,對象數量,對象占用大小。
    -histo:live :同上,但是只答應存活對象的情況
    -permstat:打印permanent generation heap情況

    命令使用:
    jmap -heap 2083
    可以觀察到New Generation(Eden Space,From Space,To Space),tenured generation,Perm Generation的內存使用情況
    輸出內容:


    jmap -histo 2083 | jmap -histo:live 2083
    可以觀察heap中所有對象的情況(heap中所有生存的對象的情況)。包括對象數量和所占空間大小。
    輸出內容:

    寫個腳本,可以很快把占用heap最大的對象找出來,對付內存泄漏特別有效。

    jstat
    最后要重點介紹下這個命令。
    這是jdk命令中比較重要,也是相當實用的一個命令,可以觀察到classloader,compiler,gc相關信息
    具體參數如下:
    -class:統計class loader行為信息
    -compile:統計編譯行為信息
    -gc:統計jdk gc時heap信息
    -gccapacity:統計不同的generations(不知道怎么翻譯好,包括新生區,老年區,permanent區)相應的heap容量情況
    -gccause:統計gc的情況,(同-gcutil)和引起gc的事件
    -gcnew:統計gc時,新生代的情況
    -gcnewcapacity:統計gc時,新生代heap容量
    -gcold:統計gc時,老年區的情況
    -gcoldcapacity:統計gc時,老年區heap容量
    -gcpermcapacity:統計gc時,permanent區heap容量
    -gcutil:統計gc時,heap情況
    -printcompilation:不知道干什么的,一直沒用過。

    一般比較常用的幾個參數是:
    jstat -class 2083 1000 10 (每隔1秒監控一次,一共做10次)
    輸出內容含義如下:
    Loaded Number of classes loaded.
    Bytes Number of Kbytes loaded.
    Unloaded Number of classes unloaded.
    Bytes Number of Kbytes unloaded.
    Time Time spent performing class load and unload operations.








    jstat -gc 2083 2000 20(每隔2秒監控一次,共做10)
    輸出內容含義如下:
    S0C Current survivor space 0 capacity (KB).
    EC Current eden space capacity (KB).
    EU Eden space utilization (KB).
    OC Current old space capacity (KB).
    OU Old space utilization (KB).
    PC Current permanent space capacity (KB).
    PU Permanent space utilization (KB).
    YGC Number of young generation GC Events.
    YGCT Young generation garbage collection time.
    FGC Number of full GC events.
    FGCT Full garbage collection time.
    GCT Total garbage collection time.


















    輸出內容:


    如果能熟練運用這些命令,尤其是在linux下,那么完全可以代替jprofile等監控工具了,誰讓它收費呢。呵呵。
    用命令的好處就是速度快,并且輔助于其他命令,比如grep gawk sed等,可以組裝多種符合自己需求的工具。

    posted on 2008-02-25 22:12 stone2083 閱讀(19217) 評論(2)  編輯  收藏 所屬分類: java

    Feedback

    # re: JVM監控工具介紹 2012-06-06 12:35 wangzi6hao

    樓主好人啊.很全面..哈哈哈.  回復  更多評論   

    # re: JVM監控工具介紹 2013-07-26 16:45 方法

    好東西  回復  更多評論   

    主站蜘蛛池模板: 久久亚洲精品中文字幕无码 | 亚洲AV日韩精品久久久久久| 亚洲AV无码成人精品区狼人影院| 嘿嘿嘿视频免费网站在线观看| 久久国产亚洲高清观看| 久久青草免费91线频观看不卡| 亚洲人成网站在线观看播放| a毛片全部播放免费视频完整18| 亚洲精品无码久久一线| 青青操免费在线观看| 国产亚洲免费的视频看| 国产成人无码区免费网站| 亚洲国产精品久久久久婷婷老年| 无码免费一区二区三区免费播放| 亚洲激情视频网站| 成人人观看的免费毛片| 国产亚洲精品仙踪林在线播放| 亚洲一区日韩高清中文字幕亚洲 | 四虎成人精品永久免费AV| 亚洲综合色一区二区三区小说| 国产成人免费午夜在线观看| 亚洲国产精品成人综合久久久 | 最近高清国语中文在线观看免费| 亚洲乱理伦片在线观看中字| 免费播放春色aⅴ视频| 中文字幕无线码免费人妻| 亚洲AV福利天堂一区二区三| 亚洲天堂免费在线| 黄色毛片免费在线观看| 亚洲区小说区激情区图片区| 日韩欧毛片免费视频| 国产亚洲精品美女久久久久| 亚洲av无码不卡| 大陆一级毛片免费视频观看i| 免费观看四虎精品成人| 色播亚洲视频在线观看| 成人永久免费高清| 精品视频在线免费观看| 中文字幕精品三区无码亚洲| 亚洲一区二区三区无码中文字幕| 国产福利在线免费|