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

     

  • 相关阅读:
    php实现抖音小程序支付
    SpringBoot【运维实用篇】
    javaWeb监听器Listener(三)定时清理session
    NetCore开发的分布式文件上传系统
    缓存技术:加速应用,提高用户体验
    前端实现克里金插值分析(一)
    定时器事件和随机数
    Spring中的依赖注入、setter与构造器注入、自动装配与集合注入详细描述及使用(XML版中篇)
    猿创征文 | Docker实战:Linux环境安装Tomcat安装步骤
    数学建模——相关系数
  • 原文地址:https://blog.csdn.net/jbkjhji/article/details/132799964