JVM 相关概念
JVM: java virtual machinejava 虚拟机 ,是一个虚构出来的机器,通过在实际的计算机上仿真模拟各种计算机功能来实现的。
Java虚拟机有自己完善的硬件架构,如:处理器,堆栈,寄存器等,还具有相应的指令系统。
JVM屏蔽了与具体操作系统平台相关的信息,使得java程序只需生成在jvm上运行的目标代码(字节码),就可以在多种平台上不加修改的运行。
字节码:通常是指已经经过编译,但与特定机器码无关,需要直译器转译后才成成为机器码的中间代码。
字节码通常不像源码一样可以让人阅读,而是编码后的数值常量、引用、指令等构成的序列。
字节码主要为了实现特定软件运行和软件环境,硬件环境无关。字节码的实现方式是通过编译器和虚拟机器。
编译器将源码编译成字节码,特定平台上的虚拟机器将字节码转义为可以直接执行的指令,字节码典型的应用是java语言。
在java里面是java文件编译后的class文件
源码---> 编译器---->字节码---->虚拟机---->机器码--->运行
class文件的格式:
ClassFile { u4 magic;---------------------------------------->每个class文件的前4个字节被称为他的魔数(magic number):0xCAFEBABE,魔数的作用在于可以轻松的分辨出java class和非java class文件。 u2 minor_version;-------------------------------->次版本号 u2 major_version;-------------------------------->主版本号,通常只有定了主版本号和一系列的此版本号之后,JVM才会读取Class文件。如果Class文件的版本号超出了JVM的处理范围,JVM不会处理该文件。 u2 constant_pool_count; cp_info constant_pool; u2 access_flags; u2 this_Class; u2 super_Class; u2 interfaces_count; u2 interfaces; u2 fields_count; field_info fields; u2 methods_count; method_info methods; u2 attributes_count; attribute_info attributes; }
页:
[1]