关闭

走进JAVA虚拟机(一) -------Java虚拟机的体系架构

705人阅读 评论(0) 收藏 举报
分类:

走进JAVA虚拟机(一)

             -------Java虚拟机的体系架构

说起Java这门语言,很多人都知道它具有跨平台的特性,真正做到了“一次编译,到处运行”。而Java能做到与具体平台的无关性则要归功于Java虚拟机,Java虚拟家如同一个翻译家,将同样的Java代码翻译成不同平台认同的相对应指令运行。那么这么一个能力超强的“翻译大家”又是如何工作的呢,我们先从Java虚拟机的体系结构谈起,整体上做个认识,看看庐山真面目!

Java虚拟机有五部分组成,分别是JVM字节码指令集、类加载器、执行引擎、内存区、本地方法栈。其体系结构如下图所示:

  

 

提醒:javac编译器不是Java虚拟机的一部分,它是把java源文件编译成字节码文件作为JVM运行的“原材料”。

下面简单介绍一下Java虚拟机这五部分的功能:

 JVM字节码指令集:能被JVM解析执行的指令集合。

 ‚类加载器:把字节码文件读取到虚拟机内存中。

      ③执行引擎:解析Java虚拟机的字节码指令并执行得到结果,相当于实际机器上的CPU

     ④内存区:存储程序运行时的一些数据。

     ⑤本地方法栈:为虚拟机调用本地方法(native)服务。

JVM执行字节码指令是基于栈的架构,也就是说所有的操作数必须入栈,然后根据指令中的操作码选择从栈顶弹出若干个元素进行计算后在将结果压入栈中。

JVM中操作数可以存放在每一个栈帧中的一个本地变量集中,即每个方法调用时就会再给这个方法分配一个本地变量集,这个本地变量集在编译时就已经确定,所以操作数入栈可以直接是常量入栈或者从本地变量集中取一个变量压入栈中。这和基于寄存器的操作数有所不同。

那么JVM架构为何要基于栈来设计呢?

一是因为JVM要设计成平台无关的,而平台无关性就要保证在没有或者有很少寄存器的机器上也要同样能正确地执行Java代码,如果基于寄存器来设计JVM架构则很难做到这一点。二是因为指令的紧凑性。由于Java字节码可能在网络上传输,故设计JVM字节码指令集时必须考虑到class文件的大小。

执行引擎的架构设计:每当创建一个新的线程时,JVM会为这个线程创建一个Java栈,同时会为这个线程分配一个PC寄存器,并且这个PC寄存器会指向这个线程的第一行可执行代码。每当调用一个新方法时会在这个栈上创建一个新的栈帧数据结构,这个栈帧会保留这个方法的一些元信息,如这个方法中定义的局部变量,一些用来支持常量池的解析、正常方法返回以及异常处理机制等。

 

 

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

从操作系统进程的角度理解 Java 虚拟机

java 是一个 windows 的命令行的外部命令,其实对应了一个应用程序,这个程序就是 javahome/jre/bin 中的 java.exe,java 这个应用程序启动的时候,windows ...
  • zhaoyw2008
  • zhaoyw2008
  • 2013-07-08 12:11
  • 1512

深入理解java虚拟机(一):java内存区域(内存结构划分)

图一:java内存结构划分 由上图可知,java内存主要分为6部分,分别是程序计数器,虚拟机栈,本地方法栈,堆,方法区和直接内存,下面将逐一详细描述。 1、程序计数器 线程私有,即每个线程都会有一个...
  • MINEZHANGHAO
  • MINEZHANGHAO
  • 2014-02-18 17:45
  • 20003

Java 虚拟机基本结构介绍

java虚拟机的基本结构如图所示:基本的结构有8个 类加载子系统: 主要负责负责加载Class信息,加载的类信息都存放在方法区的类存空间中。 当JVM使用类加载器装载某个类时,它首先要定位对应的c...
  • qq_33048603
  • qq_33048603
  • 2016-08-10 10:33
  • 1733

理解Java虚拟机体系结构

转载自:https://www.cnblogs.com/lao-liang/p/5110710.html 1 概述   众所周知,Java支持平台无关性、安全性和网络移动性。而Java平台...
  • ahou2468
  • ahou2468
  • 2017-12-28 16:42
  • 45

Java 虚拟机体系结构

Java 虚拟机体系结构 类装载子系统 Java虚拟机有两种类装载器,分别是启动类装载器和用户自定义装载器。 通类装载子系统通过类的全限定名(包名和类...
  • WeiJiaXiaoBao
  • WeiJiaXiaoBao
  • 2016-03-04 11:21
  • 277

理解Java虚拟机体系结构

转自:http://www.cnblogs.com/lao-liang/p/5110710.html 1 概述   众所周知,Java支持平台无关性、安全性和网络移动性。而...
  • xiao_jun_0820
  • xiao_jun_0820
  • 2016-03-25 18:07
  • 504

Java虚拟机体系结构 - 平台无关性

为什么要平台无关:         由于编译后的Java的可执行二进制文件(.class文件),能够在不加改变地运行于多个平台,因此,Java技术在网络环境下非常有用。另外,在嵌入式的世界,Java...
  • zhizhiahappy
  • zhizhiahappy
  • 2015-04-27 17:38
  • 273

《深入理解java虚拟机》学习笔记8——Tomcat类加载器体系结构

Tomcat 等主流Web服务器为了实现下面的基本功能,都实现了不止一个自定义的类加载器: (1).部署在同一个服务器上的两个web应用程序所使用的java类库可以相互隔离。 (2).部署...
  • yangxi_001
  • yangxi_001
  • 2013-12-04 15:36
  • 538

Java虚拟机的体系结构

java虚拟机由如下五个部分组成:     一组指令集    一组寄存器   一个栈   一个无用单元收集堆   一个方法区 1.Java指令集    Java虚拟机支持大约248个字节...
  • CodeMyDream
  • CodeMyDream
  • 2016-12-23 10:23
  • 279

Java虚拟机体系结构 - 访问策略1

策略: Java安全体系结构的优点之一就是:代码可以被授予只对它需要的资源进行访问的有限权限。即使一些恶意的或者有漏洞的代码得到了认证,它也会很少有机会进行破坏。为了实现这种细粒度的访问,Java访问...
  • zhizhiahappy
  • zhizhiahappy
  • 2015-04-30 21:19
  • 359
    个人资料
    • 访问:241442次
    • 积分:1576
    • 等级:
    • 排名:千里之外
    • 原创:42篇
    • 转载:0篇
    • 译文:0篇
    • 评论:75条
    最新评论