当前位置: 首页 > news >正文

重庆网站备案快公司建立网站青岛电话

重庆网站备案快,公司建立网站青岛电话,代理公司注册的价格,小企业网站建设怎么做好Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。JVM是为Java字节码定义的一种独立于具体平台的规格描述#xff0c;是Java平台独立性的基础。对于字节码指令集不感兴趣#xff0c;直接看寄存器。JVM设置了4个最为常用的寄存器。它们是…Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。JVM是为Java字节码定义的一种独立于具体平台的规格描述是Java平台独立性的基础。对于字节码指令集不感兴趣直接看寄存器。JVM设置了4个最为常用的寄存器。它们是pc程序计数器optop操作数栈顶指针frame当前执行环境指针vars指向当前执行环境中第一个局部变量的指针所有寄存器均为32位。pc用于记录程序的执行。optopframe和vars用于记录指向Java栈区的指针。至于为什么只设置4个寄存器是出于这样的考量如果虚拟机定义较多的寄存器便可以从中得到更多的信息而不必对栈或内存进行访问这有利于提高运行速度。然而如果虚拟机中的寄存器比实际CPU的寄存器多在实现虚拟机时就会占用处理器大量的时间来用常规存储器模拟寄存器这反而会降低虚拟机的效率。接着看JVM栈结构Java栈是JVM存储信息的主要方法。当JVM得到一个Java字节码应用程序(.class文件)后便为该代码中一个类的每一个方法创建一个栈框架以保存该方法的状态信息。每个栈框架包括以下三类信息局部变量用于存储一个类的方法中所用到的局部变量。vars寄存器指向该变量表中的第一个局部变量执行环境,用于保存解释器对Java字节码进行解释过程中所需的信息,包括上次调用的方法、局部变量指针和操作数栈的栈顶和栈底指针,是一个执行一个方法的控制中心操作数栈,用于存储运算所需操作数及运算的结果。例如如果解释器要执行iadd(整数加法)首先要从frame寄存器中找到当前执行环境而后便从执行环境中找到操作数栈从栈顶弹出两个整数进行加法运算最后将结果压入栈顶。再看JVM垃圾回收堆Java类的实例所需的存储空间是在堆上分配的。由Java解释器承担为类实例分配空间的工作。Java解释器在为一个实例分配存储空间后便开始记录对该实例所占用的内存区域的使用。一旦对象使用完毕便将其回收到堆中。在Java语言中除了new语句外没有其他方法为一对象申请和分配内存。对内存进行释放和回收的工作是由Java运行系统承担的。一个大概的JVM内存结构JVM的每个实例都有一个它自己的方法域和一个堆运行于JVM内的所有的线程都共享这些区域当虚拟机装载类文件的时候它解析其中的二进制数据所包含的类信息并把它们放到方法域中当程序运行的时候JVM把程序初始化的所有对象置于堆上而每个线程创建的时候都会拥有自己的程序计数器和Java栈其中程序计数器中的值指向下一条即将被执行的指令线程的Java栈则存储为该线程调用Java方法的状态本地方法调用的状态被存储在本地方法栈该方法栈依赖于具体的实现。关于存储方法域个人理解为与传统语言中的编译后代码或是Unix进程中的正文段类似。它保存方法代码(编译后的java代码)和符号表。在当前的Java实现中方法代码不包括在垃圾回收堆中但计划在将来的版本中实现。再详细说说栈框架的三类信息局部变量区、运行环境区、操作数区。局部变量区每个Java方法使用一个固定大小的局部变量集。它们按照与vars寄存器的字偏移量来寻址。局部变量都是32位的。长整数和双精度浮点数占据了两个局部变量的空间却按照第一个局部变量的索引来寻址。(例如一个索引为n的局部变量如果是一个双精度浮点数那么它实际占据了索引n和n1所代表的存储空间)虚拟机规范并不要求在局部变量中的64位的值是64位对齐的。虚拟机提供了把局部变量中的值装载到操作数栈的指令也提供了把操作数栈中的值写入局部变量的指令。运行环境区在运行环境中包含的信息用于动态链接正常的方法返回以及异常捕捉。动态链接运行环境包括对指向当前类和当前方法的解释器符号表的指针用于支持方法代码的动态链接。方法的class文件代码在引用要调用的方法和要访问的变量时使用符号。动态链接把符号形式的方法调用翻译成实际方法调用装载必要的类以解释还没有定义的符号并把变量访问翻译成与这些变量运行时的存储结构相应的偏移地址。动态链接方法和变量使得方法中使用的其它类的变化不会影响到本程序的代码。正常的方法返回如果当前方法正常地结束了在执行了一条具有正确类型的返回指令时调用的方法会得到一个返回值。执行环境在正常返回的情况下用于恢复调用者的寄存器,并把调用者的程序计数器增加一个恰当的数值以跳过已执行过的方法调用指令然后在调用者的执行环境中继续执行下去。异常捕捉异常情况在Java中被称作Error(错误)或Exception(异常)是Throwable类的子类在程序中的原因是①动态链接错如无法找到所需的class文件。②运行时错如对一个空指针的引用。程序使用了throw语句。当异常发生时Java虚拟机采取如下措施检查与当前方法相联系的catch子句表。每个catch子句包含其有效指令范围能够处理的异常类型以及处理异常的代码块地址。与异常相匹配的catch子句应该符合下面的条件造成异常的指令在其指令范围之内发生的异常类型是其能处理的异常类型的子类型。如果找到了匹配的catch子句那么系统转移到指定的异常处理块处执行如果没有找到异常处理块重复寻找匹配的catch子句的过程直到当前方法的所有嵌套的catch子句都被检查过。由于虚拟机从第一个匹配的catch子句处继续执行所以catch子句的顺序是很重要的。因为Java代码是结构化的因此总可以把某个方法的所有的异常处理器都按序排列到一个表中对任意可能的程序计数器的值都可以用线性的顺序找到合适的异常处理块以处理在该程序计数器值下发生的异常情况。如果找不到匹配的catch子句那么当前方法得到一个”未截获异常”的结果并返回到当前方法的调用者好像异常刚刚在其调用者中发生一样。如果在调用者中仍然没有找到相应的异常处理块那么这种错误将被传播下去。如果错误被传播到最顶层那么系统将调用一个缺省的异常处理块。操作数栈区机器指令只从操作数栈中取操作数对它们进行操作并把结果返回到栈中。选择栈结构的原因是在只有少量寄存器或非通用寄存器的机器(如Intel486)上也能够高效地模拟虚拟机的行为。操作数栈是32位的。它用于给方法传递参数并从方法接收结果也用于支持操作的参数并保存操作的结果。这次到这里下次仍是一些关于JVM的整理。
http://www.zqtcl.cn/news/781193/

