class 和 Classloader 相关命令:dump | 学习笔记

简介: 快速学习 class 和 Classloader 相关命令:dump

开发者学堂课程【线上问题排查利器 Alibaba Arthas(下)class 和 Classloader 相关命令:dump】学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/747/detail/13199


class 和 Classloader 相关命令:dump


内容介绍

一、dump作用及参数

二、举例运算

三、小节


一、作用及参数

接下来介绍第一条命令,与类相关的,dump 这个词翻译过来就是仓库的意思,意思则是,把现在运行的类进行进一步的储存,存在本地硬盘.

作用是将已加载类的字节码文件保存到特定目录:logs/arthas/classdump/实际上指将现在运行的类,将文件提取出来,存到本地的硬盘上面

之后就可以在这个目录下找到文件

参数

数名称

参数说明

class-pattem

类名表达式匹配

[c:]

可以指定类所属ClassLoader的hashcode

[E]              

[A]开启正则表达式匹配,默认为通配符匹配

很多命令都使用[E]来进行匹配表达


二、举两个例子来说明存储问题

1.假设 Java,按string类,首先可以把它的字节码文件给它存下来。那可以先看一下一个目录,显示log时候,先进到log路线。然后里面有个class,那这时候把这里面的一些东西全部删了,先不要使文件里不要有任何的东西。

image.png

把这两步给它给删掉,这个目录现在空了,过一分钟就又会有新的东西出来。现在想把 java 给删掉,字节码文件提取出来,保存在刚刚的那个目录下面。显示如下

image.png

保存的路径在这个目录,那就是刚刚删掉的一个文件夹下面。现在就可以在这边来看一下,显示java,那再进到java里面。在这时就可以看到这个简化了,这个class文件提取出来放在这个地方了,还获取到了码文件。

再回到上面,就会了解,在加法当中,这个包其实就是文件夹,所以它是由三级目录组成。

此时便是需要的文件夹

把 String 类的字节码文件保存到-/logs/arthas/classdmp/目录下

dump Java.lang.String

把demo包下所有的类的字节码文件保存到-/1ogs/arthas/classdunp/目录下

dump demo.

首先先进到logs 盘然后就能实行Java string的运算

代码运算结果如下

Last login:Fri Har 20 14:28:43 2020 froe 192.168.254.1

[root@heima~]# cd.arthas/lib/3.1.7/arthas/

[root@heima arthas]#cd        1

[root@heina-]# 1s

anaconda-ks.cfg arthas-output               bbb  Hello.class logs         mydate.log HyToncat.java

arthas-boot.jar arthas-packaging-3.1.7-bin.zip deno Hello.java RathGare.java my-demo.jor

root@heima ~]# cd logs/

root@heima logs]# 1s

rthas arthas-cache

[root@heima logs]# cd arthas

[root@heima arthas]# 1s

arthas.log arthas.log.2020-03-19.0 classdunp

[root@heima arthas]# cd classdump

[root@heima classdump]# 1s

把代码存在刚刚的目录下面

此时,便可以显示classloader 的字样

保存的路径可

2.运行新的 Java。

可以用stick。如果使用通配符的话,这就意味着可以取这个包下面所有的类。那有时候有些包里面类特别多,这时就可以用通配符一次性的去除所有的类文件,这个就比较容易。此时,就比较清晰的可以看到,那加载器以及内加载器是哪一个?提取出来以后放在哪个目录下面呢?建一个类加载器为名字的。这就是一个文件夹,然后一个短横,后面会建立起新的文件夹。

root@heina classdunp]# 1s

java

[raot@heima classdunp]= ed java

[root@heima java]: is

lang

[root@heima java]" cd lang/

[root@heima lang)= is

string.class

[root@heima lang]" cd..

root@heina java)= cd ..

[root@heina classdump]# 1s

Java

[root@heima classdump]= |

此时的类清晰可见


三、小节

通过上面两个例子,可以了解到dump的作用,此时通过 dump 可以了解更多

