JVM、JDK、JRE

JAVA执行过程:

  Java源文件(*.java)---编译器(compiler)----->字节码文件(*.class)---解释器(interpreter)----->执行结果

JVM:

  结构:1.JVM指令系统

      JVM指令系统同其他计算机的指令系统极其相似。Java指令也是由操作码和操作数两部分组成。操作码为8位二进制数,

      操作数紧随在操作码的后面,其长度根据需要而不同。当长度大于8位时,操作数被分为两个以上字节存放。

      Java指令系统是以Java语言的实现为目的设计的,其中包含了用于调用方法和监视多线程系统的指令。

      Java的8位操作码的长度使得JVM最多有256种指令,已使用了160多种操作码。

       2.JVM寄存器

      所有的CPU均包含用于保存系统状态和处理器所需信息的寄存器组。JVM只设置了4个最为常用的寄存器。

      ①.pc程序计数器

      ②.optop操作数栈顶指针

      ③.frame当前执行环境指针

      ④.vars指向当前执行环境中第一个局部变量的指针

      所有寄存器均为32位。pc用于记录程序的执行。optop,frame和vars用于记录指向Java栈区的指针。

       3.JVM栈结构

      Java栈是JVM存储信息的主要方法。当JVM得到一个Java字节码应用程序后,便为该代码中一个类的每一个

      方法创建一个栈框架,以保存该方法的状态信息。每个栈框架包括以下三类信息:

      ①.局部变量:存储方法中的局部变量。vars寄存器指向该局部变量表的第一个局部变量

      ②.执行环境:保存解释器对Java字节码进行解释过程中所需的信息(上次调用的方法、局部变量指针、和

             操作数栈的栈顶和栈底指针)

      ③.操作数栈:存储运算所需操作数以及运算的结果

     4.JVM碎片回收堆

      Java类的实例所需的存储空间是在堆上分配的。解释器具体承担为类实例分配空间的工作。解释器在为一个实例

      分配完存储空间后,便开始记录对该实例所占内存区域的使用。一旦对象使用完毕,便将其回收到堆中

     5.JVM存储区

      JVM有两类存储区:

        常量缓冲池:存储类名称、方法和字段名称以及串常量

        方法区:存储Java方法的字节码

  原理:JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种基于下层的操作系统和硬件平台并        

              利用软件方法来实现的抽象的计算机,可以在上面执行java的字节码程序。

              java编译器只需面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译器,编译成字节码程序,通过    

              JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。

  装载:JVM是Java程序运行的容器,但是他同时也是操作系统的一个进程,因此他也有他自己的运行的生命周期,也有自己

     的代码和数据空间。

     JVM在整个jdk中处于最底层,负责与操作系统的交互,用来屏蔽操作系统环境,提供一个完整的Java运行环境,因此

     也就虚拟计算机.操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境。

         ①.创建JVM装载环境和配置

     ②.装载JVM.dll

     ③.初始化JVM.dll并挂接到JNIENV(JNI调用接口)实例

     ④.调用JNIEnv实例装载并处理class类

  执行过程:1.加载.class文件

       2.管理并分配内存

       3.执行垃圾回收集

JDK:Java Development Kit(Java开发工具包)-----自行开发Java软件

JRE:Java Runtime Environment(Java运行时环境)-----运行Java程序或Applet

JDK、JRE、JVM三者关系:JDK包含JRE和Tools(工具类),JRE包含核心类库和JVM

关系图:

 

posted on 2016-03-29 12:32  禁忌夜色  阅读(315)  评论(0编辑  收藏  举报

导航