首页 > 电脑

java虚拟机的运行原理是什么

更新时间2019-05-10 06:52:23

 首先我想从宏观上介绍一下java虚拟机的工作原理。从最初的我们编写的java源文件(.java文件)是如何一步步执行的,如下图所示,首先java源文件经过前端编译器(javac或ECJ)将.java文件编译为java字节码文件,然后JRE加载java字节码文件,载入系统分配给JVM的内存区,然后执行引擎解释或编译类文件,再由即时编译器将字节码转化为机器码。主要介绍下图中的类加载器和运行时数据区两个部分。java虚拟机的运行原理是什么

  • 类加载

  类加载指将类的字节码文件(.class)中的二进制数据读入内存,将其放在运行时数据区的方法区内,然后在堆上创建java.lang.Class对象,封装类在方法区内的数据结构。类加载的最终产品是位于堆中的类对象,类对象封装了类在方法区内的数据结构,并且向JAVA程序提供了访问方法区内数据结构的接口。如下是类加载器的层次关系图。

java虚拟机的运行原理是什么

    • 启动类加载器(BootstrapClassLoader):在JVM运行时被创建,负责加载存放在JDK安装目录下的jrelib的类文件,或者被-Xbootclasspath参数指定的路径中,并且能被虚拟机识别的类库(如rt.jar,所有的java.*开头的类均被Bootstrap ClassLoader加载)。启动类无法被JAVA程序直接引用。
    • 扩展类加载器(Extension ClassLoader):该类加载器负责加载JDK安装目录下的jrelibext的类,或者由java.ext.dirs系统变量指定路径中的所有类库,开发者也可以直接使用扩展类加载器。
    • 应用程序类加载器(AppClassLoader):负责加载用户类路径(Classpath)所指定的类,开发者可以直接使用该类加载器,如果应用程序中没有定义过自己的类加载器,该类加载器为默认的类加载器。
    • 用户自定义类加载器(User ClassLoader):JVM自带的类加载器是从本地文件系统加载标准的java class文件,而自定义的类加载器可以做到在执行非置信代码之前,自动验证数字签名,动态地创建符合用户特定需要的定制化构建类,从特定的场所(数据库、网络中)取得java class。



运行原理就是:当程序员写好了一个java文件之后,进入cmd控制界面编译,此时会出现一个class文件,就是我们的目标码文件,当我们把这个文件拷贝到任何操作系统上,运行的时候,这个平台的特定java虚拟机就会翻译成这个平台的可执行程序的java文件,然后执行。

相关标签:java

上一篇:VB编写程序,定义一个动态数组,找出该数组中每一列绝对值最大和最小的元素及其所在的行号。

下一篇:javaphppython这三个哪个学习起来更容易上手