jvm——class类文件的结构】的更多相关文章

class类文件并不一定以磁盘的形式存在,也可以是由类加载器直接生成的二进制流,他其实是一种数据结构,类似于c语言结构体,这种数据结构只有两种数据类型:无符号数和表. 1.魔数:类似于文件拓展名,CAFEBABE表示这个是一个class文件 2.版本号:前两个字节是次版本号,后两个字节是主版本号,虚拟机拒绝执行超过其版本号的class文件 3.常量池计数值:0x0016表示有21项常量值,索引1~21,第0 项表示当某数据不引用任何一个常量池项目时索引为0 4.常量池包括字面量和符号引用.07表…
概述 class类文件的结构可见下面这样图(出处见参考资料),可以参照下面的例子,对应十六进制码,找出找出相应的信息. 其中u2 , u4 表示的意思是占用两个字节和占用四个字节,下面我们将会各项说明. class类文件结构 Class 文件是一组以8 字节位单位的二进制流,各个数据按照一定的顺序排放,Class文件采用一种类似于C语言结构体的伪结构来存储数据. 例如下面代码使用java编译后,生成的class 文件. public class TestClass { private int m…
一.类文件的结构 我们都知道,各种不同平台的虚拟机,都支持 "字节码 Byte Code" 这种程序存储格式,这构成了 Java 平台无关性的基石.甚至现在平台无关性也开始演变出 "语言无关性" ,就是其他语言也可以运行在 Java 虚拟机之上,比如现在的 Kotlin.Scala 等. 实现语言无关性的基础仍然是虚拟机和字节码存储格式,Java 虚拟机步包括 Java 语言在内的任何语言绑定,他只和 "Class 文件" 这种特定的二进制文件格…
①无关性的基石 “与平台无关的”得理想最终实现在操作系统的应用层上:Sun公司和其他虚拟机提供商发布了许多可以在各种不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关的字节码,从而实现了程序的“一次编写,处处运行”. 虚拟机的两种中立特性:一是平台无关性:字节码是构成平台无关性的基石:另一种是语言无关性,这也是要实现的,在java虚拟机上可以运行其他的语言.实现语言无关性的基础仍然是虚拟机和字节码存储格式. 虚拟机不会和任何语言绑定,它只与“Class文件”这种特定的二进文件格式所关联…
配置classpath 根据path环境变量的原理,可以定义一个名为classpath环境变量,将要运行的class文件所在目录定义在该变量中. 例:set classpath=c:\ classpath变量值是java类文件的目录 path变量是windows程序文件的目录 JVM查找类文件的顺序: 如果没有配置classpath环境变量,JVM只在当前目录下查找要运行的类文件. 如果配置了classpath环境,JVM会先在classpath环境变量值的目录中查找要运行的类文件. 值的结尾处…
Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑的排列在Class文件中,中间没有任何分隔符.Class文件的结构只有两种数据类型:无符号数和表.无符号数以u1.u2.u4和u8来代表1个字节.两个字节.四个字节和八个字节的无符号数,可以用来描述数字.索引引用.数值量或者按UTF-8编码的字符串值.表是有多个无符号数或者其他表作为数据项构成的复合数据类型,习惯性以“_info”结尾.下面是Class文件的结构: 类 型 名 称 数 量 u4 magic 1 u2…
Class文件是以8位字节为基础单位的二进制流,各部分中间没有分隔符.遇到8位字节以上的空间数据项时,则会按照高位在前的方式分割成若干个8位字节进行存储. Class文件采用类似C语言的伪结构体来存储,这种伪结构体只有两种数据类型:无符号数和表.无符号数以u1,u2,u4,u8四种,数字代表字节数.可以用来描述数字.索引引用.数量值或者按照UTF-8编码构成字符串值.表是由多个无符号数或其他表作为数据项构成的复合数据类型,所有表习惯以“info”结尾.表用于描述有层次关系的复合结构数据,整个Cl…
JVM查找类文件的顺序: 在doc下使用set classpath=xxx, 如果没有配置classpath环境变量,JVM只在当前目录下查找要运行的类文件. 如果配置了classpath环境,JVM会先在classpath环境变量值的目录中查找要运行的类文件. 值的结尾处如果加上分号 " ; ",那么JVM在classpath目录下没有找到要指定的类文件,会在当前目录下在查找一次. 值的结尾出如果没有分号" ; ",那么JVM在classpath目录下没有找到要指…
字节码是构成Java平台无关性的基石.实现语言无关性的基础是虚拟机和字节码存储格式. Java语言中的各种变量.关键字和运算符的语义最终是由多条字节码命令组成,因此字节码命令所能提供的语义描述能力肯定会比Java语言本身更强大.   Class类文件的结构         Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件中,中间没有添加任何分隔符,所以整个Class文件中存储的内容基本上程序运行中必要的数据.         当遇到需要占用8…
一.实现“平台无关性” 字节码(ByteCode)存储格式和虚拟机是实现语言无关性的基础.Java虚拟机不和包括Java在内的任何语言绑定,它只与“Clas”文件这种特定的二进制文件格式所关联,Class文件中包含了Java虚拟机指令集和符号表以及若干其他辅助信息.Java中的各种变量.关键字和运算符的语义最终都是由多条字节码命令组合而成的,因此字节码命令所能提供的语义描述能力肯定会比Java本身更加强大. 二.Class类文件的结构 Class文件是一组以8位字节为基础单位的二进制流,各个数据…