Arthas[阿尔萨斯]

Arthas开启
-- 查看需要查询内存数据的执行java程序的进程端口号
jps -ml

-- 下载
curl -O https://arthas.aliyun.com/arthas-boot.jar

-- 进入到了进程,可以开始查看内存数据了
java -jar arthas-boot.jar 端口号         
Arthas命令
  1. dashboard
  2. heap dump
  3. thread
  4. jvm
  5. jad
  6. sc
  7. mc
  8. redefine
  9. trace
-- 可以查看当前系统的实时数据面板。可以查看到CPU、内存、GC、运行环境等信息。
dashboard

-- 会生成一个堆内存快照文件 heapdump.hprof 的文件
-- 类似jmap命令,线上别用!!!
heapdump

-- 查看当前JVM的线程信息
thread 

-- 命令会打印出JVM的各种详细信息
jvm

-- 反编译代码
jad
jad --source-only com.service.Test > /tmp/Test.java

-- sc命令用于查看JVM已加载的类信息。该命令的完整名称是“Search-Class”
sc
-- 输出当前类的详细信息,包括类加载的原始文件来源、类的声明、加载的ClassLoader等详细信息
sc -d
-- 会显示Test类classLoader的Hash
sc -d com.logic.Test | grep classLoaderHash
sc -d *Test | grep classLoaderHash

-- 在JVM内存中编译Java源码为字节码
mc
-- 用classLoaderHash为6bc28484的classLoader编译Test.java,结果放在/tmp下
mc -c 6bc28484 /tmp/Test.java -d /tmp

-- redefine热更类
redefine /tmp/Test.class

-- 分析方法内部的调用路径,输出方法调用链路及其耗时
trace

输入 exit 或者 quit 命令可以退出Arthas当前session。执行 stop 命令彻底退出Arthas。
Arthas使用Ognl

ognl通过简单的表达式语法,可以访问对象的任意属性、调用对象的方法、遍历对象的结构图,并实现类型转换等功能。

-- 方法调用1
ognl '@com.etc.database.DataCenter@getSysData(@com.etc.entity.sys.TestSysData@class)'
-- 方法调用2
ognl '@com.etc.database.DataCenter@getSysData(@com.etc.entity.sys.TestSysData@class).getDataMap().get(10001).getRoleDataMap().get(1801982379342819833L).getRechargeIds().add(161001)'
Arthas热更类
热更类:自己上传类
  1. 把需要热更的类上传,编译后的文件

  2. 使用redefine热更

redefine /tmp/ReqUseItemHandler.class

linux下:

windows下:

热更类:直接反编译出类
# 反编译
$ jad --source-only com.jingmai.video.live.order.service.impl.ApplerPayServiceImpl > /tmp/ApplerPayServiceImpl.java

# 修改文件(不在arthas 的控制台!!!!,新开一个会话,在centos的控制台操作)
$ vim /tmp/ApplerPayServiceImpl.java  (在java文件中加入逻辑)

# 查找被修改的java类的加载的 ClassLoader
$ sc -d *ApplerPayServiceImpl | grep classLoaderHash
classLoaderHash  6bc28484

# 编译
$ mc -c 6bc28484 /tmp/ApplerPayServiceImpl.java -d /tmp

# 热更新
$ redefine /tmp/com/jingmai/video/live/order/service/ApplerPayServiceImpl.class
redefine success, size: 1
posted @ 2025-01-06 19:13  deyang  阅读(14)  评论(0编辑  收藏  举报