- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java虚拟机
Java虚拟机十讲 龙芯Java组 倾力奉献 第0章 序 言 为什么要写作本书? 由“使用虚拟机”发展为“制作虚拟机” 虚拟机已经成为系统软件中重要组成部分 与OS、编译器地位并列 国内还较少从事专门的虚拟机研究 整个Java生态环境:大多数只是使用Oracle JDK,对于内部实现原理知之甚少 但是已经有机构出于自身需要进行虚拟机的深度定制 龙芯,飞腾,淘宝 但是还没有能力从零开始制作 未来5至10年 软件业发展的下一个里程碑 特征 自主解决底层系统软件的支持问题 至少要达到具有定制和控制的技术能力 现有此类人才还非常缺乏 龙芯走在虚拟机前列 龙芯出于指令集的特殊性,率先遇到需要自主移植和优化JDK的契机 在长达6年的积累中已经走出一条特色之路 积累了丰富的理论和实践经验,不乏前人文献中所未能探讨过的新知识 写作目标 实用价值 介绍虚拟机的核心理论 揭示主要虚拟机软件的设计和实现原理 参考价值 汇总虚拟机相关的重要文献理论 理论价值 展示龙芯在虚拟机移植和优化方面的新贡献 对于软件优化总结了新的方法论 本书要介绍什么内容? (一)Java虚拟机的基本原理 (二)解释器 - 纯平台无关的解释器 - 基于模板的解释器 (三)即时编译器 - C1 和 C2 - 寄存器分配 - 翻译规则 - 重定位 - 翻译后代码管理 - 运行时环境的切换 (四)垃圾回收 (五)异常处理 (六)JNI Java虚拟机全景图 面向读者 面向Java应用程序开发人员:使之明白虚拟机内部基本原理,尤其是对于应用架构设计和性能有影响的原理。进而指导性能调优和错误分析 面向系统软件开发人员:使之明白JVM之类复杂系统软件的基本规律,进而能够对其控制、改造,直至达到自主开发虚拟机的能力 面向理论研究人员:使之明白虚拟机研究领域的历史沿革和未来方向,进面创造出新的优化方法 如何阅读本书 本书更多的是介绍新的实践认识,其视角往往可能与已有文献存在鲜明的差异 重视本书给出的第三方参考文献(论文,源代码) 注重动手实践 体 例 每章结构 初识 深入 实例 回顾 分析和评价 题外话 与本章内容相关的延伸话题,大多是龙芯虚拟机工作的重要经验 作业 实际开发素质和能力 参考书目 龙芯虚拟机工作的重要篇目 第1章 初识Java虚拟机 虚拟机的结构 虚拟机的运行目标:java程序 下面以一个最小程序,在各个层面直观的观察 源代码层面:hello.java public class hello { public static void main(String[] args) { System.out.println(Hello world!\n); } } 编译程序 源代码 - java字节码(.class) # javac hello.java # ls hello.* hello.java hello.class # file hello.class hello.class: compiled Java class data, version 50.0 (Java 1.6) 反汇编hello.class # javap -verbose -p hello 1.s hello.class的结构 方法 = 字节码序列 public hello(); Code: Stack=1, Locals=1, Args_size=1 0: aload_0 1: invokespecial #1; java/lang/Object.init() 4: return public static void main(java.lang.String[]); Code: Stack=2, Locals=1, Args_size=1 0: getstatic #2; Field java/lang/System.err 3: ldc #3; String “Hello world!\n” 5: invokevirtual #4; Method java/io/PrintStream.println() 8: return Java字节码 不定长 至少1个字节,最长2、3个字节 第一个字节为操作码(opcode) 基于栈的指令集 参数:默认在栈顶 每一个字节码指令从栈顶弹出操作数 每个操作码有固定的参数个数:一个或者两个 运算结果:默认放回栈顶 优点 规格紧凑,体积精简 《Java虚拟机规范》 规定所有字节码的规格 参数 运算语义 返回值 异常处理方式 字节码实例 字节码实例 字节码实例 return:方法返回 getstatic:取类的静态
您可能关注的文档
最近下载
- 国际商法 第四版 配套课件.ppt
- SYT 6270-2017 石油天然气钻采设备 固井、压裂管汇的使用与维护.docx VIP
- 2025年中考数学压轴训练:二次函数的图象与性质大题 (五大题型)教师版.pdf VIP
- 北大荒集团估值报告书.pdf
- 2025广东广州市黄埔职业技术学校招聘临聘教师4人考试备考试题及答案解析.docx VIP
- 估值报告书.PDF
- 2025年中考数学二轮压轴题型突破课件:含参数的二次函数问题-最值与取值范围问题.pptx VIP
- TCPIA 0112—2025《户用光伏发电系统全生命周期安全管理规范》.pdf
- 国家级生态农场申报表.docx VIP
- 住院病人健康教育技巧ppt课件.pptx VIP
文档评论(0)