JVM:字节码文件

文章目录

一、Java虚拟机的组成

二、字节码文件的组成

1、基本信息

魔数、字节码文件对应的Java版本号访问标识(public final等等)父类和接口。

2、常量池

保存了字符串常量、类或接口名、字段名主要在字节码指令中使用。

  • 常量池中的数据都有一个编号,编号从1开始。在字段或者字节码指令中通过编号可以快速的找到对应的数据。
  • 字节码指令中通过编号引用到产量池的过程称为符号引用。

3、字段

当前类或接口声明的字段信息。

  • 字节码中的方法区域是存放字节码指令的核心位置,字节码指令的内容存放在方法的Code属性中。

4、方法

当前类或接口声明的方法信息字节码指令

5、属性

类的属性、比如源码的文件名内部类的列表等。

三、常用的字节码工具

1、javap -v 命令

  • javap是JDK自带的反编译工具,可以通过控制台查看字节码文件内容。适合在服务器上查看字节码文件内容。
  • 直接输入javap查看所有参数。
  • 输入javap -v 字节码文件名称查看具体的字节码信息。(如果jar包需要先使用jar -vxf命令解压)。

2、jclasslib插件

  • jclasslib也有idea插件版本,建议开发时使用idea插件版本,可以在代码编译之后实时看到字节码文件内容。

3、阿里arthas

  • Arthas是一款线上监控诊断产品,通过全局视角实时查看应用load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,大大提升线上问题排查效率。
  • 官网:https://arthas.aliyun.com/doc/quick-start.html
  • dump 类的权限定名:dump已加载类的字节码文件到特定目录。
  • jad 类的权限定名:反编译已加载的源码。
相关推荐
X56612 分钟前
Python Django怎么处理404_关闭DEBUG模式并自定义配置全局404与500友好错误重定向页面
jvm·数据库·python
m0_748554814 分钟前
golang如何集成Etcd配置中心_golang Etcd配置中心集成方法
jvm·数据库·python
Jetev8 分钟前
Golang怎么做API网关_Golang API网关教程【总结】
jvm·数据库·python
m0_690825828 分钟前
Go语言如何发GET请求_Go语言HTTP GET请求教程【总结】
jvm·数据库·python
2301_7838486510 分钟前
HTML怎么处理右键菜单_HTML contextmenu自定义(已废弃)替代方案【指南】
jvm·数据库·python
iuvtsrt13 分钟前
HTML怎么提升首屏加载_HTML关键资源内联策略【说明】
jvm·数据库·python
iuvtsrt14 分钟前
如何添加超链接_a标签href属性详解【详解】
jvm·数据库·python
2401_8676239815 分钟前
CSS如何快速获取网页上的标准色值_借助开发者工具的取色器和色彩格式转换功能
jvm·数据库·python
zhaoyong22217 分钟前
JavaScript中骨架屏Skeleton在异步数据加载中应用
jvm·数据库·python
m0_5913647320 分钟前
C#怎么使用LINQ OrderBy排序 C#如何用LINQ对集合按多个字段进行升序降序排列【语法】
jvm·数据库·python