Arthas热替换java的class文件_arthas 替换class_fengchengwu2012的博客

CSDN博客 · · 549 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

1、arthas操作class、classloader的常用命令

(1)classloader - 查看 classloader 的继承树,urls,类加载信息,使用 classloader 去 getResource
(2)dump - dump 已加载类的 byte code 到特定目录
(3)jad - 反编译指定已加载类的源码
(4)mc - 内存编译器,内存编译.java文件为.class文件
(5)redefine - 加载外部的.class文件,redefine 到 JVM 里
(6)retransform - 加载外部的.class文件,retransform 到 JVM 里
(7)sc - 查看 JVM 已加载的类信息
(8)sm - 查看已加载类的方法信息

2、替换calss文件步骤

(1)运行应用服务

 (2)启动artahs服务  java -jar  arthas-boot.jar 

 可以查看到第一部启动的1871的java进程,直接输入进程的序号

(3)使用jad命令反编译class

 jad  --source-only org.cn.fcw.control.BootController  > /home/master/appweb/output/BootController.java

    将内存中的BootController的class文件反编译成java源文件输入到指定目录

    

(4)使用sc查询指定类的classloader

sc  -d   org.cn.fcw.control.BaseController  |  grep  classLoaderHash

   查询类加载器的hash值

 (5)修改源码中的问题,将修改后的java源文件编异常class文件

  mc  -c    类加载器hash    java源码全路径   -d   输出路径

 (6)redefine将新编译的class文件加载到内存中

 redefine    /home/master/appweb/output/org/cn/fcw/control/BootController.class

   至此class文件替换完成

   

本文来自:CSDN博客

感谢作者:CSDN博客

查看原文:Arthas热替换java的class文件_arthas 替换class_fengchengwu2012的博客

549 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传