JMAP、jstat命令詳解

來源:互聯網
上載者:User
顯示java進程記憶體使用量的相關資訊
  • jmap pid #列印記憶體使用量的摘要資訊
  • jmap –heap pid #java heap資訊
  • jmap -histo:live pid #統計對象count ,live表示在使用
  • jmap -histo pid >mem.txt #列印比較簡單的各個有多少個對象佔了多少記憶體的資訊,一般重新導向的檔案
  • jmap -dump:format=b,file=mem.dat pid #將記憶體使用量的詳細情況輸出到mem.dat 檔案


用jhat命令可以參看 jhat -port 7000 mem.dat

然後使用:http://127.0.0.1:7000/ 查看類相關資訊 


各個className 
  BaseType Character   Type   Interpretation
  B   byte   signed byte
  C   char   Unicode character
  D   double   double-precision floating-point value
  F   float   single-precision floating-point value
  I   int   integer
  J   long   long integer
  L<classname>;   reference   an instance of class <classname>
  S   short   signed short
  Z   boolean   true or false
  [   reference  

one array dimension

 

記憶體流失一般都是有一定特徵的,任何代碼和資料都要佔用記憶體,我簡單總結記憶體流失的特徵是記憶體佔用不可控制,GC不可回收。我追蹤記憶體使用量量的曲線發現一些特徵,在估計虛擬機器即將崩潰時,使用

jmap -histo pid >mem.txt 發現相關記憶體流失的對象佔用非常大比例的記憶體空間,然後很容易猜測問題大概的位置,一下子就解決了。

  Jstat是Sun JDK中內建的監控工具,利用了JVM內建的指令對Java應用程式的資源和效能進行即時的命令列的監控,包括了對Heap size和記憶體回收狀況的監控等等。JStat是命令列方式運行,對系統資源佔用很小,在大壓力下很少影響效能。並且運行要求低,只要通過Telnet或SSH等方式遠程登入到伺服器所在機器,就可以進行監控。在與Jmap、JStack等工具結合使用時非常方便。

使用jstat命令監測如下記憶體使用量和記憶體回收統計資料: 
$ <JDK>/bin/jstat –gcutil [-h<lines>] <pid> <interval>
jstat - gcutil選項列印所運行應用程式進程ID <pid>在指定抽樣間隔<interval>下,堆使用及記憶體回收時間摘要,並且每<lines>行顯示一次頭資訊。這產生出以下範例輸出:

S0 S1 E O P YGC YGCT FGC FGCT GCT

0.00 0.00 24.48 46.60 90.24 142 0.530 104 28.739 29.269

0.00 0.00 2.38 51.08 90.24 144 0.536 106 29.280 29.816

0.00 0.00 36.52 51.08 90.24 144 0.536 106 29.280 29.816

0.00 26.62 36.12 51.12 90.24 145 0.538 107 29.552 30.090

一些術語的中文解釋:

S0C:年輕代中第一個survivor(倖存區)的容量 (位元組)

S1C:年輕代中第二個survivor(倖存區)的容量 (位元組)

S0U:年輕代中第一個survivor(倖存區)目前已使用空間 (位元組)

S1U:年輕代中第二個survivor(倖存區)目前已使用空間 (位元組)

EC:年輕代中Eden(伊甸園)的容量 (位元組)

EU:年輕代中Eden(伊甸園)目前已使用空間 (位元組)

OC:Old代的容量 (位元組)

OU:Old代目前已使用空間 (位元組)

PC:Perm(持久代)的容量 (位元組)

PU:Perm(持久代)目前已使用空間 (位元組)

YGC:從應用程式啟動到採樣時年輕代中gc次數

YGCT:從應用程式啟動到採樣時年輕代中gc所用時間(s)

FGC:從應用程式啟動到採樣時old代(全gc)gc次數

FGCT:從應用程式啟動到採樣時old代(全gc)gc所用時間(s)

GCT:從應用程式啟動到採樣時gc用的總時間(s)

NGCMN:年輕代(young)中初始化(最小)的大小 (位元組)

NGCMX:年輕代(young)的最大容量 (位元組)

NGC:年輕代(young)中當前的容量 (位元組)

OGCMN:old代中初始化(最小)的大小 (位元組)

OGCMX:old代的最大容量 (位元組)

OGC:old代當前新產生的容量 (位元組)

PGCMN:perm代中初始化(最小)的大小 (位元組)

PGCMX:perm代的最大容量 (位元組)

PGC:perm代當前新產生的容量 (位元組)

S0:年輕代中第一個survivor(倖存區)已使用的占當前容量百分比

S1:年輕代中第二個survivor(倖存區)已使用的占當前容量百分比

E:年輕代中Eden(伊甸園)已使用的占當前容量百分比

O:old代已使用的占當前容量百分比

P:perm代已使用的占當前容量百分比

S0CMX:年輕代中第一個survivor(倖存區)的最大容量 (位元組)

S1CMX :年輕代中第二個survivor(倖存區)的最大容量 (位元組)

ECMX:年輕代中Eden(伊甸園)的最大容量 (位元組)

DSS:當前需要survivor(倖存區)的容量 (位元組)(Eden區已滿)

TT: 持有次數限制

MTT : 最大持有次數限制

如果FGC 過多,有必要調整下jvm參數

[root@yy8 bin]# jstat -gcutil 3821 5000  10

  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   

  0.00   0.00 100.00  95.11  59.02    370   48.495   121  337.359  385.855

  0.00   0.00  84.36  99.99  59.03    370   48.495   122  345.393  393.888

  0.00  50.37 100.00  99.49  59.03    370   48.495   123  348.494  396.989

  0.00 100.00 100.00  56.58  59.03    371   48.496   124  348.494  396.989

  0.00   0.00  56.50  96.57  59.02    371   48.496   125  355.148  403.643

  0.00   0.00 100.00  96.57  59.02    372   48.496   126  355.148  403.643

  0.00   0.00  37.17  90.75  59.02    372   48.496   127  361.721  410.217

  0.00   0.00 100.00  90.75  59.02    373   48.496   128  361.721  410.217

5000 是5秒 ,10是10次

參考範例

JAVA_OPTS="-server -Xms4g -Xmx4g -XX:PermSize=96m -XX:MaxPermSize=256m -Xmn2560m -XX:SurvivorRatio=10 -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX

:CMSMaxAbortablePrecleanTime=5000 -XX:+CMSClassUnloadingEnabled -XX:CMSInitiatingOccupancyFraction=80

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.