• 技术文章 >java >java基础

    java之JVM的字节码结构

    小妮浅浅小妮浅浅2021-06-28 09:51:17原创2240

    1、魔数

    所有.class文件的前四个字节都是魔数,魔数的固定值为0xCAFEBABE。魔数放在文件的开头,JVM可以根据文件的开头判断这个文件是否有可能是.class文件。如果是这样的话,之后的操作会继续下去。

    2、版本号

    版本号为魔数后的4个字节,前2个字节显示下一个版本号,后2个字节显示主版本号。

    主版本号后的字节是常量池入口。在常量池中保存两种常量:字面量和符号引用。字面量在代码中声明为Final的常量值,符号引用类别和界面的全局限定名、字段的名称和说明符、方法的名称和说明符。常量池整体分为常量池计数器和常量池数据区两部分。

    3、常量池

    常量池结束后的两个字节,描述了这个Class是类还是界面,以及是否用Public、Abstract、Final等装饰符装饰。

    4、访问标志

    常量池结束之后的两个字节,描述该Class是类还是接口,以及是否被Public、Abstract、Final等修饰符修饰。

    5、当前类名

    访问标志后的两个字节,描述的是当前类的全限定名。这两个字节保存的值为常量池中的索引值,根据索引值就能在常量池中找到这个类的全限定名。

    6、父类名称

    当前类名后的两个字节,描述父类的全限定名,同上,保存的也是常量池中的索引值。

    7、接口信息

    父类名称后为两字节的接口计数器,描述了该类或父类实现的接口数量。紧接着的n个字节是所有接口名称的字符串常量的索引值。

    8、字段表

    字段表用于描述类和接口中声明的变量,包含类级别的变量以及实例变量,但是不包含方法内部声明的局部变量。

    以上就是java之JVM字节码结构的介绍,希望对大家有所帮助。更多Java学习指路:Java基础

    本教程操作环境:windows7系统、java10版,DELL G3电脑。

    专题推荐:java jvm 字节码
    上一篇:java中instanceof运算符是什么 下一篇:Java集合框架Arrays的介绍

    相关文章推荐

    • pycharm找不到jvm解决方法• java基础中JRE、JDK、JVM是什么?• java之JVM面试题整理• java之JVM各类机制整理• java之如何获取jvm的源码?• Java之jvm的执行程序过程• Java字节码中jvm的使用• java之JVM方法区的用法• java中jvm关闭的几种情况• java之JVM指令系统是什么?• Java字节码执行的两种方式• java之jvm两种存储区的类型• java之jvm加载器有几种?• java中JVM运行时的内存整理• java字节码是什么• java如何反编译字节码文件

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网