版权注意$!员: 1、书籍版仪归若蓄和出版丰土fifi萄; 2、 :<f;;PDF仅用于个人获l!ll知识,造行也底下知识交流; 三 PDF获得富不得在亘联网以任何目的选行传播; 拥有需要 , i青尽量购买芷版实体书!支持书籍作富!! 盯 L 町屯吨 m 乎比 丑 i zm阳山 常 dm E ·也 hπ - puw、俨 4 版 mm 归 冶 kZ ·缚’川 h JuHUW LU nruLU 拟机 JVM 设计原理与实现 蹦总J~Vi 封亚飞著 内容简介 本书从源码角度解i卖HotSpot的内 部实现机制,本版本主要包含三大部分一-NM数据结构设计与实 现、执行引擎机制及内存分配模型。 数据结构部分包括Java字节码文件格式、常量池解析、字段解析、方法解析。每一部分都给出详细 的源码实现分析,例如 字段解析一章 ,从源码层面详细分析了 Java字段重排、字段继承等关键机制 。 再 如l 方法解析一章 ,给出了 Java多态特性在源码层面 的 实现方式。本书通过直接对源代码的分析,从根本 上梳理和澄清Java领域中的关键概念和机制。 执行引擎部分包括Java方法调用机制、找帧创建机制、指令集架构与解释器实现机制 。这一话题是 全书技术含量最高 的部分,需要读者具备一定的汇编基础。不过千万不要被“汇编”这个词给吓着,其 实在作者看来 ,汇编相比于高级语言而言 , 语法非常简单,语义也十分清晰 。 执行引擎部分重点描述Java 源代码如何转换为字节码,又如何从字节码转换为机器指令从而能够被物理CPU所执行的技术实现 。 同 时详细分析了 Java函数堆校的创建全过程,在源码分析的过程中 , 带领读者从本质上理解到底什么是Java 函数堆钱和钱帧 ,以及核帧内部的详细结构。 内存分配部分主要包括类型创建与加载、对象实例创建与内存分配,例如 new关键字的工作机制 , import关键字 的作用,再如j ava. lang.ClassLoader. loadClassO接口的本地实现机制。 本书并不是简单地分析源码实现,而是在描述HotSpot 内 部实现机制的同时,分析了 Hotspot如此这般 实现 的技术必然性 。读者在 阅读本书的过程中,将会在很多 地方看到作者本人的这种思考。 未经许可,不得以任何方式复制或抄袭本书之部分或全部内容 。 版权所有,侵权必究。 图书在版编目 CCIP ) 数据 揭秘 Java 虚拟机: NM 设计原理与实现/封亚飞著. 北京 :电子工业出版社 , 2017 . 7 ISBN 978-7-121-31541-1 [ ①揭 … II. ①封 … III. ①JAVA 语言 一 程序设计 IV. ①TP312.8 中国版本图书馆 CIP 数据核字(2 017)第 101824 号 策划编辑:刘峻 责任编辑 : 郑柳洁 特约编辑:梁卫红 印 刷:北京京科 印刷有限公司 装 订: 三河市良远印务有限公司 出版发行:电子工业出版社 北京市海淀区万寿路 173 信箱 开 本 : 787 ×980 版 次 : 2017 年 7 月第 l 版 1/ 16 印张: 42.25 印 次 : 2017 年 7 月第 l 次印刷 定 价: 邮编 : 100036 字数: 942 千字 129 .00 元 凡所购买 电子工业出版社图书有缺损问题, 请 向购买书店调换。若书店售缺 , 请与本社发行部联系, 联系及邮购电话: CO IO ) 88254888, 88258888 0 质量投诉请发邮件至 zlts@phei.com.cn , 盗版侵权举报请发邮件至 dbqq@phei.com . cn 。 本书咨询联系方式: 0 l 0-51260888-819, faq@phei .com.cn 。 推荐序 从 Java 诞生至今已有二十余年,基于虚拟机的技术屏蔽了底层环境的差异,“一次编译, 随处运行”的思想促进了 整个 IT 上层技术应用产生了翻天覆地的变化 。 Java 作为服务端应用语 言 的首选,确实大大降低了 学习 和应用的门槛 。 现实生活中,绝大多数 Java 程序员对于虚拟机 的原理和实现了解并不深入,也似乎并不那么关心 。 而随着互联网的极速发展,现在的 Java 服 务端应用需要应对极高的并发访问和大量 的数据交互,从机制和设计原理上了解虚拟机的核心 原理和实现细节显然能够帮助 Java 程序员编写出更高效优质的代码 。 虽然市面上从 Java 使用者角度介绍虚拟机的书也有不少佳作,但一般较为宽泛 ,尤其在谈 及虚拟机如何运行、处理的细节时总有些浅尝辄止的遗憾 。 而作者凭借深厚的 C 与 Java 技术功 底以及多年对于 NM 的深入研究编写 的这本书,真正从虚拟机指令执行处理层面,结合只币f 规范的设计原理,完整 和详尽地阐述了 Java 虚拟机在处理类、方法和代码时的设计和实现细节 。 书中大量的代码和指令细节能够让程序员更加直接地理解相关原理 。 这是一本优秀的技术工具书,可以让阅读者更加深刻地理解虚拟机的原理和处理细节, 值 得每一位具有极客精神 、追求细节的优秀程序员反复阅读和收藏。 菜鸟平台技术部 陌铭 目IJ J§i 文明需要创造,也需要传承 。 NM 作为一款虚拟机,本身便是技术之集大成者,里面包含 方方面面的底层技术知识 。 抛开如今 Java 如日中天之态势不说,纯粹从技术层面看, JVM 也值 得广大技术爱好者深入研究 。 可以说,从最新的硬件特性,到最新的软件技术,只要技术被证 明是成熟的,都会在 JVM 里面见到其踪影 。 JDK 的每一次更新,从内部到核心类库, JVM 都 会及时引入这些最新的技术或者算法,这便是技术传承意义之所在 。 随着云计算、大数据 、 人 工智能等最新技术的发展, Java 技术生态圈也日益庞大, 只币4 与底层平台以及与其他编程语言 和技术的交互、交织日益深入,这些都离不开对 JVM 内部机制的深入理解 。 如果说以前在中间 件与框架领域的大展身手,依靠的是 Java 语言层面的特性和技术,那么以后越来越多的技术红 利将会因只爪4 层面之创新而得以显现 。 被真相所蒙蔽,是一件痛苦的事 。 我们在一个被层层封装的世界里进行开发和设计,操作 系统、各种中间件与框架,将底层世界隐藏得结结实实 。 我们一方面享受着高级编程语言所带 来的高效、稳定、快速的开发体验,然而另一方面,却又如同行走于黑暗之中 。 我们不知道路 的下面是否有坑,即使有坑,可能也不知道如何排除 。 Java 的很多概念和技术,很多时候由于 我们对底层机制的不了解,而让我们感到十分高深莫测,无法知其全貌 。 这种感觉非常痛苦, 尤其是技术修炼到一定阶段的时候 。 纸上得来终觉浅,绝知此事要躬行 。 即使从 Java 语言层面下探到 JVM 层面,但是若只固 于对 JVM 机制理论和概念上的理解,很多时候仍然觉得缺乏那种大彻大悟之感 。 计算机作为一 门科学,与其他的科学领域一样,不仅需要对其理论的理解,也需要能够去实证。 例如爱因斯 坦的相对论十分高深,但是通过对引力波和红移的观测,其变得形象和生动起来 。 Java 的部分 概念经过“口口相传”,似有过于夸大其技术神秘性之嫌,让人望而生畏 。 例如,与 volatile 关 键字相关的内存可见性、指令乱序等概念,给人无比博大深奥的印象,但是如能抛开概念,直 接看底层实现机制,并辅以具体的实验论证,则会形成深刻而彻底的认知 。 其实,这世界本来 就很简单 。 在可观测的实验结果与可理解的底层机制面前,一切浮夸的概念都自然会现出原形 。 前言 因此,采用自底而上的技术研究之道,相比自顶而下的办法,便多了更多窥透本质的自信 和平实 。 同 一个底层概念,在不同的高级编程语言里,在概念、叫法上很少能够保持一致 。 采 用自底而上的探索方法,能够揭开各种深奥概念的神秘面纱,还原一个清明简洁的世界 。 自然 理解 曲线也不会有大起大落 。 研究 JVM 的过程,就是与大师们进行精神沟通和心灵交流的过程,虽然过程会比较痛苦 。 研究诸如 Linux , J\叫这样的底层程序, 你能学习到大师级的理念,更能够见识到经无数牛人 反复锤炼后的技术 。 天长日久的耳濡目染,终有一天你也会成为大师,你也会拥有大师级的眼 光,你也会拥有开阔的胸怀 。 如同音乐家李健,人们如此喜欢他,并不仅仅是因为他歌唱得好, 更多的是因为气质 。 而这种气质来自于博览群书,来自于对艺术的长久修炼 。 计算机从某种程 度上而言, 也是一 门艺术, 工程师和程序员们要想进化,对计算机艺术的修炼必不可少 。 与大 师进行精神沟通,不仅能够修炼到计算机的艺术,更能直接感受井养成大师身上所具备的气质 。 我不知道 Java 还能走多远,未来是否会被淘汰,但你不能因此就否定研究口哨f 的意义 。 川叫作为一款虚拟机,各种底层技术和理论都有涉及,若你能研究透彻,则能一通百通 。 例如, 本人在研究过程中,也翻阅了诸如 Python 、 JavaScript 等高级面向对象语言虚拟机的机制,发现 它们 内部的整体思路都相差不大 。 同时,口叫本身在运行期干了 一部分 C 或 C++语言编译器所 干的事,例如符号解析 、链接、 面向对象机制的实现等,通过对这些机制的分析,从来没有研 究过 CIC++编译器原理的我, 基本也能够猜出 CIC++编译器可能的实现方式,后来翻阅了相关 资料,果不其然 。 理解编译与虚拟机的实现机制是一方面,另一方面,通过深挖 JDK 核心类库 的内部实现,则能够深刻理解线程 、并发、 1/0 等比较高深的技术内幕 。 例如 Java NIO ,何谓 VMA ?何谓内核映射?若想、真正彻底理解这些概念,不从底层人手,恐怕很难有一个具象化的 认知 。 总之,研究只币f ,是一件非常能够提升开发者内功的事情 ,未来无论出现什么样的新语 言、新技术 、 新概念,你总是能够不被表面的东西所迷惑,而是能够透过层层封装,看清事物 的本质,你总是能够 以极低的学习成本,迅速理解新 的东西 。 从一个更为广阔的视角,使用发 散的思维去看,不一定非要研究 川叫才能有很大收获,研究其他技术的底层,会有异曲同工之妙 。 而我只不过恰好生在了这个年代,这个 Java 语言大行其道的年代,所以就恰好对其做了一个比较深 入的研究而已 。 工具有时空疆界, 而技术思想则没有,其总能穿越千万年的时空,无限延伸 。 JVM 涉及的知识面十分广阔,因 此限于篇幅,本书并未覆盖 JVM 的全部内容 。 总体而言 , 本书重点描述了阿M 从启动开始到完成函

pdf文档 《揭秘Java虚拟机 JVM设计原理与实现》

计算机 > Java > JVM > 文档预览
678 页 0 下载 597 浏览 0 评论 0 收藏 3.0分
温馨提示:如果当前文档出现乱码或未能正常浏览,请先下载原文档进行浏览。
《揭秘Java虚拟机 JVM设计原理与实现》 第 1 页 《揭秘Java虚拟机 JVM设计原理与实现》 第 2 页 《揭秘Java虚拟机 JVM设计原理与实现》 第 3 页 《揭秘Java虚拟机 JVM设计原理与实现》 第 4 页 《揭秘Java虚拟机 JVM设计原理与实现》 第 5 页
下载文档到电脑,方便使用
还有 673 页可预览,继续阅读
本文档由 user2021-02-28 14:27:41上传分享
给文档打分
您好可以输入 255 个字符
DocHub文库的中文名是什么?( 答案:多哈 )
评论列表
  • 暂时还没有评论,期待您的金玉良言