JVM內存分析常用工具

在日常的java開發中,總會出現內存溢出或者CPU過高的情況,這個時候就需要我們使用一些工具來分析具體的問題,下面簡單羅列一下經常使用到的一些.

1.jmap

使用top命令查詢pid

jmap命令可以幫助我們分析jvm的堆棧信息

jmap -heap pid

對上面的參數做簡單的解釋:

Heap Configuration:  ##堆配置情況,也就是JVM參數配置的結果[平常說的tomcat配置JVM參數,就是在配置這些]

   MinHeapFreeRatio = 0 ##最小堆使用比例

   MaxHeapFreeRatio = 100 ##最大堆可用比例

   MaxHeapSize      = 2147483648 (2048.0MB) ##最大堆空間大小

   NewSize          = 715653120  (682.5MB) ##新生代分配大小

   MaxNewSize       = 715653120  (682.5MB) ##最大可新生代分配大小

   OldSize          = 5439488 (5.1875MB) ##老年代大小

   NewRatio         = 2  ##新生代比例

   SurvivorRatio    = 8 ##新生代與suvivor的比例

   PermSize         = 134217728 (128.0MB) ##perm區 永久代大小

   MaxPermSize      = 134217728 (128.0MB) ##最大可分配perm區 也就是永久代大小

 

Heap Usage: ##堆使用情況【堆內存實際的使用情況】

New Generation (Eden + 1 Survivor Space):  ##新生代(伊甸區Eden區 + 倖存區survior(1+2)空間)

   capacity = 241631232 (230.4375MB)  ##伊甸區容量

   used     = 77776272 (74.17323303222656MB) ##已經使用大小

   free     = 163854960 (156.26426696777344MB) ##剩餘容量

   32.188004570534986% used ##使用比例

Eden Space:  ##伊甸區

   capacity = 214827008 (204.875MB) ##伊甸區容量

   used     = 74442288 (70.99369812011719MB) ##伊甸區使用

   free     = 140384720 (133.8813018798828MB) ##伊甸區當前剩餘容量

   34.65220164496263% used ##伊甸區使用情況

From Space: ##survior1區

   capacity = 26804224 (25.5625MB) ##survior1區容量

   used     = 3333984 (3.179534912109375MB) ##surviror1區已使用情況

   free     = 23470240 (22.382965087890625MB) ##surviror1區剩餘容量

   12.43827838477995% used ##survior1區使用比例

To Space: ##survior2 區

   capacity = 26804224 (25.5625MB) ##survior2區容量

   used     = 0 (0.0MB) ##survior2區已使用情況

   free     = 26804224 (25.5625MB) ##survior2區剩餘容量

   0.0% used ## survior2區使用比例

PS Old  Generation: ##老年代使用情況

   capacity = 1879048192 (1792.0MB) ##老年代容量

   used     = 30847928 (29.41887664794922MB) ##老年代已使用容量

   free     = 1848200264 (1762.5811233520508MB) ##老年代剩餘容量

   1.6416783843721663% used ##老年代使用比例

Perm Generation: ##永久代使用情況

   capacity = 134217728 (128.0MB) ##perm區容量

   used     = 47303016 (45.111671447753906MB) ##perm區已使用容量

   free     = 86914712 (82.8883285522461MB) ##perm區剩餘容量

   35.24349331855774% used ##perm區使用比例

 

2. jstat

     1.垃圾回收統計

      jstat -gc pid

S0C:第一個倖存區的大小
S1C:第二個倖存區的大小
S0U:第一個倖存區的使用大小
S1U:第二個倖存區的使用大小
EC:伊甸園區的大小
EU:伊甸園區的使用大小
OC:老年代大小
OU:老年代使用大小
MC:方法區大小
MU:方法區使用大小
CCSC:壓縮類空間大小
CCSU:壓縮類空間使用大小
YGC:年輕代垃圾回收次數
YGCT:年輕代垃圾回收消耗時間
FGC:老年代垃圾回收次數
FGCT:老年代垃圾回收消耗時間
GCT:垃圾回收消耗總時間

    2.堆內存統計

        jstat -gccapacity pid

    3.新生代內存統計

        jstat -gcnewcapacity pid

    其他的OPTIONS可以參考下面的備註

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章