Loading... ## Jvm相关 ### dashboard <div class="tip inlineBlock info"> 显示当前系统的实时数据面板,按q或ctrl+c退出 </div> ![dashboard][1] **数据说明** - ID:Java级别的线程ID,注意这个ID不能跟jstack中的nativeID一一对应 - NAME:线程名 - GROUP:线程组名 - PRIORITY: 线程优先级, 1~10之间的数字,越大表示优先级越高 - STATE: 线程的状态 - CPU%: 线程消耗的cpu占比,采样100ms,将所有线程在这100ms内的cpu使用量求和,再算出 每个线程的cpu使用占比。 - TIME: 线程运行总时间,数据格式为 分:秒 - INTERRUPTED: 线程当前的中断位状态 - DAEMON: 是否是daemon线程 ### thread <div class="tip inlineBlock info"> 查看当前 JVM 的线程堆栈信息 </div> <table border="1"> <tr> <td bgcolor=#D9F9D5>参数名称</td> <td bgcolor=#D9F9D5>参数说明</td> </tr> <tr> <td>d</td> <td>线程id</td> </tr> <tr> <td>[n:]</td> <td>指定最忙的前N个线程并打印堆栈</td> </tr> <tr> <td>[b]</td> <td>找出当前阻塞其他线程的线程</td> </tr> <tr> <td>[i <value>]</td> <td>指定cpu占比统计的采样间隔,单位为毫秒</td> </tr> </table> ```bash # 展示当前最忙的前3个线程并打印堆栈 thread -n 3 # 找出当前阻塞其他线程的线程,有时候我们发现应用卡住了, 通常是由于某个线程拿住了某个锁, 并且 其他线程都在等待这把锁造成的。 为了排查这类问题, arthas提供了thread -b, 一键找出那个罪魁 祸首。 thread -b # 指定采样时间间隔,每过1000毫秒采样,显示最占时间的3个线程 thread -i 1000 -n 3 # 查看处于等待状态的线程 thread --state WAITING ``` ### jvm <div class="tip inlineBlock info"> 查看当前 JVM 的信息 </div> #### 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 <div class="tip inlineBlock info"> 查看和修改JVM的系统属性 </div> ```bash # 查看所有属性 sysprop # 查看单个属性,支持通过tab补全 sysprop java.version # 修改单个属性 sysprop user.country sysprop user.country CN ``` ### sysenv <div class="tip inlineBlock info"> 查看当前JVM的环境属性( System Environment Variables ) </div> ### vmoption <div class="tip inlineBlock info"> 查看,更新VM诊断相关的参数 </div> ```bash # 查看所有的选项 vmoption # 查看指定的选项 vmoption PrintGCDetails ``` ### getstatic <div class="tip inlineBlock info"> 通过getstatic命令可以方便的查看类的静态属性 </div> ```bash getstatic 类名 属性名 # 显示club.ganboy.Demo类中的静态属性MATH_MAX getstatic club.ganboy.Demo MATH_MAX ``` ### ognl(对象图导航语言) <div class="tip inlineBlock info"> 执行ognl表达式,这是从3.0.5版本新增的功能 </div> <table border="1"> <tr> <td bgcolor=#D9F9D5>参数名称</td> <td bgcolor=#D9F9D5>参数说明</td> </tr> <tr> <td>express</td> <td>执行的表达式</td> </tr> <tr> <td>[c:]</td> <td>执行表达式的ClassLoader的hashcode,默认值是SystemClassLoader</td> </tr> <tr> <td>[x]</td> <td>结果对象的展开层次,默认值1</td> </tr> </table> ```bash # 调用静态函数 ognl '@java.lang.System@out.println("ganboy")' # 获取静态类的静态字段 ognl '@demo.MathGame@random' ``` [1]: https://cdn.ganhua.work/blog_static/images/2021/01/dashboard.png 最后修改:2021 年 10 月 18 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 社会很单纯~复杂滴是人呐~谁能在乎我呀