Arthas

您所在的位置:网站首页 mc命令app下载 Arthas

Arthas

#Arthas| 来源: 网络整理| 查看: 265

tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。

推荐:体系化学习Java(Java面试专题)

开头: 我们先说下生产使用频率较高的有哪些:dump、jad、mc、retransform

文章目录 Class/Classloader相关命令使用classloaderdumpjadmcredefineretransformscsm

Class/Classloader相关命令使用 classloader

查看 classloader 的继承树,urls,类加载信息,将 JVM 中所有的 classloader 的信息统计出来,并可以展示继承树,urls 等。这个命令用的不多,了解一下。

命令: classloader 按类加载类型查看统计信息 classloader -l 按类加载实例进行统计 classloader -t 按类加载实例进行统计 classloader -c [hashcode] ClassLoader 的 hashcode classloader -c [hashcode] --load [类名] 使用 ClassLoader 去加载类 classloader -c [hashcode] -r [资源名] 用 ClassLoader 去查找 resource

在这里插入图片描述

dump

dump 已加载类的 bytecode 到特定目录,这个命令比较常用,主要用来下载/打印出来 class 文件。

常用命令: dump -d [目录] [类的全限定名]

使用截图:

在这里插入图片描述

jad

反编译指定已加载类的源码,这个命令也比较常用,主要用来反编译 class 文件,确定我们写的代码是不是编译了,是否生效。

命令: jad -c [hashcode] jad [类的全限定名] --lineNumber false 反编译类,不限行号, --lineNumber false 可选的。 在这里插入图片描述

mc

Memory Compiler/内存编译器,编译.java文件生成.class。这个命令也比较常用,主要用来线上修改代码后,编译发布。 我们用 jad 拿到源码,然后保存修改它,在用 mc 编译。

命令: mc -d [目录] -c [hashcode] [目录/xxx.java] 也可以参考:mc -d /root/test --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader /root/test/Test.java

有时候没指定 classloader,也会报错,如下: 在这里插入图片描述

使用截图如下: 在这里插入图片描述

redefine

加载外部的.class文件,redefine jvm 已加载的类,不过官方已经推荐使用 retransform 了。 这个了解就好了。 命令: redefine -c [hashcode] [class文件] redefine --classLoaderClass [classLoader] [class文件]

在这里插入图片描述

retransform

加载外部的.class文件,retransform jvm 已加载的类。官方推荐使用的方式。

命令: retransform [class文件] 将 class 加载到 jvm retransform -l 查看 retransform entry retransform -d [id] 删除指定 retransform entry retransform --deleteAll 删除指定 retransform entry

在这里插入图片描述

sc

这个是 Search-Class 的缩写, 查看 JVM 已加载的类信息。 命令: sc -d [类的全限定名] sc -d -f [类的全限定名] 打印出类的 Field 信息 sc -cs [返回值] [类名包含] 指定 class 的 ClassLoader#toString() 返回值

在这里插入图片描述

sm

查看已加载类的方法信息,是 Search-Method 的简写。

命令: 主要命令: sm -d [类的全限定名]

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3