当前位置: 首页 > news >正文

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文件的源文件名称…

 

http://www.lryc.cn/news/164110.html

相关文章:

  • Mysql如何对null进行排序(mysql中null排序)
  • 【基础计算机网络1】认识计算机网络体系结构,了解计算机网络的大致模型(下)
  • vscode 画流程图
  • uniapp-一些实用的api接口
  • 合宙Air724UG LuatOS-Air LVGL API控件-表格(Table)
  • 前缀和思想
  • Llama2-Chinese项目:1-项目介绍和模型推理
  • 论文于祥读及复现——《VDO-SLAM: A Visual Dynamic Object-aware SLAM System》
  • nuxt3项目使用pdfjs-dist预览pdf
  • mybatis-generator-maven-plugin使用
  • 基于SpringBoot开发的停车位管理系统(调用百度地图api)
  • STC8单片机PWM定时器+EC11编码器实现计数
  • MediaBox助力企业一站式获取音视频能力
  • 仅做笔记用:Stable Diffusion 通过 ControlNet 扩展图片 / 扩图
  • 代码随想录算法训练营19期第49天
  • 用shell脚本实现一个对数组求和的函数,数组通过实参传递给函数,写一个函数,输出当前用户的uid和gid,并使用变量接收结果
  • 运算符,switch
  • 运行java命令出现 Error: Invalid or corrupt jarfile XXX.jar
  • 在找工作时的准备工作:结合现状,针对意向企业做好充分准备
  • 微服务·数据一致-事务与分布式事务
  • GO语言篇之CGO
  • LVS负载均衡群集(NAT模式、IP隧道模式、DR模式)
  • PCL 使用克拉默法则进行三点定圆(二维)
  • MCAL实战二(S32K324-NXP EB tresos GPT驱动配置详解)
  • Python 图形化界面基础篇:什么是 Tkinter 以及为什么选择它
  • Learning From Data 中英文对照 1.THE LEARNING PROBLEM (第7页)
  • 自己编译静态ffmpeg freetype2 not found问题解决
  • 基于 Python 的音乐流派分类
  • 代码随想录训练营第49天|121.买卖股票的最佳时机,122.买卖股票的最佳时机II
  • 1-3 AUTOSAR软件架构