dashboard:当前系统的实时数据面板
输入 Q 或者 Ctrl+C 可以退出dashboard命令。
-i 400ms 每次执行间隔时间(ms),默认5000ms
-n 执行多少次dashboard,不指定的话会一直刷新
JVM内部线程
Java 8之后支持获取JVM内部线程CPU时间,这些线程只有名称和CPU时间,没有ID及状态等信息(显示ID为-1)。 通过内部线程可以观测到JVM活动,如GC、JIT编译等占用CPU情况,方便了解JVM整体运行状况。
当JVM 堆(heap)/元数据(metaspace)空间不足或OOM时,可以看到GC线程的CPU占用率明显高于其他的线程。
当执行trace/watch/tt/redefine等命令后,可以看到JIT线程活动变得更频繁。因为JVM热更新class字节码时清除了此class相关的JIT编译结果,需要重新编译。
JVM内部线程包括下面几种:
JIT编译线程: 如 C1 CompilerThread0, C2 CompilerThread0
GC线程: 如GC Thread0, G1 Young RemSet Sampling
其它内部线程: 如VM Periodic Task Thread, VM Thread, Service Thread
thread:查看当前 JVM 的线程堆栈信息
thread [ID]:会打印线程ID为[ID]的栈
-b :查看目前block其他线程的线程
-i 5000ms:查看在接下来的多长时间内 统计cpu利用率
-n 5:查看cpu占用率前5的线程的堆栈信息
--all :显示所有匹配的线程
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当前打开的文件描述符数
sysprop:查看和修改JVM的系统属性
sysprop java.version 查看指定key的value
sysprop | grep user 包含过滤
sysprop newkey newvalue 设置新的key value
sysenv:查看JVM的环境变量
vmoption:查看和修改JVM里诊断相关的option
例子
vmoption
vmoption PrintGCDetails
vmoption PrintGCDetails true
perfcounter:查看当前 JVM 的Perf Counter信息
-d:打印详细信息
logger:查看和修改logger
-c, --classloader <value>:指定classloader,默认为SystemClassLoader
--classLoaderClass <value>:指定classloader的类
--include-no-appender:打印不包含的appender
-l, --level <value>:设置日志等级
-n, --name <value>:查看名字为<value>的
getstatic:查看类的静态属性
推荐直接使用ognl命令,更加灵活