关于Java虚拟机.pdfVIP

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

一、什么是Java虚拟机 当你谈到Java虚拟机时,你可能是指: 1、抽象的Java虚拟机规范 2、一个具体的Java虚拟机实现 3、一个运行的Java虚拟机实例 二、Java虚拟机的生命周期 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。程序开始 执行时他才运行,程序结束时他就停止。你在同一台机器上运行三个程序,就会 有三个运行中的Java虚拟机。 Java虚拟机总是开始于一个main()方法,这个方法必须是公有、返回 void、 直接受一个字符串数组。在程序执行时,你必须给Java虚拟机指明这个包换main ()方法的类名。 Main()方法是程序的起点,他被执行的线程初始化为程序的初始线程。程 序中其他的线程都由他来启动。Java中的线程分为两种:守护线程 (daemon) 和普通线程(non-daemon)。守护线程是Java虚拟机自己使用的线程,比如负 责垃圾收集的线程就是一个守护线程。当然,你也可 以把自己的程序设置为守 护线程。包含Main()方法的初始线程不是守护线程。 只要Java虚拟机中还有普通的线程在执行,Java虚拟机就不会停止。如果 有足够的权限,你可以调用exit()方法终止程序。 三、Java虚拟机的体系结构 在Java虚拟机的规范中定义了一系列的子系统、内存区域、数据类型和使 用指南。这些组件构成了Java虚拟机的内部结构,他们不仅仅为Java虚拟机的 实现提供了清晰的内部结构,更是严格规定了Java虚拟机实现的外部行为。 每一个Java虚拟机都由一个类加载器子系统(class loader subsystem), 负责加载程序中的类型(类和接口),并赋予唯一的名字。每一个Java虚拟机 都有一个执行引擎(execution engine)负责执行被加载类中包含的指令。 程序的执行需要一定的内存空间,如字节码、被加载类的其他额外信息、程 序中的对象、方法的参数、返回值、本地变量、处理的中间变量等等。 Java虚 拟机将 这些信息统统保存在数据区(data areas)中。虽然每个Java虚拟机的 实现中都包含数据区,但是Java虚拟机规范对数据区的规定却非常的抽象。许 多结构上的细节部分都留给了 Java虚拟机实现者自己发挥。不同Java虚拟机 实现上的内存结构千差万别。一部分实现可能占用很多内存,而其他以下可能只 占用很少的内存;一些实现可 能会使用虚拟内存,而其他的则不使用。这种比 较精炼的Java虚拟机内存规约,可以使得Java虚拟机可以在广泛的平台上被实 现。 数据区中的一部分是整个程序共有,其他部分被单独的线程控制。每一个 Java虚拟机都包含方法区(method area)和堆(heap),他们都被整个程序共 享。Java虚拟机加载并解析一个类以后,将从类文件中解析出来的信息保存与 方法区中。程序执行时创建的 对象都保存在堆中。 当一个线程被创建时,会被分配只属于他自己的PC寄存器“pc register” (程序计数器)和Java堆栈(Java stack)。当线程不掉用本地方法时,PC寄 存器中保存线程执行的下一条指令。Java堆栈保存了一个线程调用方法时的状 态,包括本地变量、调用方法的 参数、返回值、处理的中间变量。调用本地方 法时的状态保存在本地方法堆栈中(native method stacks),可能再寄存器或 者其他非平台独立的内存中。 Java堆栈有堆栈块(stack frames(or frames))组成。堆栈块包含Java 方法调用的状态。当一个线程调用一个方法时,Java虚拟机会将一个新的块压 到Java堆栈中,当这个方法运行结束时,Java虚拟机会将对应的块弹出并抛弃。 Java虚拟机不使用寄存器保存计算的中间结果,而是用Java堆栈在存放中 间结果。这是的Java虚拟机的指令更紧凑,也更容易在一个没有寄存器的设备 上实现Java虚拟机。 图中的Java堆栈中向下增长的,PC寄存器中线程三为灰色,是因为它正在 执行本地方法,他的下一条执行指令不保存在PC寄存器中。 四、数据类型(Data Types) 所有Java虚拟机中使用的数据都有确定的数据类型,数据类型和操作都在 Java虚拟机规范中严格定义。Java中的数据类型分为原始数据类型(primitive types)和引用数据类型(reference type)。引用类型依赖于实际的对象,但

文档评论(0)

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

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

1亿VIP精品文档

相关文档