网站大量收购闲置独家精品文档,联系QQ:2885784924

《java虚拟机3.docVIP

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《java虚拟机3

Java虚拟机 1 虚拟机简介 1.1 起源 为了减轻编译过程中,中间语言向不同机器代码转换这一烦琐的任务,提出了虚拟机的思想,最早是在五十年代末的UNCOL方案中首先被提出来的,建议设计一个通用的中间语言,该语言的名字为UNCOL(universal computer oriented language),即面向通用计算机的中间语言。 中间语言的概念与抽象机的概念并不完全相同,中间语言可以看作是抽象机的汇编语言。 抽象机是具体计算机的理论模型。 Turing机 图灵 机械可计算 1.2 通用抽象机 七十年代的通用抽象机JANUS,其基本思想是:把对输入源语言的分析阶段(词法、语法、以及部分语义)与代码生成阶段分割开来。前一部分应该是与具体机器无关的,后一部分则涉及源语言的各种成分在不同的机器上如何实现的问题。 具体的计算机很多,差别很大等,实现起来较困难。 1.3 专用抽象机 为特定计算机设计的专用抽象机。 从通用抽象机到专用抽象机,表明人们的认识也有了提高,放弃了不切实际的目标,转而追求比较现实的目标。 1.4 面向语言的专用抽象机 这种AM只能用来实现和移植某一种特定的语言,许多著名的语言都有了自己的专用抽象机,如Pascal的P-CODE,ALGOL的Z-CODE等。 目的: (1) 便于移植 把这个系统用抽象机的方法重新实现一遍,然后再把用抽象机写的系统提供给用户,使用户只需花费实现一个小抽象机的代价就可得到整个系统。 (2) 获得高效率 在特殊的硬件模型上获得高效率。抽象机可视为硬件模型的软件映射,它是介于语言的语义和硬件物理实现之间的一个层次,是从该语言中抽出其基本功能而设计的一台直接执行这些基本功能的理想机器。 2 Java虚拟机概述 Java虚拟机(Java virtual machine,JVM)是面向语言的专用抽象机,它的设计主要是受了P-Code的影响,它和P-Code一样都是面向堆栈的机器,JVM的设计兼顾了软件的移植与硬件的执行效率,目前已有以JVM指令为机器指令的Java CPU。 Java语言之所以实现了平台中立,其根本原因在于各操作系统平台都配有Java虚拟机,虚拟机屏蔽了不同软硬平台之间的差异,它负责解释或及时编译执行Java字节码文件。 Java 虚拟机是一组有关指令系统、字节码格式等的规格说明。只要根据JVM的规格描述将解释移植到特定的计算机上,就能保证经过编译的任何Java代码都能在该机器上运行。 当说到“Java虚拟机”时,可能有以下三种解释: 抽象规范 一个具体的实现 一个运行中的虚拟机实例 当启动一个Java程时,一个虚拟机实例就诞生了;当该程序关闭,这个虚拟机实例也就随之消亡了。 图 Java平台结构 每个Java 虚拟机包含: 一个类装载子系统 一个执行引擎 运行时的数据区 Java虚拟机技术是Java平台的核心技术,涉及的范围很广,其中包括解释技术、及时编译技术、异常处理技术、多线程技术、内存管理与无用单元的回收技术等。 3 Java虚拟机的体系结构与设计 图 Java虚拟机的体系结构 公用设备: 寄存器、Java栈、对象堆、 方法区 JVM为每一个线程分配一个Java栈,及一个本地方法栈。 在JVM中,所有的线程共享一个方法区,一个对象堆。JVM用本地方法栈支持本地方法调用,若JVM不支持本地方法,该栈可省略。 方法区:它存储方法数据及方法代码。 对象堆:是运行时的数据区,类的实例及数组从对象堆中分配。JVM有垃圾自动回收功能,释放堆中无用的空间及堆碎片合并。 JVM共有200余条指令,指令操作码长度为一个字节,由于JVM是面向堆栈的机器,因此指令的操作数来自栈顶,并将运算的结果保存于栈顶。 JVM的指令集大致可分为如下几类: 把常量压入堆栈 把局部变量压入堆栈 把堆栈值存入局部变量 数组管理 栈操作 算术指令 逻辑指令 转换操作 条件控制指令 函数返回指令 表跳转指令 对象域操作指令 方法调用指令 异常处理指令 对象操作指令 监控器指令 断点指令 虚拟机规范中只是给出了虚拟机体系结构,及其指令集的定义,并未涉及到其具体的实现技术,在遵循虚拟机规范的前提下,不同的设计者可按不同的方案进行实现。 虚拟机的运行主要包括两个阶段:初始化阶段与运行阶段。 初始化阶段主要完成: 环境变量的设置;装入核心类库;加载基本Java类;内存管理及垃圾回收的初始化;线程管理的初始化;异常初始化等。 运行阶段主要指: Java类的加载与连接、以及Java类的解释执行,或及时编译执行。

文档评论(0)

wangz118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档