ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JVM诊断及工具笔记(1)使用arthas热更新代码

2022-02-01 21:34:32  阅读:214  来源: 互联网

标签:code java flink 笔记 JVM arthas home SlotPoolImpl


封面图片不要使用微信打开文章,可以使用手机/电脑浏览器

笔者目前在汽车之家云基础平台负责flink平台,数据湖, kafka平台的设计及开发。平时擅长做平台设计,定位及解决各种疑难杂症。最近开始冲动,想总结下最近几年使用的工具及定位的疑难杂症。时间久远,且目前工作,生活节奏较快。我大多数总结的文章应该都是大白话文,以简短的文章为主。心路历程及过程都是次要的, 主要就是短!!!

现在介绍第一个'短文',使用 arthas 做代码热更新

  1. 下载 arthas

wget https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar

 

  1. 启动arthas并选择attach的进程

java -jar arthas-boot.jar

 

  1. 反编译某个类文件

>>>jad --source-only org.apache.flink.runtime.jobmaster.slotpool.SlotPoolImpl > /home/flink/code/SlotPoolImpl.java

 

  1. 修改/home/flink/code/SlotPoolImpl.java 文件

这个时候就吭哧瘪肚的加日志也好,改代码逻辑也好

 

  1. sc 查找加载 你要装载的类的 classLoaderHash

    \>>> sc -d *SlotPoolImpl | grep classLoaderHash

    \>>> 18b4aac2

 

 

注意 第3,4步反编译不一定好使(部分语法编出来的文件不能用),最好跳过第2,3步把源码在 idea里面修改再拷贝到服务器最为稳妥

 

  1. 编译一遍新刚才修改的java文件

mc -c 18b4aac2 /home/flink/code/SlotPoolImpl.java -d /home/flink/code

 

这个时候就会重新生成 class 文件

/org/apache/flink/runtime/jobmaster/slotpool/SlotPoolImpl.class

 

  1. 重新加载这个文件

\>>> redefine /home/flink/code/org/apache/flink/runtime/jobmaster/slotpool/SlotPoolImpl.class

 

  1. 作用:

当时笔者修改flink1.9.2版本代码的时候漏掉了些逻辑,这个时候急于验证。就使用了arthas热更新功能,从修改代码到重新编译再到验证用了不到5分钟时间。快速的解决相应的问题

标签:code,java,flink,笔记,JVM,arthas,home,SlotPoolImpl
来源: https://www.cnblogs.com/wgcn/p/15859654.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有