03JVM_类加载

一、类加载与字节码技术

1. 类文件结构

2. 字节码指令

3. 编译期处理

4. 类加载阶段

5. 类加载器

6. 运行期优化

1.类文件结构

类文件结构

1.1 魔数magic

介绍

每个java class文件的前4个字节是魔数:0x CAFEBABE。魔数作用在于分辨出java class文件和非java class文件。

1.2 版本minor_version,major_version

介绍

4~7字节,表示类的版本00 34(16进制换算十进制是52),表示java8

51 java7

52 java8

53 java9

1.3 常量池

介绍

存放字面量(文本字符串,final常量)和符号引用(包名,类名)

①8~9字节,常量池计数器2个字节代表常量池的长度。00 23(十进制35)表示有1~34项。

②后面n个字节(1-常量池-1)就是常量池表,存放的是字面量(字符串,final常量值)和符号引用(类,方法,字段描述符)。

1.4访问标识和继承信息

1.access_flags :常量池结束后的2个字符就是访问标志

判断这个class是类还是接口...

经过查表知道00 21 是由0x0020+0x0001组合而成,所以是公共类

2.this_class :占2字节,当前类的名字是什么

00 03 表示常量池的#3项,需要从常量池读取

3.super_class :占2字节,父类的名字是什么。

00 04 表示常量池的#4项,需要从常量池读取

4. 接口集合

①interfaces_count:占2字节,实现接口的数量

00 00 没实现接口

②interfaces[interfaces_count]:占2字节,接口有哪些

1.5字段表集合

fields

字段表表示声明的变量,字段的名字,字段的类型是什么。通过引用常量池的常量描述

1.fields_count (字段计数器)

2个字节,表示成员变量的数量

2.fields[ ] 字段表

字段表结构

字段表含义

00 02:访问标志,查上表,私有的

00 05:字段名,查常量池 #5

00 06:字段数据类型,查常量池 #6

00 00: 属性计数器

00 02: 属性集合

1.6方法表集合

methods:

①指向常量池索引的集合。每一个method_info对应着一个类或接口的信息。

②方法的访问修饰符,方法的返回值,方法参数信息

1. methods_count 方法计数器

2个字节,方法的个数

00 02 :有2个方法

2. methods[ ] 方法表

存放方法信息的

详细的列表

1.7附加属性表集合

介绍

class文件的源文件名称...

相关推荐
东阳马生架构4 小时前
JVM实战—1.Java代码的运行原理
jvm
ThisIsClark6 小时前
【后端面试总结】深入解析进程和线程的区别
java·jvm·面试
王佑辉7 小时前
【jvm】内存泄漏与内存溢出的区别
jvm
大G哥9 小时前
深入理解.NET内存回收机制
jvm·.net
泰勒今天不想展开9 小时前
jvm接入prometheus监控
jvm·windows·prometheus
东阳马生架构1 天前
JVM简介—3.JVM的执行子系统
jvm
程序员志哥1 天前
JVM系列(十三) -常用调优工具介绍
jvm
后台技术汇1 天前
JavaAgent技术应用和原理:JVM持久化监控
jvm
程序员志哥2 天前
JVM系列(十二) -常用调优命令汇总
jvm