JDK內置工具使用(jps、jstack、jmap、jstat)


一、JPS

1、jps -lvm:用於查看當前機器上已裝載的jvm

 


二、jstack

1.1:查看進程的線程數,找出進程內最耗費CPU的線程:

top -Hp 19931 。 可以看到耗費CPU的線程的pid是20097

1.2:

printf "%x\n" 20097

得到20097的十六進制值為4e81,下面會用到。    

1.3:jstack命令主要用來查看Java線程的調用堆棧的,可以用來分析線程問題(如死鎖)

1.3.1:jstack -l 19931 或者 jstack 19931 | grep 4e81: 查看線程的堆棧信息

1.3.2: jstack -l pid >文件名:生成線程快照

值得關注的線程狀態有:

死鎖:Deadlock(重點關注)
② 執行中:Runnable
等待資源:Waiting on condition(重點關注)
等待獲取監視器:Waiting on monitor entry(重點關注)
⑤ 暫停:Suspended
⑥ 對象等待中:Object.wait() 或 TIMED_WAITING
⑦ 阻塞:Blocked(重點關注)
⑧ 停止:Parked


三、jmap
jmap命令可以獲得運行中的jvm的堆的快照,從而可以離線分析堆,以檢查內存泄漏,檢查一些嚴重影響性能的大對象的創建,檢查系統中什么對象最多,各種對象所占內存的大小等等

1:jmap -heap PID:打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情況

 

2:使用   jmap -histo[:live]  pid  |  less 查看堆內存中的對象數目、大小統計直方圖,如果帶上live則只統計活對象,如:

jmap -histo:live 19931 | less

 

3:jmap -histo:live pid>a.log
可以觀察heap中所有對象的情況(heap中所有生存的對象的情況)。包括對象數量和所占空間大小。 可以將其保存到文本中去,在一段時間后,使用文本對比工具,可以對比出GC回收了哪些對象。

4:jmap -dump:format=b,file=文件名.dump  PID:生成內存dump文件

可以使用jhat查看,命令如下:

jhat  -port  9998  文件名.dump

該命令通常用來分析內存泄漏OOM,通常做法是:

使用 JVM 參數獲取 dump 文件
進入Tomcat的'bin'目錄,在'catalina.sh'文件里添加如下內容

>-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=c:\jakarta-tomcat\webapps

然后使用MAT分析工具,如jhat命令,eclipse的mat插件。



四、jstat
Jstat用於查看gc垃圾回收使用情況:
- 類的加載及卸載情況
- 查看新生代、老生代及持久代的垃圾收集情況,包括垃圾回收的次數及垃圾回收所占用的時間

命令格式如下圖:

option:我們經常使用的選項有gc、gcutil
vmid:java進程id
interval:間隔時間,單位為毫秒
count:打印次數

 

堆內存 = 年輕代 + 年老代 + 永久代

年輕代 = Eden區 + 兩個Survivor區(From和To)

1:類加載統計:

jstat -class pid

  • Loaded:加載class的數量
  • Bytes:所占用空間大小
  • Unloaded:未加載數量
  • Bytes:未加載占用空間
  • Time:時間

2:垃圾回收統計

jstat -gc 15774 1000 10


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

 3:堆內存統計

jstat -gccapacity pid

4:總結垃圾回收統計

jstat -gcutil 15774 1000 10


  • S0:幸存1區當前使用比例
  • S1:幸存2區當前使用比例
  • E:伊甸園區使用比例
  • O:老年代使用比例
  • M:元數據區使用比例
  • CCS:壓縮使用比例
  • YGC:年輕代垃圾回收次數
  • FGC:老年代垃圾回收次數
  • FGCT:老年代垃圾回收消耗時間
  • GCT:垃圾回收消耗總時間

 

轉:https://www.cnblogs.com/kongzhongqijing/articles/3621163.html


免責聲明!

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



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