
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
Java编程开发语言随着互联网的不断发展而被越来越多的程序员掌握,今天我们就通过案例分析来简单了解一下,Java程序员需要掌握哪些虚拟机基础知识。
1、语言无关性
实现语言无关性的基础仍然是虚拟机和字节码存储格式。
Java虚拟机不与包括Java语言在内的任何程序语言绑定,它只与"Class"文件这种特定的二进制文件格式所关联。
虚拟机丝毫不关心Class的来源是什么语言,它与程序语言之间的关系与下图所示:
每个Class文件的头4个字节被称为魔数(0xCAFEBABE),它的作用是确定这个文件是否为一个能被虚拟机接受的Class文件。
2、常量池
常量池中主要存放两大类常量:字面量和符合引用。
字面量比较接近于Java语言层面的常量概念,如文本字符串、被声明为final的常量值等。
符号引用则属于编译原理方面的概念,主要包括下面几类常量:
被模块导出或者开放的包
类和接口的全限定名
字段的名称和描述符
方法的名称和描述符
方法的句柄和方法类型
动态调用点和动态常量
3、访问标志
在常量池结束之后,紧接着的2个字节代表访问标志,用于标识一些类或者接口的层次的访问信息。
包括:这个Class是类还是接口;是否定义为public类型;是否定义为abstract类型;如果是类的话,是否被声明为final...等等。
4、类索引、父类索引与接口索引集合
类索引和父类索引都是一个u2类型的数据(u1、u2、u4、u8分别表示1byte、2byte、4byte、8byte)。
而接口索引集合是一组u2类型的数据的集合,Class文件中由这三项数据来确定该类型的继承关系。
5、字段表集合、方法表集合、属性表集合
字段表用于描叙接口或者类中声明的变量,方法表用于描述方法,属性表用于描述类、方法、接口或字段的属性。
6、字节码指令
无
7、类加载的时机
一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历如下其他阶段:
加载、验证、准备、解析、初始化、使用和卸载,其中验证、准备、解析三个阶段统称为连接。
加载、验证、准备、初始化和卸载这五个阶段的顺序时确定的,而解析阶段则不一定:
它在某些情况下可以在初始化阶段之后再开始,这是为了支持Java语言的运行时绑定特性。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。