在一个文件编译成class字节码文件之后,jvm在装载class文件的时候,jvm要在class中提取哪些相关信息?
jvm是怎么执行这些字节码文件呢?不明白其中的原理,请高手们详细解释一下!越详细越好~
在线等~!谢谢~!

解决方案 »

  1.   

    执行引擎处于JVM的核心位置,在Java虚拟机规范中,它的行为是由指令集所决定的。尽管对于每条指令,规范很详细地说明了当JVM执行字节码遇到指令时,它的实现应该做什么,但对于怎么做却言之甚少。Java虚拟机支持大约248个字节码。每个字节码执行一种基本的CPU运算,例如,把一个整数加到寄存器,子程序转移等。Java指令集相当于Java程序的汇编语言。  Java指令集中的指令包含一个单字节的操作符,用于指定要执行的操作,还有0个或多个操作数,提供操作所需的参数或数据。许多指令没有操作数,仅由一个单字节的操作符构成。  虚拟机的内层循环的执行过程如下: do{ 
    取一个操作符字节; 
    根据操作符的值执行一个动作; 
    }while(程序未结束)  由于指令系统的简单性,使得虚拟机执行的过程十分简单,从而有利于提高执行的效率。指令中操作数的数量和大小是由操作符决定的。如果操作数比一个字节大,那么它存储的顺序是高位字节优先。例如,一个16位的参数存放时占用两个字节,其值为:   第一个字节*256+第二个字节字节码。   指令流一般只是字节对齐的。指令tableswitch和lookup是例外,在这两条指令内部要求强制的4字节边界对齐。 
      

  2.   

    JVM首先把class字节码文件装载到方法区,那当new一个类对象时,它是不是根据成员变量所占的字节数,成员方法所占的字节数来分配内存呢?当调用这个方法的时候,它又是怎么定位的呢`!
      

  3.   

    java class字节码文件中的类与类之间是怎么样进连接的,怎么把这些类型组织成一张大网,当这个大网组成以后,它又是怎么进行迅速定位的呢?