Arthas-Class/Classloader相关命令使用

news2024/12/23 13:19:44

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

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

文章目录

  • Class/Classloader相关命令使用
    • classloader
    • dump
    • jad
    • mc
    • redefine
    • retransform
    • sc
    • sm

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 [类的全限定名]

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/603589.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FMEA教程

1. 2. 3. 4. 5. PFMEA是“过程失效模式与后果分析”的英文“Process Failure Mode and Effect Analysis”的缩写。为了更好地促进AQP PFMEA软件的应用,我们将以系列文章分享运用AQP PFMEA软件有效开展PFMEA工作的理念和方法,同时系统性介绍AQP PFMEA软…

leetcode96--不同的二叉搜索树[java]

不同的二叉搜索树 leetcode 96 题 不同的二叉搜索树题目描述暴力递归解题思路代码演示执行效率 递归 缓存解题思路代码演示执行效率 动态规划专题 leetcode 96 题 不同的二叉搜索树 原题链接: 难度—中等 https://leetcode.cn/problems/unique-binary-search-trees/ 题目描述 …

chatgpt赋能python:分解gif:使用Python将动态图片拆分成单帧图片

分解gif:使用Python将动态图片拆分成单帧图片 随着互联网上图片的使用越来越普遍,动态图片也成为了大家经常使用的图片之一。GIF动态图作为一种常见的动态图片格式,有时需要将其拆分成单帧图片,以便于使用或修改其中的某一帧。本…

目标检测笔记(九):详细介绍并实现可视化深度学习中每层特征层的网络训练情况

文章目录 为什么要解析特征层如何可视化特征层可视化结果如何 ❤️ 🧡 💛 💚 💙 💜 🖤 🤍 🤎 💔 ❣️ 💕 💞 💓 💗 &#…

SpringCloud(三)

文章目录 Eureka注册中心Eureka的结构和作用搭建eureka-server创建eureka-server服务引入eureka依赖编写启动类编写配置文件启动服务 服务注册1)引入依赖2)配置文件3)启动多个user-service实例 服务发现1)引入依赖2)配…

chatgpt赋能python:Python冒泡法排序:一种简单且高效的排序方法

Python 冒泡法排序:一种简单且高效的排序方法 在计算机科学中,排序算法是一种将给定数据集合重新排列为按照一定顺序排列的有序序列的方法。而冒泡排序算法是其中最简单、最基础的一种排序算法。 什么是冒泡排序? 冒泡排序,顾名…

代码随想录第49天

1.买卖股票的最佳时机&#xff1a; 贪心 因为股票就买卖一次&#xff0c;那么贪心的想法很自然就是取最左最小值&#xff0c;取最右最大值&#xff0c;那么得到的差值就是最大利润。 C代码如下&#xff1a; class Solution { public:int maxProfit(vector<int>& …

一键部署个人ChatGPT Web网站

一键部署个人ChatGPT Web网站 githubVercel使用自己的域名 本文将向大家介绍如何通过Github和Vercel这两个具,轻松搭建自己的ChatGPT Web网站&#xff0c;并且我们还可以添加密码保护以防止恶意滥用。 github 首先&#xff0c;我们需要拥有一个Github账号和Vercel账&#xff0…

【Set集合】概述和特点

Set集合概述和特点 Set集合概述 Set作为Collection集合的子接口&#xff0c;没有新增的功能&#xff0c;Collection集合可用的功能Set集合也可以用。 Set集合特点 Set集合存储的元素是无序的&#xff0c;而且不允许存储重复的元素&#xff0c;每当有新的元素存入的时候&#x…

操作系统复习3.2.1-虚拟内存

传统存储的问题 一次性&#xff1a;一次性装入作业才能运行 驻留性&#xff1a;不是所有部分都需要长时间存放在内存中 定义和特征 将要用的部分载入内存&#xff0c;不用的部分调出外存&#xff0c;逻辑上扩大内存 虚拟内存的最大容量为计算机的寻址范围决定 实际容量则为内…

