Java虚拟机工作原理.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
As the Java Virtual Machine is a stack-based machine, almost all of its instructions involve the operand stack in some way. Most instructions push values, pop values, or both as they perform their functions. Java 虚拟机是基于栈的(stack-based machine)。几乎所有的 java 虚拟机的指令,都与操作数栈(operand stack)有关.绝大多数指令都会在执行自己功能的时候进行入栈、出栈操作。 Java 体系结构介绍 Javaís architecture arises out of four distinct but interrelated technologies, each of which is defined by a separate specification from Sun Microsystems: Java 体系结构包括哪几部分? Java 体系结构包括 4 个独立但相关的技术 the Java programming language ?程序设计语言the Java class file format ?字节码文件格式 the Java Application Programming Interface?应用编程接口the Java Virtual Machine ?虚拟机 什么是 JVM java 虚拟机和 java API 组成了 java 运行时。 JVM 的主要任务。 Java 虚拟机的主要任务是装载 class 文件并执行其中的字节码。Java 虚拟机包含了一个类装载器。 类装载器的体系结构二种类装载器 启动类装载器 用户定义的类装载器 启动类装载器是 JVM 实现的一部分 当被装载的类引用另外一个类时,JVM 就是使用装载第一个类的类装载器装载被引用的类。 为什么 java 容易被反编译? 因为 java 程序是动态连接的。从一个类到另一个类的引用是符号化的。在静态连接的可执行程序中。类之间的引用只是直接的指针或者偏移量。相反在 java 的 class 文件中, 指向另一个类的引用通过字符串清楚的标明了所指向的这个类的名字。 如果引用是指向一个字段的话。这个字段的名字和描述符(字段的类型)会被详细说明。 如果引用指向一个成员方法,那么这个成员方法的名字和描述符(方法的返回值类型, 方法参数的数量和类型)会被详细说明。 包含对自己字段和成员方法的符号引用。 包含可选的调试信息。(包括局部变量的名称和类型) 垃圾回收器缺点: 无法确认什么时候开始回收垃圾,无法确认是否已经开始收集,也无法确认要持续多长时间 平台无关 安全 网络移动性 Java 虚拟机 ,thre.a d 1 , | | threa d 2 ;tackfmmeH ;tack fmme H I I l , il1 川11 .threa1d 1 stack stack frame  ;tack行an1c,tackfr.an1estack frame-3d"e r h ;tack 行an1c ,tack fr.an1e stack frame- 3 d" e r h L j.1 1 I I \ 日 1 日1 1q, 2 d" e 矿r hl stack stack fra1ne s侬ckframe:klhr”,a s侬ck frame :k pc r,egisters frame ,l I ,l I I.,” $切ek frame  , \ , \ I  native me山od stacks Link Load Verify Prepare (oplionallJ:)R (oplionallJ:) Resa l,ve I ni ti alize 每个 JVM 都有一个类装载子系统。 运行时数据区:方法区,堆,java 栈,pc 寄存器,本地方法栈 每个 JVM 实例都有一个方法区和堆。他们是由该虚拟机中所有线程共享的。 每个线程都会得到自己的 pc 寄存器和 java 栈, pc 寄存器的值指示下一条将被执行的指令。 java 栈记录存储该线程中 java 方法调用的状态。(包括局部变量,参数,返回值, 运算的中间结果。) 这些内存区域是私有的。任何线程都不能访问另一个线程的pc 寄存器和 java 栈 java 栈由许多栈帧组成。一个栈帧包含一个 java 方法的调用的状态。 当线程调用一个方法的时候,虚拟机压入一个新的栈桢到该线程的java 栈中。 当方法返回时

文档评论(0)

mph + 关注
官方认证
内容提供者

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

认证主体上海谭台科技有限公司
IP属地湖北
统一社会信用代码/组织机构代码
91310115MA7CY11Y3K

1亿VIP精品文档

相关文档