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 类的权限定名:反编译已加载的源码。
相关推荐
用户094248568031 小时前
第11章:OpenJDK反射、动态代理与 MethodHandle 初探
java·jvm
wuminyu2 小时前
纯轻量级锁体系下C2编译器锁粗化和消除机制剖析
java·linux·c语言·jvm·c++
binqian2 小时前
【java】Java 两种锁机制与线程阻塞唤醒原理
jvm·spring boot·spring
香吧香13 小时前
java服务异常日志只打印异常类型,没有堆栈定位分析
java·jvm·异常
程序员黎剑14 小时前
JVM-元空间溢出-OutOfMemoryError-Metaspace排查与解决
jvm
11路没有终点21 小时前
Java 微服务性能调优:jstack/jmap/jstat 三剑客实战指南
jvm·性能测试
wuminyu1 天前
Markword在紧凑对象头上的实现原理剖析
java·linux·c语言·jvm·c++
Flynt2 天前
Java 27 升级实测:默认值动得比新特性多,有个老参数会让 JVM 直接起不来
java·jvm·后端
用户094248568032 天前
第10章:OpenJDK异常体系、栈轨迹与错误诊断入门
java·jvm
杨杨杨大侠2 天前
Java 不再需要 JVM?一文看懂 GraalVM Native Image、Substrate VM 与 JDK
java·jvm·java ee