上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 25 下一页
摘要: 当类型被装载后,就准备进行连接了。连接过程的第一步是验证——确认类型符合Java语言 的语义,并且它不会危及虚拟机的完整性。 在验证上,不同的虚拟机实现拥有一些灵活性。虚拟机实现的设计者可以决定如何以及何 时验证类型。Java虚拟机规范列出了虚拟机可以拋出的异常以及在何种条件下必须抛出它们。不 管J 阅读全文
posted @ 2019-12-03 21:21 mongotea 阅读(147) 评论(0) 推荐(0) 编辑
摘要: Java虚拟机通过装载、连接和初始化一个java类型,使该类型可以被正在运行的java程序所 使用、其中,装载就是把二进制形式的Java类型读入Java虚拟机中;而连接就是把这种已经读人 虚拟机的二进制形式的类型数据合并到虚拟机的运行时状态中去。连接阶段分为三个子步骤-验证、准备和解析。“验证”步骤 阅读全文
posted @ 2019-12-03 21:20 mongotea 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 如前所述,属性在Java class文件中多处出现。它们可以出现在ClassFile、field_info、 method_info和Code_attribute表中。Code_attribme表本身即为一个属性,本节将对它进行阐述。(自我感悟:注意这里的field_info与后面的CONSTANT 阅读全文
posted @ 2019-12-03 21:19 mongotea 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 常量池中容纳的符号引用包括三种特殊的字符串:全限定名、简单名称和描述符。所有的符 号引用都包括类或者接口的全限定名。字段的符号引用除了全限定类型名之外,还包括简单字段 名和字段描述符。方法的符号引用除了全限定类型名之外,还包括简单方法名和方法描述符。 在符号引用中使用的特殊字符串也同样用来描述被cl 阅读全文
posted @ 2019-12-03 21:18 mongotea 阅读(562) 评论(0) 推荐(0) 编辑
摘要: 一个class文件中只能包含一个类或者接口。占据多个字节空间的项按照高位在前的顺序分为几个连续的字节存放。可变长度的ClassFile表中的项,如表6-2所示,按照它们在class文件中出现的顺序列出了主要部分。 表6-2 ClassFile表的格式 类型 名 称 数量 u4 magic 1 u2 阅读全文
posted @ 2019-12-03 21:16 mongotea 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 任何Java虚拟机实现的核心都是它的执行引擎。在Java虚拟机规范中,执行引擎的行为使用 指令集来定义。对于每条指令,规范都详细规定了当实现执行到该指令时应该处理什么,但是却对如何处理言之甚少。在前面的章节中提到过,实现的设计者有权决定如何执行字节码:实 现可以采取解释、即时编译或直接用芯片上的指令 阅读全文
posted @ 2019-12-03 21:12 mongotea 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 并不强求Java虚拟机实现支持任何特定的本地方法接口。有些实现可以根本不支持本地方法 接口,还有一些可能支持少数几个,每一个对应一种不同的需求。 Sun的Java本地接口,或者称作JNI,是为可移植性准备的。JNI设计的可以被任何java虚拟机实现支持,而不管它们使用何种垃圾收集或者对象表示技术。这 阅读全文
posted @ 2019-12-03 21:12 mongotea 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 栈帧由三部分组成:局部变量区,操作数找和帧数据区。局部变量区和操作数栈的大小要 视对应的方法而定,它们是按字长计算的。编译器在编译时就确定了这些值并放在class文件中。 而帧数据区的大小依赖于具体的实现。当虚拟机调用一个Java方法时,它从对应类的类型信息中得到此方法的局部变量区和操作数 栈的大小 阅读全文
posted @ 2019-12-03 21:11 mongotea 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 前面提到的所有运行时数据区都是在Java虚拟机规范中明确定义的,除此之外,对于一个运 行中的Java程序而言,它还可能会用到一些跟本地方法相关的数据区。当某个线程调用一个本地 方法时,它就进人了一个全新的并且不再受虚拟机限制的世界。本地方法可以通过本地方法接 口来访问虚拟机的运行时数据区,但不止于此 阅读全文
posted @ 2019-12-03 21:11 mongotea 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 每当启动一个新线程时,Java虚拟机都会为它分配一个java栈。前面我们曾经提到Java栈以帧为单位保存线程运行状态。虚拟机只会直接对java栈执行两种操作:以帧为单位的压栈或出栈。 某个线程正在执行的方法被称为该线程的当前方法,当前方法使用的栈帧称为当前帧,当 前方法所属的类称为当前类,当前类的常 阅读全文
posted @ 2019-12-03 21:09 mongotea 阅读(106) 评论(0) 推荐(0) 编辑
上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 25 下一页