相关文章:

  • 网站防止采集如何运行安装wordpress
  • 高端论坛网站建设忘记了wordpress登录密码忘记
  • 哈尔滨网站运营服务商wordpress 访问缓慢
  • 织梦网站上传及安装定制网站建设广告
  • 阳光创信-网站建设首选品牌wordpress rss插件
  • 钦州网站建设公司哪家好邢台制作
  • 网站广告赚钱吗中国小型加工机械网
  • 2015做网站前景东莞公司的网页怎么做的
  • 专业网站设计制作过程网站什么模板做的
  • 如何制作网页的软件网站推广与搜索引擎优化
  • 四川内江网站建设太原网站建设网格未来
  • 陕西 网站建设 陕ICP创建商务站点的主要工作
  • 做照明出口的网站深圳 网站制作
  • 门户网站建设 简报嘉兴设计公司有哪些
  • 资阳房地产网站建设学校网站建设板块分析
  • 山东华邦建设网站首页wordpress h5自适应
  • 合肥市建设工程劳务分包合同备案表在哪个网站下载国际国内热点新闻事件
  • 临猗做网站怎么做挣钱的网站
  • 做软装找图片的网站wordpress 表单留言
  • 360网站挂马检测wordpress路径爆出
  • 有什么网站学做标书的专门做短视频的公司
  • 网站怎么做图片动态图片短视频推广
  • 海口的网站建设网页设计欣赏可爱风格
  • 高端网站设计哪个好五莲网站建设维护推广
  • 外贸网站 测速国内创意网页设计
  • 网站商城前台模板免费下载自己做网站统计
  • 十大免费货源网站免费版本厦门建网站多少钱
  • 网站建设投标书范本深圳网页设计培训多少钱
  • 动态ip可以做网站北京万户网络
  • 网址大全免费网站中国建设银行驻莫斯科网站