【哈希值】概述和特点

哈希值概述和特点 哈希值概述 哈希值是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值 Object类中有一个方法可以获取对象的哈希值&#xff1a; public int hashCode()&#xff1a;返回对象的哈希值 哈希值特点 同一个对象多次调用hashCode()方法返回的哈希值是相…

0x36transferData 数据传输

0x36transferData TransferData服务用于客户端将数据从客户端传输到服务器&#xff08;下载&#xff09;或从服务器传输到客户端&#xff08;上传&#xff09; 。 数据传输方向由前面的RequestDownload或RequestUpload服务定义。 如果客户端发起请求下载&#xff0c;则要下载的…

【01】STM32·HAL库开发-单片机简介 |用处、发展历程、发展趋势、CISC与RISC对比、冯诺依曼和哈佛结构对比

目录 1.单片机是什么&#xff08;了解&#xff09;2.单片机有什么用&#xff08;了解&#xff09;3.单片机发展历程&#xff08;了解&#xff09;4.单片机发展趋势&#xff08;了解&#xff09;5.CISC & RISC&#xff08;了解&#xff09;5.1CISC和RISC举例5.2冯诺依曼结构…

【C++】位图应用 | 布隆过滤器

文章目录 1. 位图应用题目一代码实现setrsettest具体代码 题目二位图优缺点总结 2. 布隆过滤器提出背景概念具体实现hash1 hash2 hash3N取值问题settsettset中在与不在那个准确&#xff1f;使用场景及特点具体代码 1. 位图应用 题目一 给40亿个不重复的无符号整数&#xff0c…

压缩感知重构之凸松弛法

算法的重构是压缩感知中重要的一步&#xff0c;是压缩感知的关键之处。因为重构算法关系着信号能否精确重建&#xff0c;国内外的研究学者致力于压缩感知的信号重建&#xff0c;并且取得了很大的进展&#xff0c;提出了很多的重构算法&#xff0c;每种算法都各有自己的优缺点&a…

Linux-地址空间

文章目录 问题引入操作系统宏观认识操作系统与进程程序地址空间进程地址空间问题解释 问题引入 在Linux操作系统中、vim编译器下&#xff0c;出现了变量同地址但不同值的现象。 下面以解释该现象产生的原因为主线&#xff0c;在过程中学习Linux操作系统的知识。 运行代码展示…

chatgpt赋能python:Python分词处理

Python分词处理 随着网络技术的飞速发展&#xff0c;搜索引擎已成为人们了解信息的主要渠道之一&#xff0c;而搜索引擎的核心是关键词匹配&#xff0c;因此分词技术在搜索引擎优化&#xff08;SEO&#xff09;中起着至关重要的作用。Python作为一种强大的编程语言&#xff0c…

【学习日记2023.6.3】之 工作台显示和报表导出

文章目录 12. 工作台显示和报表导出12.1 工作台12.1.1 需求分析和设计12.1.2 代码开发Controller层Service层接口Service层实现类Mapper层 12.1.3 功能测试12.1.4 提交代码 12.2 Apache POI12.2.1 介绍12.2.2 入门案例12.2.2.1 将数据写入Excel文件12.2.2.2 读取Excel文件中的数…

Linux4.7Nginx优化与防盗链

文章目录 计算机系统5G云计算第六章 LINUX Nginx优化与防盗链一、Nginx服务优化和深入优化1.隐藏版本号2.修改用户与组3.缓存时间4.日志切割5.连接超时6.更改进程数7.配置网页压缩8.配置防盗链9.fpm参数优化 计算机系统 5G云计算 第六章 LINUX Nginx优化与防盗链 一、Nginx服…

操作系统复习4.1.0-文件管理结构

定义 一组有意义的信息的集合 属性 文件名、标识符、类型、位置、大小、创建时间、上次修改时间、文件所有者信息、保护信息 操作系统向上提供的功能 创建文件、删除文件、读文件、写文件、打开文件、关闭文件 这6个都是系统调用 创建文件 创建文件时调用Create系统调用…