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 类的权限定名:反编译已加载的源码。
相关推荐
书院门前细致的苹果11 小时前
JVM 全面详解:深入理解 Java 的核心运行机制
java·jvm
稻草人想看远方12 小时前
GC垃圾回收
java·开发语言·jvm
我真的是大笨蛋14 小时前
从源码和设计模式深挖AQS(AbstractQueuedSynchronizer)
java·jvm·设计模式
我真的是大笨蛋17 小时前
G1 垃圾收集器深入解析
java·jvm·笔记·缓存
好多1719 小时前
《JVM如何排查OOM》
开发语言·jvm·python
getdu1 天前
JVM第一部分
jvm
海梨花1 天前
字节一面 面经(补充版)
jvm·redis·后端·面试·juc
Mr_Xuhhh1 天前
项目-sqlite类的实现
java·jvm·sqlite
佛祖让我来巡山1 天前
深入理解Java对象:从创建到内存访问的JVM底层机制
jvm·对象创建过程·对象是如何创建的