当前位置: 首页 > news >正文

如何通过Arthas热更新正在运行中的java代码

前提是已安装好Arthas,安装相当简单,执行下述语句即可:

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

然后输入对应的pid,即可进入交互界面。

主要涉及以下三个arthas提供的指令:jad   mc  redefine 。具体步骤如下:

1、通过jad指令将class反编译成java文件:

jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java

2、修改/tmp/UserController.java中的代码

通过linux命令:vi   vim   sed 均可

3、通过 sc 指令找到该类的加载器

sc -d *UserController | grep classLoaderHash

4、查找所有的类加载器列表

classloader -l

5、通过 mc 指令将java文件编译成class文件

mc --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader /tmp/UserController.java -d /tmp

6、通过 redefine 指令重新加载class

redefine /tmp/com/example/demo/arthas/user/UserController.class

完成

注意:redefine重新加载class之后,如果再次使用jad指令,则会将class还原成初始状态。

相关文章:

  • go语言`json:“-“`标签的含义
  • Vue3-34-路由-路由配置参数 props
  • vue对日期的年、月、日进行增加,转换成指定格式的字符串(yyyy-MM-dd)
  • 2023年“中银杯”安徽省网络安全B模块(部分解析)
  • vivado 指定相对位置
  • 每天五分钟计算机视觉:揭秘迁移学习
  • 原生JS做别踩白块游戏
  • 算法系统学习(持续更新)
  • 栈实现后缀表达式的计算
  • 交换机02_共享式交换式
  • 了解并使用django-rest-framework-jwt
  • 简述Redis备份策略以及对应的实现机制
  • CMake入门教程【基础篇】HelloCMake
  • 数模学习day06-主成分分析
  • 记Android字符串资源支持的参数类型
  • 【译】JS基础算法脚本:字符串结尾
  • Angular4 模板式表单用法以及验证
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • CSS 三角实现
  • Git同步原始仓库到Fork仓库中
  • golang 发送GET和POST示例
  • Java基本数据类型之Number
  • learning koa2.x
  • LeetCode29.两数相除 JavaScript
  • Lucene解析 - 基本概念
  • mongodb--安装和初步使用教程
  • nodejs:开发并发布一个nodejs包
  • SwizzleMethod 黑魔法
  • 动态魔术使用DBMS_SQL
  • 如何设计一个微型分布式架构?
  • 如何胜任知名企业的商业数据分析师?
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 携程小程序初体验
  • linux 淘宝开源监控工具tsar
  • #QT项目实战(天气预报)
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (排序详解之 堆排序)
  • (原)本想说脏话,奈何已放下
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .net 反编译_.net反编译的相关问题
  • .Net 路由处理厉害了
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .NET下ASPX编程的几个小问题
  • .Net中的集合
  • .sh 的运行
  • @angular/cli项目构建--Dynamic.Form
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • [boost]使用boost::function和boost::bind产生的down机一例
  • [bzoj4240] 有趣的家庭菜园
  • [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)