JDK自带监控工具 jps、jinfo、jstat、jmap、jconsole
?
分類: JVM 2010-10-04 11:05 587人閱讀 評論(0) 收藏 舉報 工具jdkjava遠(yuǎn)程連接unixstring常用有五個命令行工具:
jinfo: 可以輸出并修改運行時的java 進(jìn)程的opts 。
jps: 與unix 上的ps 類似,用來顯示本地的java 進(jìn)程,可以查看本地運行著幾個java 程序,并顯示他們的進(jìn)程號。
jstat: 一個極強的監(jiān)視VM 內(nèi)存工具??梢杂脕肀O(jiān)視VM 內(nèi)存內(nèi)的各種堆和非堆的大小及其內(nèi)存使用量。
jmap: 打印出某個java 進(jìn)程(使用pid )內(nèi)存內(nèi)的,所有‘對象’的情況(如:產(chǎn)生那些對象,及其數(shù)量)。
jconsole: 一個java GUI 監(jiān)視工具,可以以圖表化的形式顯示各種數(shù)據(jù)。并可通過遠(yuǎn)程連接監(jiān)視遠(yuǎn)程的服務(wù)器VM 。
接下來是對這些工具的詳細(xì)介紹:
從最簡單的jstat 工具開始:我想很多人都是用過unix 系統(tǒng)里的ps 命令,這個命令主要是用來顯示當(dāng)前系統(tǒng)的進(jìn)程情況,有哪些進(jìn)程,及其id 。 jps 也是一樣,它的作用是顯示當(dāng)前系統(tǒng)的java 進(jìn)程情況,及其id 號。我們可以通過它來查看我們到底啟動了幾個java 進(jìn)程(因為每一個java 程序都會獨 占一個java 虛擬機實例),和他們的進(jìn)程號(為下面幾個程序做準(zhǔn)備),并可通過opt 來查看這些進(jìn)程的詳細(xì)啟動參數(shù)。
使用方法:在當(dāng)前命令行下打 jps( 需要JAVA_HOME ,沒有的話,到改程序的目錄下打)
接下來是jstat ,我之所以這次調(diào)優(yōu)是因為,目前情況下,并發(fā)用戶一多就會產(chǎn)生響應(yīng)時間長的問題。雖然很開就解決了,決定首先對VM 內(nèi)存使用量監(jiān)控。jstat 工具特別強大,有眾多的可選項,詳細(xì)查看堆內(nèi)各個部分的使用量,以及加載類的數(shù)量。使用時,需加上查看進(jìn)程的進(jìn)程id ,和所選參數(shù)。以下詳細(xì)介紹各個參數(shù)的意義。
jstat -class pid: 顯示加載class 的數(shù)量,及所占空間等信息。
jstat -compiler pid: 顯示VM 實時編譯的數(shù)量等信息。
jstat -gc pid: 可以顯示gc 的信息,查看gc 的次數(shù),及時間。其中最后五項,分別是young gc 的次數(shù),young gc 的時間,full gc 的次數(shù),full gc 的時間,gc 的總時間。
jstat -gccapacity: 可以顯示,VM 內(nèi)存中三代(young,old,perm )對象的使用和占用大小,如:PGCMN 顯示的是最小perm 的內(nèi)存使 用量,PGCMX 顯示的是perm 的內(nèi)存最大使用量,PGC 是當(dāng)前新生成的perm 內(nèi)存占用量,PC 是但前perm 內(nèi)存占用量。其他的可以根據(jù)這個類推, OC 是old 內(nèi)純的占用量。
jstat -gcnew pid:new 對象的信息。
jstat -gcnewcapacity pid:new 對象的信息及其占用量。
jstat -gcold pid:old 對象的信息。
jstat -gcoldcapacity pid:old 對象的信息及其占用量。
jstat -gcpermcapacity pid: perm 對象的信息及其占用量。
jstat -gcutil pid: 統(tǒng)計gc 信息統(tǒng)計。
jstat -gccause pid:統(tǒng)計gc信息,并顯示最后一次引發(fā)gc的事件。
jstat -printcompilation pid: 當(dāng)前VM 執(zhí)行的信息。
除了以上一個參數(shù)外,還可以同時加上 兩個數(shù)字,如:jstat -printcompilation 3024 250 6 是每250 毫秒打印一次,一共打印6 次,還可以加上-h3 每三行顯示一下標(biāo)題。
jmap 是一個可以輸出所有內(nèi)存中對象的工具,甚至可以將VM 中的heap ,以二進(jìn)制輸出成文本。使用方法 jmap -histo pid 。如果連用SHELL jmap -histo pid>a.log 可以將其保存到文本中去,在一段時間后,使用文本對比工具,可以對比出GC 回收了哪些對象。jmap -dump:format=b,file=String 3024 可以將3024 進(jìn)程的內(nèi)存heap 輸出出來到String 文件里。
jinfo: 的用處比較簡單,就是能輸出并修改運行時的java 進(jìn)程的運行參數(shù)。用法是jinfo -opt?? pid 如:查看2788 的MaxPerm 大小可以用?? jinfo -flag MaxPermSize 2788 。
jconsole 是一個用java 寫的GUI 程序,用來監(jiān)控VM ,并可監(jiān)控遠(yuǎn)程的VM ,非常易用,而且功能非常強。由于是GUI 程序,這里就不詳細(xì)介紹了,不會的地方可以參考SUN的官方文檔。
使用方法:命令行里打 jconsole ,選則進(jìn)程就可以了。
以下是這些工具的SUN 官方說明:
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
轉(zhuǎn)載于:https://www.cnblogs.com/zhengah/p/4826506.html
總結(jié)
以上是生活随笔為你收集整理的JDK自带监控工具 jps、jinfo、jstat、jmap、jconsole的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从头开始敲代码之《从BaseApplic
- 下一篇: Openfire使用上的一些技巧