欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

JVM,

来源: javaer 分享于  点击 24012 次 点评:194

JVM,


这里和大家简单分享一下JAVA和JVM运行的原理,Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器中解释执行,而JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器

JAVA和JVM运行的原理

1.Java语言运行的过程

Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器中解释执行。

也相当与

注:JVM(java虚拟机)包括解释器,不同的JDK虚拟机是相同的,解释器不同。

2.JVM:

JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。

java编译器只要面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。

JVM执行程序的过程 :

I.加载。class文件

II.管理并分配内存

III.执行垃圾收集

JRE(java运行时环境)由JVM构造的java程序的运行环境 

 

 

JVM

 jvm:  分两个子系统:Class loader(类装载器子系统)和execution engine(执行引擎子系统)
        包括两个组件:runtime data area(运行时区域组件)和 native interface(本地接口组件)
 运行原理:
        Class loader 根据全限定类名(如:java.lang.Object)加载class文件,字节码文件。
        放到runtimedata area中的method area当中。相当于放到内存当中。
        execution engine(相当于计算机的CUP) 执行class文件中的指令。
  java 程序员可以extends java.lang.ClassLoader 来写自己的Class loader类加载器
        
两个组件:
native interface:
 本地接口组件,与本地库交互native libraries,是与其他语言交互的接口。不再受jvm的控制。所以也很容易出现 native heap outofmemory exception。

 runtimedata area 包括
(method area,存放被装载的java类对象,也就是字节码信息
heap,用来存放java实例对象
stack,用于存放每个运行的java线程的局部变量,操作数,中间结果,以及执行的上下文信息,结果集。(5.0之前的256k,之后为1M)
native method stack,保存本地方法进入区域地址
program counter register计数器。每个线程都有自己的PC寄存器,在该线程启动时创建。PC寄存器的内容总是指向下一条将被执行的指令地址,实现方式有两种,一种是PC寄存器+1,一种是方法区中相对应于该方法起始指令的偏移量(可以理解为某一个数))
以上五部分,只有heap和method area是被所有线程所共享使用的。
而java stack,program counter,native interface 是以线程为粒度,每个线程拥。有自己的部分

相关文章

    暂无相关文章
相关栏目:

用户点评