JVM监控及诊断工具GUI篇之Arthas(二):jvm相关指令
目录
一、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@1e129935at java.lang.Object.wait(Native Method)- waiting on java.lang.ref.Reference$Lock@1e129935at 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=13at 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@1e129935at java.lang.Object.wait(Native Method)- waiting on java.lang.ref.Reference$Lock@1e129935at 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@7dadc120at java.lang.Object.wait(Native Method)- waiting on java.lang.ref.ReferenceQueue$Lock@7dadc120at 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@1e129935at 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@1e129935at java.lang.Object.wait(Native Method)- waiting on java.lang.ref.Reference$Lock@1e129935at 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@7dadc120at java.lang.Object.wait(Native Method)- waiting on java.lang.ref.ReferenceQueue$Lock@7dadc120at 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]$ syspropKEY VALUE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------sun.desktop windowsawt.toolkit sun.awt.windows.WToolkitfile.encoding.pkg sun.iojava.specification.version 1.8sun.cpu.isalist amd64sun.jnu.encoding GBKjava.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_291\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\jdk1.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\jfxswt.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\jdk1.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:\workspace\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.RELEASE.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\spring-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\qos\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:\mvn\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\snakeyaml-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\repository\com\fasterxml\jackson\core\jackson-databind\2.11.4\jackson-databind-2.11.4.jar;D:\mvn\repository\com\fasterxml\jackson\core\jackson-annotations\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\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.11.4\jackson-datatype-jdk8-2.11.4.jar;D:\mvn\repository\com\fasterxml\jackson\datatype\jackson-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-tomcat-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\glassfish\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\rocketmq\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-boringssl-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\commons-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\repository\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;D:\mvn\repository\commons-collections\commons-collections\3.2.2\commons-collections-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.jarjava.vm.vendor Oracle Corporationsun.arch.data.model 64user.variantjava.vendor.url http://java.oracle.com/user.timezone Asia/Shanghaivisualvm.id 885504288085200os.name Windows 10java.vm.specification.version 1.8user.country CNsun.java.launcher SUN_STANDARDsun.boot.library.path C:\Program Files\Java\jdk1.8.0_291\jre\binsun.java.command com.wsh.GCTestsun.cpu.endian littleuser.home C:\Users\WSHuser.language zhjava.specification.vendor Oracle Corporationjava.home C:\Program Files\Java\jdk1.8.0_291\jrefile.separator \line.separatorjava.vm.specification.vendor Oracle Corporationjava.specification.name Java Platform API Specificationjava.awt.graphicsenv sun.awt.Win32GraphicsEnvironmentsun.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\lib\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\classesuser.scriptsun.management.compiler HotSpot 64-Bit Tiered Compilersjava.runtime.version 1.8.0_291-b10user.name weishihuaipath.separator ;os.version 10.0java.endorsed.dirs C:\Program Files\Java\jdk1.8.0_291\jre\lib\endorsedjava.runtime.name Java(TM) SE Runtime Environmentfile.encoding UTF-8sun.nio.ch.bugLeveljava.vm.name Java HotSpot(TM) 64-Bit Server VMjava.vendor.url.bug http://bugreport.sun.com/bugreport/java.io.tmpdir C:\Users\WSH\AppData\Local\Temp\java.version 1.8.0_291user.dir D:\workspace\rocketmq-demoos.arch amd64java.vm.specification.name Java Virtual Machine Specificationjava.awt.printerjob sun.awt.windows.WPrinterJobsun.os.patch.leveljava.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\javapath;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 modejava.vendor Oracle Corporationjava.vm.version 25.291-b10java.ext.dirs C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext;C:\Windows\Sun\Java\lib\extsun.io.unicode.encoding UnicodeLittlejava.class.version 52.0
sysprop 参数名称:查看单个属性
[arthas@16288]$ sysprop java.versionKEY VALUE
-----------------------------------------------------------------------------------------------------------------------java.version 1.8.0_291
五、Arthas jvm相关指令之sysenv
sysenv:查看当前JVM的环境属性(System Environment Variables)
//查看所有环境变量
[arthas@19956]$ sysenvKEY VALUE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------USERDOMAIN_ROAMINGPROFILE GZHQLAPTOP0839LOCALAPPDATA C:\Users\WSH\AppData\LocalPROCESSOR_LEVEL 23IntelliJ IDEA D:\development\idea201803\IntelliJ IDEA 2018.3.6\bin;USERDOMAIN GZHQLAPTOP0839FPS_BROWSER_APP_PROFILE_STRING Internet ExplorerLOGONSERVER \\GZHQLAPTOP0839JAVA_HOME C:\Program Files\Java\jdk1.8.0_291SESSIONNAME ConsoleALLUSERSPROFILE C:\ProgramDataPROCESSOR_ARCHITECTURE AMD64PSModulePath C:\Program Files\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\ModulesSystemDrive C:MAVEN_HOME D:\development\apache-maven-3.5.4OneDrive C:\Users\Administrator\OneDriveAPPDATA C:\Users\WSH\AppData\RoamingROCKETMQ_HOME D:\development\rocketmq\rocketmq-all-4.8.0-bin-releaseUSERNAME weishihuaiProgramFiles(x86) C:\Program Files (x86)CommonProgramFiles C:\Program Files\Common FilesPath C:\Program Files (x86)\Common Files\Oracle\Java\javapath;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\FiddlerFPS_BROWSER_USER_PROFILE_STRING DefaultPATHEXT .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSCDriverData C:\Windows\System32\Drivers\DriverDataOS Windows_NTCOMPUTERNAME GZHQLAPTOP0839PROCESSOR_REVISION 6001CLASSPATH .;C:\Program Files\Java\jdk1.8.0_291\lib;C:\Program Files\Java\jdk1.8.0_291\lib\tools.jarCommonProgramW6432 C:\Program Files\Common FilesComSpec C:\Windows\system32\cmd.exeProgramData C:\ProgramDataProgramW6432 C:\Program FilesWXDRIVE_START_ARGS --wxdrive-setting=0 --disable-gpu --disable-software-rasterizer --enable-features=NetworkServiceInProcessHOMEPATH \Users\WSHSystemRoot C:\WindowsTEMP C:\Users\WSH\AppData\Local\TempHOMEDRIVE C:PROCESSOR_IDENTIFIER AMD64 Family 23 Model 96 Stepping 1, AuthenticAMDUSERPROFILE C:\Users\WSHTMP C:\Users\WSH\AppData\Local\TempCommonProgramFiles(x86) C:\Program Files (x86)\Common FilesProgramFiles C:\Program FilesPUBLIC C:\Users\PublicNUMBER_OF_PROCESSORS 12windir C:\Windows=:: ::\
sysenv 查看单个环境变量
[arthas@16288]$ sysenv JAVA_HOMEKEY VALUE
-----------------------------------------------------------------------------------------------------------------------JAVA_HOME C:\Program Files\Java\jdk1.8.0_291
六、Arthas jvm相关指令之vmoption
vmoption:查看,更新VM诊断相关的参数
//查看所有的option
[arthas@20044]$ vmoptionKEY VALUE ORIGIN WRITEABLE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------HeapDumpBeforeFullGC false DEFAULT trueHeapDumpAfterFullGC false DEFAULT trueHeapDumpOnOutOfMemoryError true VM_CREATION trueHeapDumpPath d:/dumps/ VM_CREATION trueCMSAbortablePrecleanWaitMillis 100 DEFAULT trueCMSWaitDuration 2000 DEFAULT trueCMSTriggerInterval -1 DEFAULT truePrintGC false DEFAULT truePrintGCDetails false DEFAULT truePrintGCDateStamps false DEFAULT truePrintGCTimeStamps false DEFAULT truePrintGCID false DEFAULT truePrintClassHistogramBeforeFullGC false DEFAULT truePrintClassHistogramAfterFullGC false DEFAULT truePrintClassHistogram false DEFAULT trueMinHeapFreeRatio 0 DEFAULT trueMaxHeapFreeRatio 100 DEFAULT truePrintConcurrentLocks false DEFAULT trueUnlockCommercialFeatures false
vmoption:查看指定的option
[arthas@16288]$ vmoption PrintGCKEY VALUE ORIGIN WRITEABLE
-----------------------------------------------------------------------------------------------------------------------PrintGC false DEFAULT
七、Arthas jvm相关指令之其他指令
- perfcounter :查看当前JVM的 Perf Counter信息,参考perfcounter — Arthas 3.5.4 文档
- logger :查看logger信息,更新logger level,参考logger — Arthas 3.5.4 文档
- getstatic :方便的查看类的静态属性。使用方法为getstatic class_name field_name,使用参考getstatic — Arthas 3.5.4 文档
- ognl :执行ognl表达式,使用参考ognl — Arthas 3.5.4 文档
- mbean :查看 Mbean 的信息,这个命令可以便捷的查看或监控 Mbean 的属性信息。更多使用参考mbean — Arthas 3.5.4 文档
//列出所有 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
JVM监控及诊断工具GUI篇之Arthas(二):jvm相关指令相关推荐
- 性能监控与调优篇之【3. JVM 监控及诊断工具-GUI 篇】
文章目录 3. JVM 监控及诊断工具-GUI 篇 3.1. 工具概述 3.2. JConsole 3.3. Visual VM 3.4. Eclipse MAT 3.5. JProfiler 3.6 ...
- JVM监控及诊断工具-GUI篇
3.JVM监控及诊断工具-GUI篇 一.工具概述 使用上一章命令行工具或组合能帮您获取目标Java应用性能相关的基础信息,但它们存在下列局限: 1.无法获取方法级别的分析数据,如方法间的调用关系.各方 ...
- 20.JVM监控以及诊断工具-GUI篇
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 20. JVM监控及诊断工具-GUI篇 20.1. 工具概述 使用上一章命令行工具或组合能帮您获取目标Java应用性能相 ...
- 干货满满【JVM监控及诊断工具-GUI篇】
[JVM监控及诊断工具-GUI篇] 3.1. 工具概述 使用上一章命令行工具或组合能帮您获取目标Java应用性能相关的基础信息,但它们存在下列局限: 1.无法获取方法级别的分析数据,如方法间的调用关系 ...
- JVM 学习笔记二十六、JVM监控及诊断工具-GUI篇
二十六.JVM监控及诊断工具-GUI篇 1.工具概述 使用上一张命令行工具或组合能帮您获取目标Java应用性能相关的基础信息,但他们存在下列局限: (1)无法获取方法级别的分析数据,如方法间的调用关系 ...
- 第24章 JVM监控及诊断工具-GUI篇
第24章 JVM监控及诊断工具-GUI篇 来自尚硅谷宋红康老师讲解的JVM:bilibili链接 1 工具概述 使用上一张命令行工具或组合能帮您获取目标Java应用性能相关的基础信息,但他们存在下列局 ...
- 15、JVM监控及诊断工具-GUI篇
文章目录 第1章.工具概述 第2章.jConsole 1.基本概述 2.启动 3.三种连接方式 [1]Local [2]Remote [3]Advanced 4.主要作用 第3章.Visual VM ...
- JVM(二十二) -- 性能监控与调优(三) -- JVM监控及诊断工具--GUI篇
1.工具概述 1.1 图形化总和诊断工具: JDK自带的工具 第三方工具 2. jConsole(了解) 从java5开始,在JDK中自带的java监控和管理控制台. 用于对JVM中内存.线程和类等的 ...
- <JVM下篇:性能监控与调优篇>03-JVM监控及诊断工具-GUI篇
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
- Day357358359360.JVM监控及诊断工具-GUI -JVM
JVM监控及诊断工具-GUI 实际中,你下面有1-2款会用即可 一.工具概述 二.JConsole 了解 1.基本概述 2.启动 在jdk安装目录中找到jconsole.exe,双击该可执行文件就可以 ...
最新文章
- java中二维数组求最大值代码。。。。。。不懂呀
- 怎么样清除bitcoin-qt的交易记录
- AI:IPPR的数学表示-CNN方法
- 设计模式-Builder Pattern
- 最小二乘法和极大似然估计
- 安全隐患分析和基本系统结构信息的收集
- MyEclipse配色
- Python--随机森林模型
- 万能工具,完全免费实现各种超实用功能
- AI人机对战五子棋游戏【Python(pygame)+AI】并实现软件输出
- 软件测试睡眠原理,测一测你的睡眠质量
- 三维空间曲面的切平面以及在某一点上的切线,法线
- 学会它,能让你工作学习效率提升10倍!
- Coherence X for mac(网站转换为mac应用的工具)
- 阿尔茨海默病与正常衰老中的脑萎缩研究进展
- Composing Photos Like a Photographer_2021_CVPR论文笔记
- 20211219 小信号建模——状态空间法
- 中国欲量产AI人才,本科招生爆发后如何培养?
- jenkins持续集成与持续交付
- html里面有一个控制文字滚动的标签marquee,比较有用。
热门文章
- steam服务器维护6月28,绝地求生6月28日维护更新公告 绝地求生6月28日更新内容汇总...
- 变速恒频风电机组的优缺点_风电消防安全解决方案解析
- C/C++[Shortest Distance]
- Jupyter Notebook 添加说明表格Cell
- 数据集:不同地区居民消费数据
- mysql 备份任务_设置mysql 定时备份任务
- PaddleSeg用于人像分割
- 591. 标签验证器
- MATLAB模式识别基本操作函数解析
- apt-get install的默认安装路径是什么