window下Java诊断工具arthas 实操心得
1、使用 jad命令反编译java类得到源代码文件 此时注意路径中斜杠只能使用反斜杠
jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java
2、使用mc内存编译命令编译源文件
mc /tmp/UserController.java -d /tmp
Mc 编译对于tomcat来说仍然可能会失败
Mc –c 类的classloaderhash或classloader全限定名(classloader hash根据sc –d 类名全限定名获取)。如(mc -c 10731e16 F:/git6/arthasroot/QueryFilter.java -d F:/git6/arthasroot)(‘>’ 符号可以将命令输出结果重定向到文件)
存在的问题是当源码文件中存在多个classloader时mc –c只能指定一个classloader,所以会编译不通过。此时只能使用手动编译。
ClassLoader –c (classloader哈希code)可以列出classloader已加载的类。
实操截图如下
3、redefine命令重新动态加载类(只能重载方法体)
redefine /tmp/com/example/demo/arthas/user/UserController.class
4、综合上述三个命令实现线上热修复(在无源码的情况下)的一般步骤。Jad反编译出类源码->对源码做出略微修改(比如加入调试日志等等)->使用Mc命令编译经过略微修改的源码为class文件,使用redefine重新定义类。(redefine只对方法体的修改有效)
实操截图如下
window下Java诊断工具arthas 实操心得相关推荐
- Java诊断工具-Arthas入门与实践
Java诊断工具-Arthas入门与实践 目录 Java诊断工具-Arthas入门与实践 什么是Arthas? Arthas能做什么? 我在哪里可以下载Arthas? 快速入门 1. 下载并运行mat ...
- 阿里Java诊断工具 arthas - 生产环境反编译动态修改程序调试应用
阿里Java诊断工具 arthas - 生产环境反编译动态修改程序调试应用 一.arthas 上篇文章我们借助arthas监测线上系统的运行信息.排查程序运行缓慢问题,尽管这样已经非常好了,但是还是会 ...
- 阿里开源的Java诊断工具——Arthas
文章目录 1 问题背景 2 前言 3 Arthas有什么作用 4 入门小实践 5 SpringBoot应用.Arthas.Arthas Tunnel Server之间的关系 1 问题背景 线上生产环境 ...
- 阿里巴巴开源的 Java 诊断工具Arthas【入门篇】
前面: 各位老铁们,好久没和大家见面了,最近一直躲在家里不敢出来门,过着像猪的生活..... 吃喝拉撒睡觉.远程在家办公一段时间也是遇到了比较棘手的问题.所以没有顾得上来和大家分享了,不过大家放心,从 ...
- Java诊断工具Arthas使用说明
Arthas简介 当你遇到以下类似问题而束手无策时,Arthas 可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 ...
- 阿里内部的那个牛逼带闪电的Java诊断工具arthas终于开源了
在阿里巴巴内部,有很多自研工具供开发者使用,其中有一款工具,是几乎每个Java开发都使用过的工具,那就是Arthas,这是一款Java诊断工具,是一款牛逼带闪电的工具.该工具已于2018年9月份开源. ...
- Arthas(1):Java诊断工具Arthas入门教程
文章目录 前言 第一节 Arthas 能为你做什么? 第二节 环境准备 第三节 快速入门 1. 启动math-game 2. 启动arthas 3. 查看dashboard 4. 通过 thread ...
- java诊断工具-Arthas(阿尔赛斯)入门
Arthas是什么? Arthas 是Alibaba开源的Java诊断工具. 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 E ...
- Java诊断工具 Arthas
是什么 Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱.在线排查问题,无需重启:动态跟踪Java代码:实时监控JVM状态.可以解决如下常见问题: 这个类从哪个 j ...
最新文章
- sql语句遇到错误: The used SELECT statements have a different number of columns :
- 区块链学习(6)区块链
- 使用nginx动静分离后,druid被拦截的解决方法
- 记录今天写的几个正则,数字范围的校验
- python写传奇脚本,Python趣味打怪:60秒学会一个例子,147段简单代码助你从入门到大师 | 中文资源...
- SSL和数字证书服务慨述(4)
- 开源论坛程序 vBulletin 被曝严重且详情不明的漏洞,请立即修复
- Activiti接受任务(receiveTask)
- What's New in Qt 5.5 5.4,以及5.5 所有module
- 【外星眼halcon教程】机器视觉测量消费电子显示屏的颜色
- OpenCV--二值化
- Activiti6--入门学习--监听器
- abp框架java_ABP框架的体系结构及模块系统讲解
- vscode c++ code runner 配置 opencv
- 【微信小程序】设置页面背景色的方式
- 2023年金融节假日函数(VBA)
- 自定义provider
- BZOJ1002 FJOI2007 轮状病毒 【基尔霍夫矩阵+高精度】
- 北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛(重现赛)题解
- Unity3D学习笔记(6)—— 飞碟射击游戏
热门文章
- 【论文分享】不平衡流量分类方法 DeepFE:ResNet+SE+non-local:Let Imbalance Have Nowhere to Hide
- 李开复讲述离开谷歌后的生活
- opencv 将多帧图像合成为视频 cv2.VideoWriter()
- Graphviz 绘图软件
- 机器视觉——镜头知识整理
- 【Apache POI】Excel操作(六):Excel计算公式的读取和使用
- myeclipse mysql连接_怎么连接myeclipse与mysql数据库
- CDN使用心得:加速双刃剑
- 双刃剑MongoDB的学习和避坑
- 音视频传输中时间戳小头处理方式