Class字节码解析:理解ClassFile结构

Class字节码解析:理解ClassFile结构

Class文件格式

阅读class字节码文件

阅读“虚拟机汇编语言”表示的Java类

❤Class文件是JVM的输入,Java虚拟机规范中定义了Class文件的结构。Class文件是JVM实现平台无关、技术无关的基础

Class文件是一组以8字节为单位的字节流,各个数据项目按顺序紧凑排列

  1. Class文件格式里面只有两种类型:无符号数、表

(1)无符号数:基本数据类型,以u1、u2、u4、u8来代表几个字节的无符号数

(2)表:由多个无符号数和起其他表构成的复合数据类型,通常以“_info”结尾

Class文件格式

javap工具生成非正式的“虚拟机汇编语言”,格式如下:

[[…]][]

是指令操作码在数组中的下标,该数组以字节码形式来存储当前方法的Java虚拟机代码;也可以是相对于方法起始处的字节偏移量

是指令的助记码、是操作数、是行尾的注释

挺难的!!!!!

阅读Class字节码:类定义和属性

阅读Class字节码:方法和方法调用

了解预定义attribute的含义

stack:方法执行时,操作栈的深度

Locals:局部变量所需的存储空间,单位是slot

slot是虚拟机为局部变量分配内存所使用的最小单位

args_size:参数个数,为1的话,因实例方法默认会传入this,locals也会预留一个slot来存放

(按照指令集顺序执行)

Class文件格式:重点是理解并能阅读字节码文件,以及用“虚拟机汇编语言”表示的Java类

---- The end of this article ----