arthas05 您所在的位置:网站首页 mc指令语法 arthas05

arthas05

2023-05-25 14:38| 来源: 网络整理| 查看: 265

arthas05-jvm相关命令总结 原创

胡萝卜丁 2023-05-23 17:27:46 博主文章分类:arthas实战 ©著作权

文章标签 java jvm arthas apache 加载 文章分类 代码人生

©著作权归作者所有:来自51CTO博客作者胡萝卜丁的原创作品,请联系作者获取转载授权,否则将追究法律责任

1 heapdump-生成dump文件[arthas@4671]$ heapdump Dumping heap to /var/folders/kt/nb8xgh3x1tz_r8ntr828mw500000gn/T/heapdump2020-03-08-11-271776578985687027698.hprof... Heap dump file created [arthas@4671]$2 syspro-查看系统属性

这里查询的是一些启动参数,特别是jar -D启动时候配置的一些参数,都可以方便进行查询;

sysprop3 sysenv-系统环境变量查看

查看系统环境信息;

4 sc-查看jvm加载类的详细信息sc -d org.apache.commons.lang.StringUtils sc -d org/apache/commons/lang/StringUtils sc -d *StringUtils sc -d -f org.apache.commons.lang.StringUtils sc -E org\\.apache\\.commons\\.lang\\.StringUtils[arthas@4671]$ sc -d demo.MathGame class-info demo.MathGame code-source /Users/fwd/03-fwd_git/05-fly-higher-in-java/015-arthas/ope ncode/arthas-demo.jar name demo.MathGame isInterface false isAnnotation false isEnum false isAnonymousClass false isArray false isLocalClass false isMemberClass false isPrimitive false isSynthetic false simple-name MathGame modifier public annotation interfaces super-class +-java.lang.Object class-loader +-sun.misc.Launcher$AppClassLoader@55f96302 +-sun.misc.Launcher$ExtClassLoader@1540e19d classLoaderHash 55f963025 sm - 查看jvm加载类的方法信息sm -d demo.MathGame sm java.lang.String sm -d org.apache.commons.lang.StringUtils sm -d org/apache/commons/lang/StringUtils sm *StringUtils * sm -Ed org\\.apache\\.commons\\.lang\.StringUtils .*6 dump - 从jvm输出类的字节码dump java.lang.String dump -d /tmp/output java.lang.String dump org/apache/commons/lang/StringUtils dump *StringUtils dump -E org\\.apache\\.commons\\.lang\\.StringUtils7 jad - 反编译类文件jad java.lang.String jad java.lang.String toString jad --source-only java.lang.String jad -c 39eb305e org/apache/log4j/Logger jad -c 39eb305e -E org\\.apache\\.*\\.StringUtils8 mc - 热更新代码之编译java生成class

Memory Compiler/内存编译器,编译.java文件生成.class。

mc /tmp/Test.java

可以通过-c参数指定classloader:

mc -c 327a647b /tmp/Test.java

可以通过-d命令指定输出目录:

mc -d /tmp/output /tmp/ClassA.java /tmp/ClassB.java

编译生成.class文件之后,可以结合redefine命令实现热更新代码。

9 redefine - 热更新代码之重新加载修改class

redefine命令实际上实现了任意代码线上debug的功能,可以随意本地修改代码重新编绎,然后线上redefine加载

redefine使用简介

注意, redefine后的原来的类不能恢复,redefine有可能失败(比如增加了新的field),参考jdk本身的文档。

reset命令对redefine的类无效。如果想重置,需要redefine原始的字节码。

redefine命令和jad/watch/trace/monitor/tt等命令会冲突。执行完redefine之后,如果再执行上面提到的命令,则会把redefine的字节码重置。 原因是jdk本

收藏 评论 分享 举报

上一篇:arthas02-arthas执行结果保存日志

下一篇:java配置工具包-typesafe config简介



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有