arthas之jvm相关命令

文章目录

  • [1. dashboard](#1. dashboard)
  • [2. thread线程相关](#2. thread线程相关)
  • [3. jvm](#3. jvm)
  • [4. sysprop](#4. sysprop)
  • [5. 小结](#5. 小结)
  • [6. sysenv](#6. sysenv)
  • [7. vmoption](#7. vmoption)
  • [8. getstatic](#8. getstatic)
  • [9. ognl](#9. ognl)
  • [10. 小结](#10. 小结)

1. dashboard

  • 作用:显示当前系统的实时数据面板,按q或ctrl+c退出

数据说明

  • ID: Java级别的线程ID,注意这个ID不能跟jstack中的nativeID一一对应
  • NAME: 线程名
  • GROUP: 线程组名
  • PRIORITY: 线程优先级, 1~10之间的数字,越大表示优先级越高
  • STATE: 线程的状态
  • CPU%: 线程消耗的cpu占比,采样100ms,将所有线程在这100ms内的cpu使用量求和,再算出每个线程的cpu使用占比。
  • TIME: 线程运行总时间,数据格式为分:秒
  • INTERRUPTED: 线程当前的中断位状态
  • DAEMON: 是否是daemon线程

2. thread线程相关

  • 作用:查看当前 JVM 的线程堆栈信息
  • 参数说明
参数名称 参数说明
数字 线程id
[n:] 指定最忙的前N个线程并打印堆栈
[b] 找出当前阻塞其他线程的线程
[i <value>] 指定cpu占比统计的采样间隔,单位为毫秒
  • 举例:展示当前最忙的前3个线程并打印堆栈
bash 复制代码
thread -n 3

如:Tomcat线程中前三个最忙的。可以看到第一个线程cpu占用到100%

  • 当没有参数时,显示所有线程的信息
bash 复制代码
thread
  • 显示1号线程的运行堆栈
bash 复制代码
thread 1
  • 找出当前阻塞其他线程的线程,有时候我们发现应用卡住了, 通常是由于某个线程拿住了某个锁, 并且其他线程都在等待这把锁造成的。 为了排查这类问题, arthas提供了thread -b, 一键找出那个罪魁祸首。
bash 复制代码
thread -b
  • 指定采样时间间隔,每过1000毫秒采样,显示最占时间的3个线程
bash 复制代码
thread -i 1000 -n 3
  • 查看处于等待状态的线程
bash 复制代码
thread --state WAITING

3. jvm

  • 作用:查看当前 JVM 的信息

THREAD相关

  • COUNT: JVM当前活跃的线程数
  • DAEMON-COUNT: JVM当前活跃的守护线程数
  • PEAK-COUNT: 从JVM启动开始曾经活着的最大线程数
  • STARTED-COUNT: 从JVM启动开始总共启动过的线程次数
  • DEADLOCK-COUNT: JVM当前死锁的线程数

文件描述符相关

  • MAX-FILE-DESCRIPTOR-COUNT:JVM进程最大可以打开的文件描述符数
  • OPEN-FILE-DESCRIPTOR-COUNT:JVM当前打开的文件描述符数

4. sysprop

  • 作用:查看和修改JVM的系统属性
  • 查看所有属性
bash 复制代码
sysprop
bash 复制代码
[arthas@896915]$ sysprop
 KEY             VALUE                                                          
--------------------------------------------------------------------------------
 awt.toolkit     sun.awt.X11.XToolkit                                           
 file.encoding.  sun.io                                                         
 pkg                                                                            
 java.specifica  1.8                                                            
 tion.version                                                                   
 sun.cpu.isalis                                                                 
 t                                                                              
 sun.jnu.encodi  UTF-8                                                          
 ng                                                                             
 java.class.pat  math-game.jar                                                  
 h                                                                              
 java.vm.vendor  Oracle Corporation                                             
 sun.arch.data.  64                                                             
 model                                                                          
 java.vendor.ur  http://java.oracle.com/                                        
 l                                                                              
 user.timezone   Asia/Shanghai                                                  
 os.name         Linux                                                          
 java.vm.specif  1.8                                                            
 ication.versio                                                                 
 n                                                                              
 user.country    CN                                                             
 sun.java.launc  SUN_STANDARD                                                   
 her                                                                            
 sun.boot.libra  /www/server/java/jdk1.8.0_371/jre/lib/amd64                    
 ry.path                                                                        
 sun.java.comma  math-game.jar                                                  
 nd                                                                             
 sun.cpu.endian  little                                                         
 user.home       /root                                                          
 user.language   zh                                                             
 java.specifica  Oracle Corporation                                             
 tion.vendor                                                                    
 java.home       /www/server/java/jdk1.8.0_371/jre                              
 file.separator  /                                                              
 line.separator                                                                 
 java.vm.specif  Oracle Corporation                                             
 ication.vendor                                                                 
 java.specifica  Java Platform API Specification                                
 tion.name                                                                      
 java.awt.graph  sun.awt.X11GraphicsEnvironment                                 
 icsenv                                                                         
 sun.boot.class  /www/server/java/jdk1.8.0_371/jre/lib/resources.jar:/www/serve 
 .path           r/java/jdk1.8.0_371/jre/lib/rt.jar:/www/server/java/jdk1.8.0_3 
                 71/jre/lib/jsse.jar:/www/server/java/jdk1.8.0_371/jre/lib/jce. 
                 jar:/www/server/java/jdk1.8.0_371/jre/lib/charsets.jar:/www/se 
                 rver/java/jdk1.8.0_371/jre/lib/jfr.jar:/www/server/java/jdk1.8 
                 .0_371/jre/classes                                             
 sun.management  HotSpot 64-Bit Tiered Compilers                                
 .compiler                                                                      
 java.runtime.v  1.8.0_371-b11                                                  
 ersion                                                                         
 user.name       root                                                           
 path.separator  :                                                              
 os.version      5.10.134-16.3.al8.x86_64                                       
 java.endorsed.  /www/server/java/jdk1.8.0_371/jre/lib/endorsed                 
 dirs                                                                           
 java.runtime.n  Java(TM) SE Runtime Environment                                
 ame                                                                            
 file.encoding   UTF-8                                                          
 java.vm.name    Java HotSpot(TM) 64-Bit Server VM                              
 java.vendor.ur  http://bugreport.sun.com/bugreport/                            
 l.bug                                                                          
 java.io.tmpdir  /tmp                                                           
 java.version    1.8.0_371                                                      
 user.dir        /root                                                          
 os.arch         amd64                                                          
 java.vm.specif  Java Virtual Machine Specification                             
 ication.name                                                                   
 java.awt.print  sun.print.PSPrinterJob                                         
 erjob                                                                          
 sun.os.patch.l  unknown                                                        
 evel                                                                           
 java.library.p  /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib   
 ath                                                                            
 java.vm.info    mixed mode                                                     
 java.vendor     Oracle Corporation                                             
 java.vm.versio  25.371-b11                                                     
 n                                                                              
 java.specifica  4                                                              
 tion.maintenan                                                                 
 ce.version                                                                     
 java.ext.dirs   /www/server/java/jdk1.8.0_371/jre/lib/ext:/usr/java/packages/l 
                 ib/ext                                                         
 sun.io.unicode  UnicodeLittle                                                  
 .encoding                                                                      
 java.class.ver  52.0                                                           
 sion
  • 查看单个属性,支持通过tab补全
bash 复制代码
sysprop java.version
  • 修改单个属性
bash 复制代码
sysprop user.country
user.country=US

sysprop user.country CN
Successfully changed the system property.
user.country=CN

5. 小结

jvm相关命令 说明
dashboard 显示线程,内存,GC,系统环境等信息
thread 显示线程信息
jvm 与JVM相关的信息
sysprop 显示系统属性信息,也可以修改某个属性

6. sysenv

  • 作用:查看当前JVM的环境属性(System Environment Variables)
  • 查看所有环境变量
bash 复制代码
sysenv
bash 复制代码
[arthas@896915]$ sysenv
 KEY             VALUE                                                          
--------------------------------------------------------------------------------
 BASH_FUNC_whic  () {  ( alias;                                                 
 h%%              eval ${which_declare} ) | /usr/bin/which --tty-only --read-al 
                 ias --read-functions --show-tilde --show-dot $@                
                 }                                                              
 CLASSPATH       .:/www/server/java/jdk1.8.0_371/lib/tools.jar                  
 DBUS_SESSION_B  unix:path=/run/user/0/bus                                      
 US_ADDRESS                                                                     
 GOPATH          /root/goprojects                                               
 GOROOT          /opt/go                                                        
 HISTCONTROL     ignoredups                                                     
 HISTSIZE        1000                                                           
 HOME            /root                                                          
 HOSTNAME        iZwz9a93gvuoloyla40zjyZ                                        
 JAVA_HOME       /www/server/java/jdk1.8.0_371                                  
 LANG            zh_CN.UTF-8                                                    
 LESSOPEN        ||/usr/bin/lesspipe.sh %s                                      
 LOGNAME         root                                                           
 LS_COLORS       rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40; 
                 33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43 
                 :ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tg 
                 z=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4= 
                 01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=0 
                 1;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:* 
                 .lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzs 
                 t=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=0 
                 1;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01; 
                 31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31 
                 :*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*. 
                 swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.m 
                 jpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*. 
                 pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.ti 
                 f=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mn 
                 g=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v 
                 =01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v= 
                 01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01 
                 ;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;3 
                 5:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*. 
                 xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.og 
                 x=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.m4a=01;36:*.mid= 
                 01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=0 
                 1;36:*.ra=01;36:*.wav=01;36:*.oga=01;36:*.opus=01;36:*.spx=01; 
                 36:*.xspf=01;36:                                               
 MAIL            /var/spool/mail/root                                           
 PATH            /www/server/java/jdk1.8.0_371/bin:/opt/go/bin:/usr/local/sbin: 
                 /usr/local/bin:/usr/sbin:/usr/bin:/root/bin                    
 PWD             /root                                                          
 SHELL           /bin/bash                                                      
 SHLVL           1                                                              
 SSH_CLIENT      120.231.214.28 23833 22                                        
 SSH_CONNECTION  120.231.214.28 23833 10.20.229.0 22                            
 SSH_TTY         /dev/pts/0                                                     
 S_COLORS        auto                                                           
 TERM            xterm                                                          
 USER            root                                                           
 XDG_RUNTIME_DI  /run/user/0                                                    
 R                                                                              
 XDG_SESSION_ID  178                                                            
 _               /www/server/java/jdk1.8.0_371/bin/java                         
 which_declare   declare -f
  • 查看单个环境变量
bash 复制代码
sysenv USER
bash 复制代码
[arthas@896915]$ sysenv USER
 KEY             VALUE                                                          
--------------------------------------------------------------------------------
 USER            root                                                           

7. vmoption

  • 作用:查看,更新VM诊断相关的参数

  • 查看所有的选项

bash 复制代码
vmoption
  • 查看指定的选项
bash 复制代码
vmoption PrintGCDetails
  • 更新指定的选项
bash 复制代码
vmoption PrintGCDetails true

8. getstatic

  • 作用:通过getstatic命令可以方便的查看类的静态属性
  • 语法
bash 复制代码
getstatic 类名 属性名
  • 举例:
bash 复制代码
显示demo.MathGame类中静态属性random
getstatic demo.MathGame random

9. ognl

  • 作用:执行ognl表达式,这是从3.0.5版本新增的功能
  • OGNL语法
bash 复制代码
https://commons.apache.org/dormant/commons-ognl/language-guide.html
  • 参数说明
参数名称 参数说明
express 执行的表达式
[c:] 执行表达式的 ClassLoader 的 hashcode,默认值是SystemClassLoader
[x] 结果对象的展开层次,默认值1
  • 举例
bash 复制代码
调用静态函数
ognl '@[email protected]("hello")'

获取静态类的静态字段
ognl '@demo.MathGame@random'

执行多行表达式,赋值给临时变量,返回一个List
ognl '#value1=@System@getProperty("java.home"), #value2=@System@getProperty("java.runtime.name"), {#value1, #value2}'

10. 小结

jvm相关命令 说明
sysenv 查看JVM环境变量的值
vmoption 查看JVM中选项,可以修改
getstatic 获取静态成员变量
ognl 执行一个ognl表达式
相关推荐
明天不下雨(牛客同名)5 小时前
为什么 ThreadLocalMap 的 key 是弱引用 value是强引用
java·jvm·算法
种豆走天下11 小时前
JVM基础原理
jvm
鸭梨大大大17 小时前
JVM的学习
jvm·学习
geek_super18 小时前
JVM学习--JVM运行时参数
jvm·学习
JIU_WW21 小时前
JVM面试专题
java·jvm·面试·java虚拟机·垃圾回收
君山李小狼1 天前
JVM垃圾回收
jvm
纸醉金迷金手指1 天前
GHCTF-web-wp
前端·jvm
少JSQ2 天前
深入浅出Java虚拟机(JVM)-认识JVM
jvm
xcbeyond2 天前
Kubernetes 中 Java 应用性能调优指南:从容器化特性到 JVM 底层原理的系统化优化
java·jvm·云原生·kubernetes