目录
一、Arthas jvm相关指令之dashboard
二、Arthas jvm相关指令之thread
三、Arthas jvm相关指令之jvm
四、Arthas jvm相关指令之sysprop
五、Arthas jvm相关指令之sysenv
六、Arthas jvm相关指令之vmoption
七、Arthas jvm相关指令之其他指令
一、Arthas jvm相关指令之dashboard
- dashboard :展示当前系统的实时数据面板,按 ctrl+c 退出。当运行在Ali-tomcat时,会显示当前tomcat的实时信息,如HTTP请求的qps, rt, 错误数, 线程池信息等等。
参数说明:
参数名称 | 参数说明 | [i:] | 刷新实时数据的时间间隔 (ms),默认5000ms | [n:] | 刷新实时数据的次数 |
使用参考:
[arthas@14476]$ dashboard
ID NAME GROUP PRIORITY STATE %CPU DELTA_TIM TIME INTERRUPT DAEMON
-1 C1 CompilerThread3 - -1 - 0.0 0.000 0:0.953 false true
-1 C2 CompilerThread1 - -1 - 0.0 0.000 0:0.781 false true
-1 C2 CompilerThread2 - -1 - 0.0 0.000 0:0.484 false true
-1 C2 CompilerThread0 - -1 - 0.0 0.000 0:0.406 false true
1 main main 5 TIMED_WA 0.0 0.000 0:0.359 false false
23 arthas-NettyHttpTelnetBootstr system 5 RUNNABLE 0.0 0.000 0:0.296 false true
5 Attach Listener system 5 RUNNABLE 0.0 0.000 0:0.078 false true
16 arthas-NettyHttpTelnetBootstr system 5 RUNNABLE 0.0 0.000 0:0.062 false true
-1 GC task thread#0 (ParallelGC) - -1 - 0.0 0.000 0:0.062 false true
-1 VM Thread - -1 - 0.0 0.000 0:0.062 false true
-1 GC task thread#3 (ParallelGC) - -1 - 0.0 0.000 0:0.062 false true
Memory used total max usage GC
heap 39M 95M 95M 40.92% gc.ps_scavenge.count 5
ps_eden_space 7M 24M 25M 29.12% gc.ps_scavenge.time(ms) 40
ps_survivor_space 0K 4096K 4096K 0.00% gc.ps_marksweep.count 1
ps_old_gen 31M 67M 67M 47.45% gc.ps_marksweep.time(ms) 51
nonheap 28M 29M -1 97.37%
code_cache 5M 5M 240M 2.31%
metaspace 20M 21M -1 97.53%
compressed_class_space 2M 2M 1024M 0.25%
Runtime
os.name Windows 10
os.version 10.0
java.version 1.8.0_291
java.home C:\Program Files\Java\jdk1.8.0_291\jre
systemload.average -1.00
processors 12
timestamp/uptime Fri Sep 17 20:58:42 CST 2021/97s
-i:指定刷新实时数据的时间间隔
数据说明:
- ID: Java级别的线程ID,注意这个ID不能跟jstack中的nativeID一一对应;
- NAME: 线程名;
- GROUP: 线程组名;
- PRIORITY: 线程优先级, 1~10之间的数字,越大表示优先级越高;
- STATE: 线程的状态;
- CPU%: 线程的cpu使用率。比如采样间隔1000ms,某个线程的增量cpu时间为100ms,则cpu使用率=100/1000=10%;
- DELTA_TIME: 上次采样之后线程运行增量CPU时间,数据格式为秒;
- TIME: 线程运行总CPU时间,数据格式为分:秒;
- INTERRUPTED: 线程当前的中断位状态;
- DAEMON:是否是daemon线程;
二、Arthas jvm相关指令之thread
thread指令:查看当前线程信息,查看线程的堆栈
参数说明:
参数名称 | 参数说明 | id | 线程id | [n:] | 指定最忙的前N个线程并打印堆栈 | [b] | 找出当前阻塞其他线程的线程 | [i?<value>] | 指定cpu使用率统计的采样间隔,单位为毫秒,默认值为200 | [--all] | 显示所有匹配的线程 |
使用参考:
thread:当没有参数时,显示第一页线程的信息,默认按照CPU增量时间降序排列,只显示第一页数据。
[arthas@18544]$ thread
Threads Total: 32, NEW: 0, RUNNABLE: 8, BLOCKED: 0, WAITING: 4, TIMED_WAITING: 3, TERMINATED: 0, Internal threads: 17
ID NAME GROUP PRIORITY STATE %CPU DELTA_TIM TIME INTERRUPT DAEMON
2 Reference Handler system 10 WAITING 0.0 0.000 0:0.000 false true
3 Finalizer system 8 WAITING 0.0 0.000 0:0.000 false true
4 Signal Dispatcher system 9 RUNNABLE 0.0 0.000 0:0.000 false true
5 Attach Listener system 5 RUNNABLE 0.0 0.000 0:0.078 false true
13 arthas-timer system 5 WAITING 0.0 0.000 0:0.000 false true
16 arthas-NettyHttpTelnetBootstr system 5 RUNNABLE 0.0 0.000 0:0.031 false true
17 arthas-NettyWebsocketTtyBoots system 5 RUNNABLE 0.0 0.000 0:0.015 false true
18 arthas-NettyWebsocketTtyBoots system 5 RUNNABLE 0.0 0.000 0:0.000 false true
19 arthas-shell-server system 5 TIMED_WA 0.0 0.000 0:0.000 false true
20 arthas-session-manager system 5 TIMED_WA 0.0 0.000 0:0.000 false true
21 arthas-UserStat system 5 WAITING 0.0 0.000 0:0.000 false true
23 arthas-NettyHttpTelnetBootstr system 5 RUNNABLE 0.0 0.000 0:0.156 false true
24 arthas-command-execute system 5 RUNNABLE 0.0 0.000 0:0.031 false true
1 main main 5 TIMED_WA 0.0 0.000 0:0.437 false false
6 Monitor Ctrl-Break main 5 RUNNABLE 0.0 0.000 0:0.062 false true
-1 C2 CompilerThread2 - -1 - 0.0 0.000 0:0.421 false true
-1 GC task thread#8 (ParallelGC) - -1 - 0.0 0.000 0:0.015 false true
-1 GC task thread#7 (ParallelGC) - -1 - 0.0 0.000 0:0.015 false true
-1 GC task thread#6 (ParallelGC) - -1 - 0.0 0.000 0:0.015 false true
-1 VM Periodic Task Thread - -1 - 0.0 0.000 0:0.000 false true
-1 GC task thread#0 (ParallelGC) - -1 - 0.0 0.000 0:0.015 false true
-1 C2 CompilerThread0 - -1 - 0.0 0.000 0:0.468 false true
-1 Service Thread - -1 - 0.0 0.000 0:0.000 false true
-1 C2 CompilerThread1 - -1 - 0.0 0.000 0:0.546 false true
-1 GC task thread#9 (ParallelGC) - -1 - 0.0 0.000 0:0.015 false true
-1 GC task thread#1 (ParallelGC) - -1 - 0.0 0.000 0:0.015 false true
-1 C1 CompilerThread3 - -1 - 0.0 0.000 0:0.937 false true
?thread –all:显示所有匹配的线程,显示所有匹配线程信息,有时需要获取全部JVM的线程数据进行分析。?
[arthas@18544]$ thread -all
Threads Total: 32, NEW: 0, RUNNABLE: 8, BLOCKED: 0, WAITING: 4, TIMED_WAITING: 3, TERMINATED: 0, Internal threads: 17
ID NAME GROUP PRIORITY STATE %CPU DELTA_TIM TIME INTERRUPT DAEMON
2 Reference Handler system 10 WAITING 0.0 0.000 0:0.000 false true
3 Finalizer system 8 WAITING 0.0 0.000 0:0.000 false true
4 Signal Dispatcher system 9 RUNNABLE 0.0 0.000 0:0.000 false true
5 Attach Listener system 5 RUNNABLE 0.0 0.000 0:0.078 false true
13 arthas-timer system 5 WAITING 0.0 0.000 0:0.000 false true
16 arthas-NettyHttpTelnetBootstr system 5 RUNNABLE 0.0 0.000 0:0.031 false true
17 arthas-NettyWebsocketTtyBoots system 5 RUNNABLE 0.0 0.000 0:0.015 false true
18 arthas-NettyWebsocketTtyBoots system 5 RUNNABLE 0.0 0.000 0:0.000 false true
19 arthas-shell-server system 5 TIMED_WA 0.0 0.000 0:0.000 false true
20 arthas-session-manager system 5 TIMED_WA 0.0 0.000 0:0.000 false true
21 arthas-UserStat system 5 WAITING 0.0 0.000 0:0.000 false true
23 arthas-NettyHttpTelnetBootstr system 5 RUNNABLE 0.0 0.000 0:0.234 false true
24 arthas-command-execute system 5 RUNNABLE 0.0 0.000 0:0.062 false true
1 main main 5 TIMED_WA 0.0 0.000 0:0.437 false false
6 Monitor Ctrl-Break main 5 RUNNABLE 0.0 0.000 0:0.062 false true
-1 C2 CompilerThread2 - -1 - 0.0 0.000 0:0.437 false true
-1 GC task thread#8 (ParallelGC) - -1 - 0.0 0.000 0:0.015 false true
-1 GC task thread#7 (ParallelGC) - -1 - 0.0 0.000 0:0.015 false true
-1 GC task thread#6 (ParallelGC) - -1 - 0.0 0.000 0:0.015 false true
-1 VM Periodic Task Thread - -1 - 0.0 0.000 0:0.000 false true
-1 GC task thread#0 (ParallelGC) - -1 - 0.0 0.000 0:0.015 false true
-1 C2 CompilerThread0 - -1 - 0.0 0.000 0:0.468 false true
-1 Service Thread - -1 - 0.0 0.000 0:0.000 false true
-1 C2 CompilerThread1 - -1 - 0.0 0.000 0:0.546 false true
-1 GC task thread#9 (ParallelGC) - -1 - 0.0 0.000 0:0.015 false true
-1 GC task thread#1 (ParallelGC) - -1 - 0.0 0.000 0:0.015 false true
-1 C1 CompilerThread3 - -1 - 0.0 0.000 0:1.062 false true
-1 VM Thread - -1 - 0.0 0.000 0:0.046 false true
-1 GC task thread#2 (ParallelGC) - -1 - 0.0 0.000 0:0.031 false true
-1 GC task thread#3 (ParallelGC) - -1 - 0.0 0.000 0:0.031 false true
-1 GC task thread#5 (ParallelGC) - -1 - 0.0 0.000 0:0.015 false true
-1 GC task thread#4 (ParallelGC) - -1 - 0.0 0.000 0:0.015 false true
thread id:显示指定线程的运行堆栈
[arthas@18544]$ thread 2
"Reference Handler" Id=2 WAITING on java.lang.ref.Reference$Lock@1e129935
at java.lang.Object.wait(Native Method)
- waiting on java.lang.ref.Reference$Lock@1e129935
at java.lang.Object.wait(Object.java:502)
at java.lang.ref.Reference.tryHandlePending(Reference.java:191)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)
thread -b:找出当前阻塞其他线程的线程
有时候我们发现应用卡住了, 通常是由于某个线程拿住了某个锁, 并且其他线程都在等待这把锁造成的。 为了排查这类问题, arthas提供了thread -b, 一键找出那个罪魁祸首。
使用示例:
[arthas@13048]$ thread -b
"Thread-A" Id=12 BLOCKED on java.lang.Object@60533fa9 owned by "Thread-B" Id=13
at com.wsh.DeadLockTest.lambda$main$0(DeadLockTest.java:16)
- blocked on java.lang.Object@60533fa9
- locked java.lang.Object@3e26b034 <---- but blocks 1 other threads!
at com.wsh.DeadLockTest$$Lambda$1/1066516207.run(Unknown Source)
at java.lang.Thread.run(Thread.java:748)
注意, 目前只支持找出synchronized关键字阻塞住的线程, 如果是java.util.concurrent.Lock, 目前还不支持。(本文使用的Arthad版本:3.5.4)
thread -n xx:展示当前最忙(CPU占用率前N位)的前N个线程并打印堆栈
[arthas@18544]$ thread -n 3
"Reference Handler" Id=2 cpuUsage=0.0% deltaTime=0ms time=15ms WAITING on java.lang.ref.Reference$Lock@1e129935
at java.lang.Object.wait(Native Method)
- waiting on java.lang.ref.Reference$Lock@1e129935
at java.lang.Object.wait(Object.java:502)
at java.lang.ref.Reference.tryHandlePending(Reference.java:191)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)
"Finalizer" Id=3 cpuUsage=0.0% deltaTime=0ms time=15ms WAITING on java.lang.ref.ReferenceQueue$Lock@7dadc120
at java.lang.Object.wait(Native Method)
- waiting on java.lang.ref.ReferenceQueue$Lock@7dadc120
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:216)
"Signal Dispatcher" Id=4 cpuUsage=0.0% deltaTime=0ms time=0ms RUNNABLE
?字段说明:
- 没有线程ID,包含[Internal]表示为JVM内部线程,参考dashboard命令的介绍。
- cpuUsage为采样间隔时间内线程的CPU使用率,与dashboard命令的数据一致。
- deltaTime为采样间隔时间内线程的增量CPU时间,小于1ms时被取整显示为0ms。
- time?线程运行总CPU时间。
thread -i:指定采样时间间隔
- thread -i 1000?: 统计最近1000ms内的线程CPU时间。
- thread -n 3 -i 1000?: 列出1000ms内最忙的3个线程栈。
[arthas@18544]$ thread -n 3
"Reference Handler" Id=2 cpuUsage=0.0% deltaTime=0ms time=15ms WAITING on java.lang.ref.Reference$Lock@1e129935
at java.lang.Object.wait(Native Method)
[arthas@18544]$ thread -i 1000
Threads Total: 32, NEW: 0, RUNNABLE: 8, BLOCKED: 0, WAITING: 4, TIMED_WAITING: 3, TERMINATED: 0, Internal threads: 17
ID NAME GROUP PRIORITY STATE %CPU DELTA_TIM TIME INTERRUPT DAEMON
2 Reference Handler system 10 WAITING 0.0 0.000 0:0.015 false true
3 Finalizer system 8 WAITING 0.0 0.000 0:0.015 false true
4 Signal Dispatcher system 9 RUNNABLE 0.0 0.000 0:0.000 false true
5 Attach Listener system 5 RUNNABLE 0.0 0.000 0:0.078 false true
13 arthas-timer system 5 WAITING 0.0 0.000 0:0.000 false true
16 arthas-NettyHttpTelnetBootstr system 5 RUNNABLE 0.0 0.000 0:0.031 false true
17 arthas-NettyWebsocketTtyBoots system 5 RUNNABLE 0.0 0.000 0:0.015 false true
18 arthas-NettyWebsocketTtyBoots system 5 RUNNABLE 0.0 0.000 0:0.000 false true
19 arthas-shell-server system 5 TIMED_WA 0.0 0.000 0:0.000 false true
20 arthas-session-manager system 5 TIMED_WA 0.0 0.000 0:0.000 false true
21 arthas-UserStat system 5 WAITING 0.0 0.000 0:0.000 false true
23 arthas-NettyHttpTelnetBootstr system 5 RUNNABLE 0.0 0.000 0:0.375 false true
24 arthas-command-execute system 5 RUNNABLE 0.0 0.000 0:0.109 false true
1 main main 5 TIMED_WA 0.0 0.000 0:0.437 false false
6 Monitor Ctrl-Break main 5 RUNNABLE 0.0 0.000 0:0.062 false true
-1 C2 CompilerThread2 - -1 - 0.0 0.000 0:0.437 false true
-1 GC task thread#8 (ParallelGC) - -1 - 0.0 0.000 0:0.046 false true
-1 GC task thread#7 (ParallelGC) - -1 - 0.0 0.000 0:0.031 false true
-1 GC task thread#6 (ParallelGC) - -1 - 0.0 0.000 0:0.046 false true
-1 VM Periodic Task Thread - -1 - 0.0 0.000 0:0.000 false true
-1 GC task thread#0 (ParallelGC) - -1 - 0.0 0.000 0:0.015 false true
-1 C2 CompilerThread0 - -1 - 0.0 0.000 0:0.484 false true
-1 Service Thread - -1 - 0.0 0.000 0:0.000 false true
-1 C2 CompilerThread1 - -1 - 0.0 0.000 0:0.546 false true
-1 GC task thread#9 (ParallelGC) - -1 - 0.0 0.000 0:0.015 false true
-1 GC task thread#1 (ParallelGC) - -1 - 0.0 0.000 0:0.031 false true
-1 C1 CompilerThread3 - -1 - 0.0 0.000 0:1.171 false true
[arthas@18544]$ thread -n 3 -i 1000
"Reference Handler" Id=2 cpuUsage=0.0% deltaTime=0ms time=15ms WAITING on java.lang.ref.Reference$Lock@1e129935
at java.lang.Object.wait(Native Method)
- waiting on java.lang.ref.Reference$Lock@1e129935
at java.lang.Object.wait(Object.java:502)
at java.lang.ref.Reference.tryHandlePending(Reference.java:191)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)
"Finalizer" Id=3 cpuUsage=0.0% deltaTime=0ms time=15ms WAITING on java.lang.ref.ReferenceQueue$Lock@7dadc120
at java.lang.Object.wait(Native Method)
- waiting on java.lang.ref.ReferenceQueue$Lock@7dadc120
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:216)
"Signal Dispatcher" Id=4 cpuUsage=0.0% deltaTime=0ms time=0ms RUNNABLE
thread --state :查看指定状态的线程
[arthas@13048]$ thread --state BLOCKED
Threads Total: 17, NEW: 0, RUNNABLE: 9, BLOCKED: 2, WAITING: 4, TIMED_WAITING: 2, TERMINATED: 0
ID NAME GROUP PRIORITY STATE %CPU DELTA_TIM TIME INTERRUPT DAEMON
12 Thread-A main 5 BLOCKED 0.0 0.000 0:0.000 false false
13 Thread-B main 5 BLOCKED 0.0 0.000 0:0.000 false false
三、Arthas jvm相关指令之jvm
jvm :查看当前JVM的信息
四、Arthas jvm相关指令之sysprop
sysprop:查看当前JVM的系统属性(System Property)
[arthas@19956]$ sysprop
KEY VALUE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
sun.desktop windows
awt.toolkit sun.awt.windows.WToolkit
file.encoding.pkg sun.io
java.specification.version 1.8
sun.cpu.isalist amd64
sun.jnu.encoding GBK
java.class.path C:\Program Files\Java\jdk1.8.0_291\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_291\jre
\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\dnsns.jar;C
:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_29
1\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\sunec.jar;C:\
Program Files\Java\jdk1.8.0_291\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\j
dk1.8.0_291\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\javaws.jar
;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jf
xswt.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\management-agent.jar;C:\Program Files\Java\j
dk1.8.0_291\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\rt.jar;D:\workspa
ce\rocketmq-demo\target\classes;D:\mvn\repository\org\springframework\boot\spring-boot-starter-web\2.3.11.RELEASE\spring-boot-starter-web-2.3.11.REL
EASE.jar;D:\mvn\repository\org\springframework\boot\spring-boot-starter\2.3.11.RELEASE\spring-boot-starter-2.3.11.RELEASE.jar;D:\mvn\repository\org\
springframework\boot\spring-boot\2.3.11.RELEASE\spring-boot-2.3.11.RELEASE.jar;D:\mvn\repository\org\springframework\boot\spring-boot-autoconfigure\
2.3.11.RELEASE\spring-boot-autoconfigure-2.3.11.RELEASE.jar;D:\mvn\repository\org\springframework\boot\spring-boot-starter-logging\2.3.11.RELEASE\sp
ring-boot-starter-logging-2.3.11.RELEASE.jar;D:\mvn\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\mvn\repository\ch\q
os\logback\logback-core\1.2.3\logback-core-1.2.3.jar;D:\mvn\repository\org\apache\logging\log4j\log4j-to-slf4j\2.13.3\log4j-to-slf4j-2.13.3.jar;D:\m
vn\repository\org\apache\logging\log4j\log4j-api\2.13.3\log4j-api-2.13.3.jar;D:\mvn\repository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar
;D:\mvn\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\mvn\repository\org\yaml\snakeyaml\1.26\snakey
aml-1.26.jar;D:\mvn\repository\org\springframework\boot\spring-boot-starter-json\2.3.11.RELEASE\spring-boot-starter-json-2.3.11.RELEASE.jar;D:\mvn\r
epository\com\fasterxml\jackson\core\jackson-databind\2.11.4\jackson-databind-2.11.4.jar;D:\mvn\repository\com\fasterxml\jackson\core\jackson-annota
tions\2.11.4\jackson-annotations-2.11.4.jar;D:\mvn\repository\com\fasterxml\jackson\core\jackson-core\2.11.4\jackson-core-2.11.4.jar;D:\mvn\reposito
ry\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.11.4\jackson-datatype-jdk8-2.11.4.jar;D:\mvn\repository\com\fasterxml\jackson\datatype\jac
kson-datatype-jsr310\2.11.4\jackson-datatype-jsr310-2.11.4.jar;D:\mvn\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.11.4\
jackson-module-parameter-names-2.11.4.jar;D:\mvn\repository\org\springframework\boot\spring-boot-starter-tomcat\2.3.11.RELEASE\spring-boot-starter-t
omcat-2.3.11.RELEASE.jar;D:\mvn\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.46\tomcat-embed-core-9.0.46.jar;D:\mvn\repository\org\glass
fish\jakarta.el\3.0.3\jakarta.el-3.0.3.jar;D:\mvn\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.46\tomcat-embed-websocket-9.0.46.jar
;D:\mvn\repository\org\springframework\spring-web\5.2.15.RELEASE\spring-web-5.2.15.RELEASE.jar;D:\mvn\repository\org\springframework\spring-beans\5.
2.15.RELEASE\spring-beans-5.2.15.RELEASE.jar;D:\mvn\repository\org\springframework\spring-webmvc\5.2.15.RELEASE\spring-webmvc-5.2.15.RELEASE.jar;D:\
mvn\repository\org\springframework\spring-aop\5.2.15.RELEASE\spring-aop-5.2.15.RELEASE.jar;D:\mvn\repository\org\springframework\spring-context\5.2.
15.RELEASE\spring-context-5.2.15.RELEASE.jar;D:\mvn\repository\org\springframework\spring-expression\5.2.15.RELEASE\spring-expression-5.2.15.RELEASE
.jar;D:\mvn\repository\org\apache\rocketmq\rocketmq-client\4.8.0\rocketmq-client-4.8.0.jar;D:\mvn\repository\org\apache\rocketmq\rocketmq-common\4.8
.0\rocketmq-common-4.8.0.jar;D:\mvn\repository\org\apache\rocketmq\rocketmq-remoting\4.8.0\rocketmq-remoting-4.8.0.jar;D:\mvn\repository\com\alibaba
\fastjson\1.2.69\fastjson-1.2.69.jar;D:\mvn\repository\io\netty\netty-all\4.1.65.Final\netty-all-4.1.65.Final.jar;D:\mvn\repository\org\apache\rocke
tmq\rocketmq-logging\4.8.0\rocketmq-logging-4.8.0.jar;D:\mvn\repository\io\netty\netty-tcnative-boringssl-static\2.0.39.Final\netty-tcnative-borings
sl-static-2.0.39.Final.jar;D:\mvn\repository\commons-validator\commons-validator\1.6\commons-validator-1.6.jar;D:\mvn\repository\commons-beanutils\c
ommons-beanutils\1.9.2\commons-beanutils-1.9.2.jar;D:\mvn\repository\commons-digester\commons-digester\1.8.1\commons-digester-1.8.1.jar;D:\mvn\repos
itory\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;D:\mvn\repository\commons-collections\commons-collections\3.2.2\commons-collection
s-3.2.2.jar;D:\mvn\repository\org\apache\commons\commons-lang3\3.9\commons-lang3-3.9.jar;D:\mvn\repository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.
30.jar;D:\mvn\repository\org\springframework\spring-core\5.2.15.RELEASE\spring-core-5.2.15.RELEASE.jar;D:\mvn\repository\org\springframework\spring-
jcl\5.2.15.RELEASE\spring-jcl-5.2.15.RELEASE.jar;D:\mvn\repository\org\assertj\assertj-core\3.16.1\assertj-core-3.16.1.jar;D:\development\idea201803
\IntelliJ IDEA 2018.3.6\lib\idea_rt.jar
java.vm.vendor Oracle Corporation
sun.arch.data.model 64
user.variant
java.vendor.url http://java.oracle.com/
user.timezone Asia/Shanghai
visualvm.id 885504288085200
os.name Windows 10
java.vm.specification.version 1.8
user.country CN
sun.java.launcher SUN_STANDARD
sun.boot.library.path C:\Program Files\Java\jdk1.8.0_291\jre\bin
sun.java.command com.wsh.GCTest
sun.cpu.endian little
user.home C:\Users\WSH
user.language zh
java.specification.vendor Oracle Corporation
java.home C:\Program Files\Java\jdk1.8.0_291\jre
file.separator \
line.separator
java.vm.specification.vendor Oracle Corporation
java.specification.name Java Platform API Specification
java.awt.graphicsenv sun.awt.Win32GraphicsEnvironment
sun.boot.class.path C:\Program Files\Java\jdk1.8.0_291\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\rt.jar;C:\Program Files\Java\jdk1.8.0_291\jre\li
b\sunrsasign.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8
.0_291\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_291\jre\classes
user.script
sun.management.compiler HotSpot 64-Bit Tiered Compilers
java.runtime.version 1.8.0_291-b10
user.name weishihuai
path.separator ;
os.version 10.0
java.endorsed.dirs C:\Program Files\Java\jdk1.8.0_291\jre\lib\endorsed
java.runtime.name Java(TM) SE Runtime Environment
file.encoding UTF-8
sun.nio.ch.bugLevel
java.vm.name Java HotSpot(TM) 64-Bit Server VM
java.vendor.url.bug http://bugreport.sun.com/bugreport/
java.io.tmpdir C:\Users\WSH\AppData\Local\Temp\
java.version 1.8.0_291
user.dir D:\workspace\rocketmq-demo
os.arch amd64
java.vm.specification.name Java Virtual Machine Specification
java.awt.printerjob sun.awt.windows.WPrinterJob
sun.os.patch.level
java.library.path C:\Program Files\Java\jdk1.8.0_291\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\Common Files\Oracle\Java\javapa
th;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files
\Java\jdk1.8.0_291\bin;D:\development\apache-maven-3.5.4\bin;D:\development\git\Git\cmd;D:\development\xftp\;D:\development\xshell\;C:\Program Files
\MySQL\MySQL Shell 8.0\bin\;C:\Users\WSH\AppData\Local\Microsoft\WindowsApps;C:\Program Files\Bandizip\;D:\development\idea201803\IntelliJ IDEA 2018
.3.6\bin;;D:\development\Fiddler;.
java.vm.info mixed mode
java.vendor Oracle Corporation
java.vm.version 25.291-b10
java.ext.dirs C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext;C:\Windows\Sun\Java\lib\ext
sun.io.unicode.encoding UnicodeLittle
java.class.version 52.0
sysprop 参数名称:查看单个属性?
[arthas@16288]$ sysprop java.version
KEY VALUE
-----------------------------------------------------------------------------------------------------------------------
java.version 1.8.0_291
五、Arthas jvm相关指令之sysenv
sysenv:查看当前JVM的环境属性(System Environment Variables)
//查看所有环境变量
[arthas@19956]$ sysenv
KEY VALUE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
USERDOMAIN_ROAMINGPROFILE GZHQLAPTOP0839
LOCALAPPDATA C:\Users\WSH\AppData\Local
PROCESSOR_LEVEL 23
IntelliJ IDEA D:\development\idea201803\IntelliJ IDEA 2018.3.6\bin;
USERDOMAIN GZHQLAPTOP0839
FPS_BROWSER_APP_PROFILE_STRING Internet Explorer
LOGONSERVER \\GZHQLAPTOP0839
JAVA_HOME C:\Program Files\Java\jdk1.8.0_291
SESSIONNAME Console
ALLUSERSPROFILE C:\ProgramData
PROCESSOR_ARCHITECTURE AMD64
PSModulePath C:\Program Files\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules
SystemDrive C:
MAVEN_HOME D:\development\apache-maven-3.5.4
OneDrive C:\Users\Administrator\OneDrive
APPDATA C:\Users\WSH\AppData\Roaming
ROCKETMQ_HOME D:\development\rocketmq\rocketmq-all-4.8.0-bin-release
USERNAME weishihuai
ProgramFiles(x86) C:\Program Files (x86)
CommonProgramFiles C:\Program Files\Common Files
Path C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShe
ll\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Java\jdk1.8.0_291\bin;D:\development\apache-maven-3.5.4\bin;D:\development\git\Git\cmd;D:\dev
elopment\xftp\;D:\development\xshell\;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\WSH\AppData\Local\Microsoft\WindowsApps;C:\Program Files\
Bandizip\;D:\development\idea201803\IntelliJ IDEA 2018.3.6\bin;;D:\development\Fiddler
FPS_BROWSER_USER_PROFILE_STRING Default
PATHEXT .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
DriverData C:\Windows\System32\Drivers\DriverData
OS Windows_NT
COMPUTERNAME GZHQLAPTOP0839
PROCESSOR_REVISION 6001
CLASSPATH .;C:\Program Files\Java\jdk1.8.0_291\lib;C:\Program Files\Java\jdk1.8.0_291\lib\tools.jar
CommonProgramW6432 C:\Program Files\Common Files
ComSpec C:\Windows\system32\cmd.exe
ProgramData C:\ProgramData
ProgramW6432 C:\Program Files
WXDRIVE_START_ARGS --wxdrive-setting=0 --disable-gpu --disable-software-rasterizer --enable-features=NetworkServiceInProcess
HOMEPATH \Users\WSH
SystemRoot C:\Windows
TEMP C:\Users\WSH\AppData\Local\Temp
HOMEDRIVE C:
PROCESSOR_IDENTIFIER AMD64 Family 23 Model 96 Stepping 1, AuthenticAMD
USERPROFILE C:\Users\WSH
TMP C:\Users\WSH\AppData\Local\Temp
CommonProgramFiles(x86) C:\Program Files (x86)\Common Files
ProgramFiles C:\Program Files
PUBLIC C:\Users\Public
NUMBER_OF_PROCESSORS 12
windir C:\Windows
=:: ::\
sysenv 查看单个环境变量
[arthas@16288]$ sysenv JAVA_HOME
KEY VALUE
-----------------------------------------------------------------------------------------------------------------------
JAVA_HOME C:\Program Files\Java\jdk1.8.0_291
六、Arthas jvm相关指令之vmoption
vmoption:查看,更新VM诊断相关的参数
//查看所有的option
[arthas@20044]$ vmoption
KEY VALUE ORIGIN WRITEABLE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
HeapDumpBeforeFullGC false DEFAULT true
HeapDumpAfterFullGC false DEFAULT true
HeapDumpOnOutOfMemoryError true VM_CREATION true
HeapDumpPath d:/dumps/ VM_CREATION true
CMSAbortablePrecleanWaitMillis 100 DEFAULT true
CMSWaitDuration 2000 DEFAULT true
CMSTriggerInterval -1 DEFAULT true
PrintGC false DEFAULT true
PrintGCDetails false DEFAULT true
PrintGCDateStamps false DEFAULT true
PrintGCTimeStamps false DEFAULT true
PrintGCID false DEFAULT true
PrintClassHistogramBeforeFullGC false DEFAULT true
PrintClassHistogramAfterFullGC false DEFAULT true
PrintClassHistogram false DEFAULT true
MinHeapFreeRatio 0 DEFAULT true
MaxHeapFreeRatio 100 DEFAULT true
PrintConcurrentLocks false DEFAULT true
UnlockCommercialFeatures false
vmoption:查看指定的option?
[arthas@16288]$ vmoption PrintGC
KEY VALUE ORIGIN WRITEABLE
-----------------------------------------------------------------------------------------------------------------------
PrintGC false DEFAULT
七、Arthas jvm相关指令之其他指令
//列出所有 Mbean 的名称
[arthas@20044]$ mbean
java.lang:type=MemoryPool,name=Metaspace
java.lang:type=MemoryPool,name=PS Old Gen
java.lang:type=GarbageCollector,name=PS Scavenge
java.lang:type=MemoryPool,name=PS Eden Space
JMImplementation:type=MBeanServerDelegate
java.lang:type=Runtime
java.lang:type=Threading
java.lang:type=OperatingSystem
java.lang:type=MemoryPool,name=Code Cache
java.nio:type=BufferPool,name=direct
java.lang:type=Compilation
java.lang:type=MemoryManager,name=CodeCacheManager
java.lang:type=MemoryPool,name=Compressed Class Space
java.lang:type=Memory
java.nio:type=BufferPool,name=mapped
java.util.logging:type=Logging
java.lang:type=MemoryPool,name=PS Survivor Space
java.lang:type=ClassLoading
java.lang:type=MemoryManager,name=Metaspace Manager
com.sun.management:type=DiagnosticCommand
java.lang:type=GarbageCollector,name=PS MarkSweep
com.sun.management:type=HotSpotDiagnostic
- ?heapdump :dump java heap,类似jmap命令的 heap dump功能
//dump到指定文件
[arthas@19956]$ heapdump d:/test2.hprof
Dumping heap to d:/test2.hprof ...
Heap dump file created
只dump live对象:
[arthas@58205]$ heapdump --live /tmp/dump.hprof
Dumping heap to /tmp/dump.hprof...
Heap dump file created
- vmtool:从jvm里查询对象,执行forceGc
vmtool --action forceGc
|