入职没见过 P8 领导,3 月后他带着份 769 页虚拟机笔记出关了
Java 是目前用户最多、使用范围最广的软件开发技术,Java 的技术体系主要由支撑 Java 程序运行的虚拟机、提供各开发领域接口支持的 Java 类库、Java 编程语言及许许多多的第三方 Java 框架(如 Spring、 MyBatis 等) 构成。在国内,有关 Java 类库 API、Java 语言语法及第三方框架的技术资料和书籍非常丰富,相比而言,有关 Java 虚拟机的资料却显得异常贫乏。
这种状况很大程度上是由 Java 开发技术本身的一个重要优点导致的:在虚拟机层面隐藏了底层技术的复杂性以及机器与操作系统的差异性。运行程序的物理机千差万别,而 Java 虚拟机则在千差万别的物理机上面建立了统一的运行平台,实现了在任意-台 Java 虚拟机上编译的程序,都能在任何其他 Java 虚拟机上正常运行。这一极大的优势使得 Java 应用的开发比传统 C/C + +应用的开发更高效快捷,程序员可以把主要精力放在具体业务逻辑,而不是放在保障物理硬件的兼容性上。通常情况下,一个程序员只要了解了必要的 Java 类库 API、Java 语法,学习适当的第三方开发框架,就已经基本满足日常开发的需要了。虚拟机会在用户不知不觉中完成对硬件平台的兼容及对内存等资源的管理工作。因此,了解虚拟机的运作并不是普通开发人员必备的,或者说首要学习的知识。
然而,凡事都具备两面性。随着 Java 技术的不断发展,它已被应用于越来越多的领域之中。其中一些领域,如互联网、能源、金融、通信等,对程序的性能、稳定性和扩展性方面会有极高的要求。一段程序很可能在 10 个人同时使用时完全正常,但是在 10000 个人同时使用时就会缓慢、死锁甚至崩溃。毫无疑问,要满足 10000 个人同时使用,需要更高性能的物理硬件,但是在绝大多数情况下,提升硬件性能无法等比例提升程序的运行性能和并发能力,甚至有可能对程序运行状况没有任何改善。这里面有 Java 虚拟机的原因:为了达到“所有硬件提供一致的虚拟平台”的目的,牺牲了一些硬件相关的性能特性。 更重要的是人为原因:如果开发人员不了解虚拟机诸多技术特性的运行原理,就无法写出最适合虚拟机运行和自优化的代码。
其实,目前商用的高性能 Java 虚拟机都提供了相当多的优化参数和调节手段,用于满足应用程序在实际生产环境中对性能和稳定性的要求。如果只是为了入门学习,让程序在自己的机器上正常工作,那么这些特性可以说是可有可无的;但是,如果用于生产开发,尤其是大规模的、企业级的生产开发,就迫切需要开发人员中至少有一部分人对虚拟机的特性及调节方法具有很清晰的认识。所以在 Java 开发体系中,对架构师、系统调优师、高级程序员等角色的需求一直都非常大。学习虚拟机中各种自动运作特性的原理也成为 Java 程序员成长路上最终必然会接触到的一课。通过本书,读者可以以一个相对轻松的方式学到虚拟机的运作原理。
![](https://static001.geekbang.org/infoq/b7/b7dc6084cc13ff9067790a69d7cfedb0.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
本书一共分为五个部分:走近 Java、自动内存管理、虚拟机执行子系统、程序编译与代码优化、高效并发。各个部分之间基本上是互相独立的,没有必然的前后依赖关系,读者可以从任何一个感兴趣的专题开始阅读,但是每个部分各个章节间则有先后顺序。
由于文章篇幅限制,无法为大家展示全部内容,仅展示目录及部分片段,完整版已为大家备好
需要获取得话麻烦一键三连+评论,然后添加 VX(tkzl6666)即可免费领取
![](https://static001.geekbang.org/infoq/ea/ea88bf86507dfb312cd9c4de0c6db881.png)
第一部分走近 Java
![](https://static001.geekbang.org/infoq/6a/6ae3816a2f2970ced7d33ecce598c678.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
第 1 章走近 Java
![](https://static001.geekbang.org/infoq/37/37446dbf09d51538001cff57ff98ece0.png)
第二部分自动内存管理
![](https://static001.geekbang.org/infoq/a0/a0b1aaf1d16cade0d955c40ff8436ce8.png)
第 2 章 Java 内存区域与内存溢出异常
![](https://static001.geekbang.org/infoq/05/056890c0214d7b755c83e16c8951e58d.png)
第 3 章垃圾收集器与内存分配策略
![](https://static001.geekbang.org/infoq/80/80f5da07e68a93090c79e214349476e7.png)
第 4 章虚拟机性能监控、故障处理工具
![](https://static001.geekbang.org/infoq/ee/ee9223b48d98117af69be2ce32c9a53f.png)
第 5 章调优案例分析与实战
![](https://static001.geekbang.org/infoq/57/57372aae70a0d8ba256ba44d49153340.png)
第三部分虚拟机执行子系统
![](https://static001.geekbang.org/infoq/2b/2b7de1aa7885af90311bcebf16b98a3e.png)
第 6 章类文件结构
![](https://static001.geekbang.org/infoq/b1/b1eb3900ea67a9a62e0a3617dab6ae23.png)
第 7 章虚拟机类加载机制
![](https://static001.geekbang.org/infoq/2b/2bf5a205c7f64a55303f54401d0a633f.png)
第 8 章虚拟机字节码执行引擎
![](https://static001.geekbang.org/infoq/3b/3b62ec92f0e94a1554d3aeb8f4671727.png)
第 9 章类加载及执行子系统的案例与实战
![](https://static001.geekbang.org/infoq/d7/d7c90fda7bfdf353b222690dc11f9b6d.png)
第四部分程序编译与代码优化
![](https://static001.geekbang.org/infoq/f1/f11ad37f75da58965d9c9936b03f2d0e.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
第 10 章前端编译与优化
![](https://static001.geekbang.org/infoq/9a/9a6b55b439083c44090ebf2aec925bef.png)
第 11 章后端编译与优化
![](https://static001.geekbang.org/infoq/4b/4b49aab54c7c3a98bece32131e82969b.png)
第五部分高效井发
![](https://static001.geekbang.org/infoq/fb/fb9364dfef5881b8449baeb4a1537725.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
第 12 章 Java 内存模型与线程
![](https://static001.geekbang.org/infoq/58/580aa5550aa71eb12080d8ae3b80cf02.png)
第 13 章线程安全与锁优化
![](https://static001.geekbang.org/infoq/8f/8fe20bbeab9c0d8fe92865c8f6430bcb.png)
本书面向的读者
(1)使用 Java 技术体系的中、高级开发人员 Java 虚拟机作为中、高级开发人员修炼的必要知识,有着较高的学习门槛,本书可作为学习虚拟机的教材。
(2)系统调优师
系统调优师是最近几年才兴起并迅速流行起来的职业,本书中的大量案例、代码和调优实战将会对系统调优师的日常工作有直接的参考作用。
(3)系统架构师
保障系统的性能、并发和伸缩等能力是系统架构师的主要职责之一 ,而这部分与虚拟机的运作密不可分,本书可以作为他们制定应用系统底层框架的参考资料。
领取文章中阿里 P8 闭关 3 个月总结的 769 页虚拟机笔记只需要:
需要获取得话麻烦一键三连+评论,然后添加 VX(tkzl6666)即可免费领取
![](https://static001.geekbang.org/infoq/ea/ea88bf86507dfb312cd9c4de0c6db881.png)
评论 (1 条评论)