zoukankan      html  css  js  c++  java
  • JVM初探之类文件结构

    java 的 .class 文件字节码如图:

    Class 文件是一组以8字节为基础单位的二进制流,各个数据项目有着严格的结构。下面我们介绍下class文件的结构。

    魔数
      class文件的头4个字节是魔数:  ,他的作用便是验证这个文件是否是一个java虚拟机可以使用的文件,

    版本号

      接下来的是两个字节的小版本号,和两个字节的大版本号:  

    常量池结构

      它分为两个部分:

    第一部分是:常量池的容量:  即二进制 54 ,代表了 53 项常量,注意这里的容量计数是从 1 开始的即索引范围是 1 ~ 53。

    第二部分是:常量池的内容:常量池有的项目类型

                  CONSTANT_Utf8_info     1    UTF-8 编码的字符串

                  CONSTANT_Integer_infor   3    整型字面量

                        ...      

                  CONSTANT_Class_infor     7      类或接口的符号引用

                        ...

    这些项目类型还有自己的结构,这里先不写出来了。这一部分的字节码如图:  

    就是常量池容量后面的 53 个常量,一大堆的字节。后面其实还有的。。。。 就到这里吧。

    访问标志

        常量池之后就是两个字节的访问标志,用于识别类或者接口层次的访问信息。

          一些访问标志:

                ACC_PUBLIC  0x0001    是否为 public 类型

                ...

    接下来是类索引、父类索引与接口索引集合

    字段表集合

    方法表集合

    属性表集合

    参考:深入理解java虚拟机  -- 周志明 著

  • 相关阅读:
    js对象方法
    重要的小知识点
    vs2017引用vue组件中文乱码
    单行文本溢出打点、多行文本溢出打点
    span和input布局时对不齐
    在思科三层交换机上配置DHCP,不同网段/VLAN间互通
    搭建ssm整合
    使用Redis
    MyBatis常用实现方式
    Java 面向对象
  • 原文地址:https://www.cnblogs.com/angell-N/p/6690529.html
Copyright © 2011-2022 走看看