基於Linux系統的Tomcat內存泄露分析、CPU內存過高排查


Java內存,CPU占用過高排查
  1.ps -ef | grep tomcat名字 -->拿到Tomcat進程的pid
  2.jstack -l 進程pid >> jstack.log -->打印並保存該進程中堆棧的使用信息日志
  2.top -Hp pid -->展示進程中所有線程的cpu占用情況
  3.printf %x 線程pid -->該線程對應的16進制
  4.vim jstack.log -->編輯查找3中打印的16進制值
  5.分析並定位到問題代碼
Java內存泄漏排查
  1.ps -ef | grep 進程 --->拿到進程的pid
  2.top -p [pid] -->查看進程資源占用情況 只要看內存
  3.jstat -gcutil [pid] 60000 -->總結垃圾回收統計 每分鍾輸出一次
     jstat -gc [pid] 60000 -->垃圾回收統計 每分鍾輸出一次
     jstat -gcnew pid --> 新生代垃圾回收統計
     jstat -gccapacity pid -->堆內存統計
     jstat -gcmetacapacity pid -->元數據空間統計
     jstat -gcnewcapacity pid -->新生代內存空間統計
  4.觀察結果 是否存在大量full gc, 如果發現是因為大量FULL GC造成程序執行緩慢的話,就要接着查看到底是程序的哪些部分占用的
  5.jmap -histo:live [pid] | head -n 1000 -->查看進程下各種類型的對象創建了多少個,以及每種對象占用內存的情況

釋、2.中參數詳解
  total 進程總數
  running 正在運行的進程數
  sleeping 睡眠的進程數
  stopped 停止的進程數
  zombie 僵屍進程數
  Cpu(s):
    us 用戶空間占用CPU百分比
    sy 內核空間占用CPU百分比
    ni 用戶進程空間內改變過優先級的進程占用CPU百分比
    id 空閑CPU百分比
    wa 等待輸入輸出的CPU時間百分比
    hi:硬件CPU中斷占用百分比
    si:軟中斷占用百分比
    st:虛擬機占用百分比
  3.中jstat -gcutil [pid] 60000參數詳解
    S0:幸存1區當前使用比例
    S1:幸存2區當前使用比例
    E:伊甸園區使用比例
    O:老年代使用比例
    M:元數據區使用比例
    CCS:壓縮使用比例
    YGC:年輕代垃圾回收次數
    FGC:老年代垃圾回收次數
    FGCT:老年代垃圾回收消耗時間
    GCT:垃圾回收消耗總時間
  jstat -gc [pid] 60000參數詳解
    S0C:第一個幸存區的大小
    S1C:第二個幸存區的大小
    S0U:第一個幸存區的使用大小
    S1U:第二個幸存區的使用大小
    EC:伊甸園區的大小
    EU:伊甸園區的使用大小
    OC:老年代大小
    OU:老年代使用大小
    MC:方法區大小
    MU:方法區使用大小
    CCSC:壓縮類空間大小
    CCSU:壓縮類空間使用大小
    YGC:年輕代垃圾回收次數
    YGCT:年輕代垃圾回收消耗時間
    FGC:老年代垃圾回收次數
    FGCT:老年代垃圾回收消耗時間
    GCT:垃圾回收消耗總時間
  jstat -gcnew pid參數詳解
    S0C:第一個幸存區大小

    S1C:第二個幸存區的大小

    S0U:第一個幸存區的使用大小

    S1U:第二個幸存區的使用大小

    TT:對象在新生代存活的次數

    MTT:對象在新生代存活的最大次數

    DSS:期望的幸存區大小

    EC:伊甸園區的大小

    EU:伊甸園區的使用大小

    YGC:年輕代垃圾回收次數

    YGCT:年輕代垃圾回收消耗時間


  jstat -gcmetacapacity pid參數詳解
MCMN:最小元數據容量

    MCMX:最大元數據容量

    MC:當前元數據空間大小

    CCSMN:最小壓縮類空間大小

    CCSMX:最大壓縮類空間大小

    CCSC:當前壓縮類空間大小

    YGC:年輕代垃圾回收次數

    FGC:老年代垃圾回收次數

    FGCT:老年代垃圾回收消耗時間

    GCT:垃圾回收消耗總時間


  jstat -gcnewcapacity pid參數詳解
    NGCMN:新生代最小容量

    NGCMX:新生代最大容量

    NGC:當前新生代容量

    S0CMX:最大幸存1區大小

    S0C:當前幸存1區大小

    S1CMX:最大幸存2區大小

    S1C:當前幸存2區大小

    ECMX:最大伊甸園區大小

    EC:當前伊甸園區大小

    YGC:年輕代垃圾回收次數

    FGC:老年代回收次數


  jstat -gcoldcapacity pid
    OGCMN:老年代最小容量
    OGCMX:老年代最大容量
    OGC:當前老年代大小
    OC:老年代大小
    YGC:年輕代垃圾回收次數
    FGC:老年代垃圾回收次數
    FGCT:老年代垃圾回收消耗時間
    GCT:垃圾回收消耗總時間

 

    http://www.fc417.top


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM