Jvm
jvm 检测工具
阿尔萨斯(Arthas)
安装
wget https://alibaba.github.io/arthas/arthas-boot.jar
或者直接访问网址进行jar包的下载
监控命令常用命令
dashboard(仪表盘)
dashboard 以仪表盘展示数据信息
Thread (查看线程信息)
Thread 查看所有运行线程信息
Thread 编号: 查看指定线程号的详细信息
*** -n 展示最繁忙的线程 ***
thread -n 3 展示三个最忙得到线程
*** -b 展示当前被阻塞的线程 ***
thread -b 展示被阻塞的现场 如果出现死锁也会展示出来
*** --State 查看指定状态的线程 ***
thread --statee Waiting 查看暂停的线程
thread --state Runnable 查看正在运行的线程
Jvm 查看jvm信息
sys
sysprop 获取系统值
也可以进行修改 sysprop key value
sysenv 查看系统环境变量
vmoption 查看虚拟机信息
sc (search class)查看指定路径下的类信息
-d 显示类的详细信息
-f 显示类内的成员变量信息
sc com.oom.* -d
sm (search method) 查看制定个方法信息
-d 显示类的详细信息
-f 显示类内的成员变量信息
sm com.oom.controller.OOMController
sm com.oom.controller.*
getstatic 查看代码内部
getstatic 类名 静态变量
实现在运行过程当中修改代码
1、将修改的类使用jad 进行反编译
2、修改代码内容
3、执行mc将.java文件修改
4、执行redefine命令
jad 反编译(查看源码信息)
*** jad 包路径 + 类 ***
jad com.oom.controller.LockController -d 生成的文件路径
mc 将java 代码编译为字节码
mc java文件路径 -d 生成的.class文件路径
redefine 將生成.class文件加载到jvm运行内存中
redefine f:/OOMController.class
watch 动态监控指定方法(监控方法的调用以及返回值)
*** watch 类全路径 方法名 返回值 ***
watch com.oom.controller.OOMController saveListInfo returnObj
退出 阿尔萨斯
quit/exit
quit/exit 表示关闭当前Session
stop
stop 关闭 服务
dump 将制定类的字节码生成到制定路径
dump com.oom.controller.OOMController -d F:/
classloader 查看类加载器
classloader -l 查看详细信息类加载器的父类加载器
classloader -a 查看类加载器加载的所有类
classloader -c 查看类的加载器所在路径
monitor 监控方法调用信息
监控方法的调用次数
monitor com.oom.controller.OOMController saveListInfo -c 5
-c 几秒输出一次
watch 实时监控
-b 调用之前
-e 出现异常以后sd
-s 方法返回之后
-f 方法结束后
watch com.oom.controller.OOMController txtObj "{params,returnObj}" -x 5 监控指定方法的入参以及出参
trace 查看方法的调用过程
trace com.oom.controller.OOMController *
trace com.oom.controller.OOMController * -n 统计指定次数
trace --skipJDKMethod false com.oom.controller.OOMController * 不跳过底层JDK 所执行的方法
trace com.oom.controller.OOMController * '#cost > 2' 查询线程执行大于2秒的w
stack 查看调用栈的信息
stack com.oom.controller.OOMController saveListInfo
tt 监控方法调用
`` txt
tt -t 查看方法调用
``
基础命令
help
help 展示所有的命令
cat
cat 查看文件内容
grep
只能配合能查出命令的语句后面例如
-i 不区分大小邪恶
-n 显示行号
-m 显示指定行数
thread | grep