上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 25 下一页
摘要: 18.1微型子例程 字节码中的finally子句在方法内部的表现很像“微型子例程”。Java虚拟机在每个try语句块和与其相关的catch子句的结尾处都会“调用”finally子句的子例程。finally子句结束后(这里的结束指的是finally子句中最后一条语句正常执行完毕,不包括抛出异常,或执行 阅读全文
posted @ 2019-12-03 22:41 mongotea 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 只有对象引用和基本类型可以在Java的桟中以局部变量形式存在。Java栈不能容纳对象。 Java虚拟机中的对象和基本类型的结构分离在java编程语言中体现为:对象不能作为局部变量声明,只有对象引用和基本类型可以。对象引用在声明后并不指向任何有意义的东西,只有在引用被显式初始化后(无论是使引用指向一个 阅读全文
posted @ 2019-12-03 22:40 mongotea 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 16.1条件分支 在Java源代码中,可以在一个方法中使用if、if-else、while、 do-while、for和switch语句来指定基本的控制流。当把所有源代码转换成为字节码的时候,除了switch语句外,Java编译器使用同样的操作码集。例如,Java提供的最简单的控制流是if语句。当编 阅读全文
posted @ 2019-12-03 22:40 mongotea 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 12.1 二进制补码运算Java虚拟机所支持的所有的整数类型-byte, short、int和long,它们都是带符号的二进制补码数。二进制补码方案既能够描述正整数,也能够描述负整数。在一个二进制补码数中,最重要的位就是它的符号位。符号位为1,表示负整数;符号位为0,表示正整数和数字0。 能够被二进 阅读全文
posted @ 2019-12-03 22:39 mongotea 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 13.1逻辑操作码Java虚拟机的逻辑操作主要针对int和long类型。这些处理int和long类型的操作与处理带符号二进制补码数的方式不同,而是按照通用的位模式进行处理。整数移位通过ishl、ishr, iushr操作码进行。Java的“<<”操作符由ishl实现,“>>”操作符由ishr实现,“ 阅读全文
posted @ 2019-12-03 22:39 mongotea 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 10.1常量入栈操作许多操作码执行常量入栈操作。操作码在执行常量入栈操作之前,使用如下三种方式指明 常量的值:常量值隐式包含在操作码内部,常量值在字节码流中如同操作数一样紧随在操作码 之后,或者从常量池中取出常量。 一些操作码自行指明入栈的常量的类型和值,例如,iconst_1操作码告知Java虚拟 阅读全文
posted @ 2019-12-03 22:38 mongotea 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 11.1转换操作码Java虚拟机包括许多进行基本类型转换工作的操作码,这些执行转换工作的操作码后面没有 操作数,转换的值从桟顶端获得。Java虚拟机从栈顶端弹出一个值,对它进行转換,然后再把转 换结果压入栈。进行int、long, float和double类型之间转换的操作码如表11-1所示,针对这 阅读全文
posted @ 2019-12-03 22:38 mongotea 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 堆碎块是在正常的程序运行过程中产生的。新的对象分配了空间,不再被引用的对象被释放,所以堆内存的空闲位置介于活 动的对象之间。请求分配新对象时可能不得不增大堆空间的大小,虽然可以使用的总空闲空间 是足够的,这是因为,堆中没有连续的空闲空间放得下新的对象。在一个虚拟内存系统中,增 长的堆所需要的额外分页 阅读全文
posted @ 2019-12-03 22:19 mongotea 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 8.1.20示例:类型安全性与装载约束 在Java虚拟机的早期实现中,搞乱Java的类型系统是有可能的。一个Java程序可能欺骗Java 虚拟机,用一种类型的对象冒充另一种类型的对象。这种能力让破坏者非常高兴,因为他们可 以欺骗受信任的类非法访问非公开的数据,或者通过把类替换成新的版本改变方法的行为 阅读全文
posted @ 2019-12-03 22:14 mongotea 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 8.1.19示例:卸载无法触及的greeter类 动态装载的类型变为无法触及而要被虚拟机卸载时的例子如下面的程序: 因为引用的类(这里是HowDoYouDo )是被GreeterClassLoader对象装载的。这两个类都是Java API的一部分,不管怎样都会最终被启动类装载器装载,因为loadC 阅读全文
posted @ 2019-12-03 22:12 mongotea 阅读(222) 评论(0) 推荐(0) 编辑
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 25 下一页