1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 深入理解JAVA虚拟机-类文件结构及加载

深入理解JAVA虚拟机-类文件结构及加载

时间:2023-08-02 08:36:51

相关推荐

深入理解JAVA虚拟机-类文件结构及加载

在现代编译器中通常会有前端,优化器和后端,前段可以输入不同的语言,后端可以基于目标机器不同的硬件采用不同的后端模块输出。这就保证了编译器的通用性,或者说无关性。

在虚拟机中也是一样,虚拟机和字节码提供了虚拟的架构平台和数据存储格式,是实现语言无关性的基础。关于字节码,百度百科中是这样描述的:Java中,字节码是CPU构架(JVM)的具有可移植性的机器语言。[摘自java in a nutshell]。可以把字节码看成javac编译器编译的前段结果,是虚拟机这个“优化器+部分后端”的输入,由虚拟机进行解释(热点代码会由JIT编译成机器码)。

虚拟机工作的基本单位就是字节码,无论是类、对象、变量等都是由一个一个的class文件组合而成,而这个class文件是一个结构体,以下为部分源码:

public class ClassFile {//魔数magic的类型是u4,4个字节CA FE BA BE//cafebaye是class文件开始的标志public final static int JAVA_MAGIC = 0xCAFEBABE;//每一种名称都有对应的类型--->代表字节大小,因为class内是不对齐没空格的//依次用tag标记当前是何种类型、方法、版本,以便于验证语法和语义、安全性检查等等public final static int CONSTANT_Utf8 = 1;public final static int CONSTANT_Unicode = 2;public final static int CONSTANT_Integer = 3;public final static int CONSTANT_Float = 4;public final static int CONSTANT_Long = 5;public final static int CONSTANT_Double = 6;public final static int CONSTANT_Cla

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。