dump 作用:将正在 JVM 空运行的程序的字节码文件提取出来,保存在 logs 相应的目录下,不同的类加载器放在不同的目录下。

相关文章
|
云安全 安全 网络安全
80和443端口的作用以及遇到CC攻击该怎么办
80和443端口都是用于网站业务,那么这两个端口是有什么区别呢?
|
10月前
QScopedPointer
QScopedPointer 是 Qt 提供的一个智能指针类,用于在对象离开作用域时自动释放堆内存。它可以管理单个对象或数组,但在使用数组时需要注意,直接使用 `new[]` 分配的数组无法正确析构,因为 QScopedPointer 内部仅调用 `delete` 而非 `delete[]`。示例代码展示了如何使用 QScopedPointer 管理单个对象和数组,但数组的使用方式存在潜在问题。
|
iOS开发 Perl
解决Xcode15报错:DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY_SEARCH_PATHS
解决Xcode15报错:DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY_SEARCH_PATHS
649 1
|
前端开发 开发者 UED
前端只是切图仔?来学学给开发人看的UI设计
该文章针对前端开发者介绍了UI设计的基本原则与实践技巧,覆盖了布局、色彩理论、字体选择等方面的知识,并提供了设计工具和资源推荐,帮助开发者提升产品的视觉与交互体验。
|
11月前
|
网络协议 程序员 数据库
什么是公网IP和内网IP
【10月更文挑战第27天】公网IP与内网IP是网络通信中的两个重要概念。公网IP是互联网上的唯一标识,而内网IP仅在局域网内部有效,用于局域网内的设备通信。由于IPv4地址资源有限,通常一个公司或家庭只有一个公网IP,内部设备通过NAT(网络地址转换)技术共享该公网IP访问互联网。这样不仅节省了IP资源,还提高了网络安全性和稳定性。
958 0
|
监控 安全 Java
使用JMX监控Tomcat
【7月更文挑战第18天】
247 3
|
安全 Java 开发者
【笔记17】使用 jad 工具把 java 的 class 文件转换为 java 文件;使用 luyten 把 java 的 jar 包转换为 java文件
📃 我的代码被存放在公司的电脑上 📃 疫情原因使得我只能在家办公 📃 而公司已经被隔离了😂 (怕公司的电脑感染新冠病毒) 📃 我无法在公司代码的基础上继续编写代码 📃 我有两种选择:① 重新编写代码;② 跑路 📃 但是我选择了第三个选项:把 Java 项目打包后的 jar 文件转换为打包之前的 java 文件 📃 在这里我推荐两款工具,这两款工具都可以把 class 文件转换为 java 文件 🌼 ① jad 工具:可把 class 文件转换为 java 文件 【本文章的前四节是介绍 jad 工具的使用】 🌼 ② Luyten 工具:可把 jar 包转换为 java 文件
902 0
【笔记17】使用 jad 工具把 java 的 class 文件转换为 java 文件;使用 luyten 把 java 的 jar 包转换为 java文件
|
消息中间件 数据采集 网络协议
谈谈嵌入式系统中多进程设计与进程通信
谈谈嵌入式系统中多进程设计与进程通信
227 0
谈谈嵌入式系统中多进程设计与进程通信
计算机组成原理——浮点数加减运算&强制类型转换
计算机组成原理——浮点数加减运算&强制类型转换
1235 0
计算机组成原理——浮点数加减运算&强制类型转换
|
JSON 监控 算法
使用GraalVM Native Image将Java Swing应用Native化
Java Swing背景        Java Swing是从1.6时代开始成熟的Java桌面应用GUI框架,也是以前大学里做算法毕设时走Java栈码农的必备开发能力之一。虽然现如今Java的桌面端能力已有多种更优秀的替代方案,例如JavaFX、Eclipse RCP等,但作为经典GUI框架,Swing以其简单的编码模式、优秀的跨平台能力、JRE默认自带包以及较小的JAR分发包,一直是我的Jav
3282 0