当前位置: 首页 > news >正文

【新书速递】深入理解Java虚拟机HotSpot

横看成岭侧成峰,远近高低各不同。不同的人从不同的角度看到的HotSpot VM也不尽相同。从Java应用开发者的角度出发,虚拟机如图下所示。

Java应用开发者关注Java语言,关注应用的实现和库的实现,用合法的Java代码表达思想,通过编译器工具编译产出字节码交给虚拟机运行。在他们眼中虚拟机是一个黑盒,所以更期望虚拟机的行为能遵循Java相关规范,这样才能放心地用语言集实现应用程序或库,进而供用户使用。

虚拟机开发者关注虚拟机内部,在他们眼中,虚拟机不再是黑盒,而是各个组件根据规则交互的一套“Java操作系统”。当上层应用出现问题时,他们可以从虚拟机层找出问题致因,当上层语言需要新特性、新功能,或者下层操作系统提供新特性时,他们可以在虚拟机层实现,然后以某种方式暴露给上层。从虚拟机开发者的角度出发,虚拟机如下图所示。

很多JVM的底层技术细节你是否只了解表面?

面对JVM Crash或性能调优方面的问题时你是否会束手无策?

面对上层Java应用发生的偏离预期的行为是否会不知所措?

 ……

今天为你推荐一本新书《深入解析Java虚拟机HotSpot》,这本书以源码分析为基础,从运行时、垃圾回收器、即时编译器3个维度全面、深入解析HotSpot VM的底层实现和工作机制,同时与上层的Java语言和库结合,指导读者解决JVM开发、JVM调优和JVM排错方面遇到的各种问题。作者是阿里云Java技术专家,热衷于研究编程语言的设计与实现,对Java虚拟机和编译器都有很深入的研究。

广度与深度兼顾:广度上涵盖Graal VM、CDS、Instrumentation、编译重放、非标准字节码、RTM锁、JIT调试工具、EpsilonGC/ShenandoahGC/ZGC、G1字符串去重等重要知识点;深度上深入解析了C1、C2、G1GC、ObjectMonitor、Mutex、模板解释器等的底层实现。

 

全书共 11 章,参考 OpenJDK 社区的划分方式来组织内容,分为运行时、即时编译器、垃圾回收器三个部分。

第一部分 运行时

首先,从Java生态系统的角度,简单介绍了JDK、JVM、JEP、HotSpot VM、Graal VM,引导读者快速进入Java虚拟机的世界;然后从源码的角度深入解析了HotSpot VM的类可用机制、对象和类、运行时、模板解释器和并发设施。

第二部分 即时编译器

首先重点介绍了即时编译器技术、编译理论、编译器调试方法等编译器的基础知识;然后详细讲解了C1和C2两个即时编译器的实现原理、工作机制和优化方法。

第三部分 垃圾回收器

首先全面介绍了Epsilon GC、Serial GC、Parallel GC、CMS GC、G1 GC、Shenandoah GC、ZGC等各种垃圾回收器,然后重点剖析了G1 GC。

作者杨易,Java开发工程师,就职于阿里云基础设施部。热衷于研究编程语言的设计与实现,对Java语言的设计与实现有非常深入的研究,尤其是Java的虚拟机HotSpot VM,在JVM的开发、调优和排错方面积累了丰富的经验。此外,在编译器领域也有较深厚的积累。有着自由软件精神的开发者,是GitHub中国区followers数量排名前100的开源项目维护者。

大多数程序员都有中年危机,而深入研究技术,将技术做深、做精、做专是技术人员避免中年危机的明智之举。对于Java程序员来说,这本书能带你走向Java底层,深入了解HotSpot虚拟机的运行原理与实现机制,是走向Java技术巅峰的不二选择。


扫码关注【华章计算机】视频号

每天来听华章哥讲书

更多精彩回顾

书讯 | 4月书讯 | 好书和最美四月天一起来了...

资讯 | DB-Engines 4月数据库排名:Redis有望甩掉“千年老七”?

书单 | 8本书助你零基础转行数据分析岗

干货 | 抛开数学,一文了解推荐系统框架及原理

收藏 | 终于有人将金融风险管理讲明白了

上新 | 河马书来了!线上实验领域的“圣经”火热预售中

赠书 | 【第51期】推荐几本深入学习Java的书,助你走向Java技术的巅峰

点击阅读全文购买

相关文章:

  • 筑牢“数据基座” 掘金数字经济——5位大咖畅聊金融科技
  • 字节跳动杨震原:A/B测试不是万能的,但不会一定不行 ​
  • 423世界读书日 | 今年的阅读计划完成三分之一了吗?
  • 【技术大会】阿里云 Serverless Developer Meetup 即将亮相上海
  • Pandas最详细教程来了!
  • 文末福利 | 吐血整理!140种Python标准库、第三方库和外部工具都有了
  • 大咖发声 | 聊聊火爆前端圈的“犀牛书”
  • 【第32期】盘点云计算领域不可不读的9本书
  • 为什么 Java 在 25 年之后依旧如此年轻:一个架构师的看法
  • 附PPT下载 | 企业数据价值现状及数据分析师的价值提升
  • 无论是要打牢计算机基础还是准备校招面试,这本书你不可错过!
  • 计算机系统之芯——从零开始设计CPU
  • 360漏洞响应平台(SRC)为白帽子挑选的10本互联网安全好书
  • 数据仓库分层存储技术揭秘
  • 如何构建和推送容器镜像
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • Angular Elements 及其运作原理
  • eclipse(luna)创建web工程
  • eclipse的离线汉化
  • Java读取Properties文件的六种方法
  • JAVA之继承和多态
  • JS基础之数据类型、对象、原型、原型链、继承
  • js作用域和this的理解
  • Python_OOP
  • python3 使用 asyncio 代替线程
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • Zsh 开发指南(第十四篇 文件读写)
  • 关于extract.autodesk.io的一些说明
  • 关于Java中分层中遇到的一些问题
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 记一次和乔布斯合作最难忘的经历
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 使用 @font-face
  • 微信支付JSAPI,实测!终极方案
  • 阿里云ACE认证学习知识点梳理
  • 容器镜像
  • #stm32驱动外设模块总结w5500模块
  • ( 10 )MySQL中的外键
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (八十八)VFL语言初步 - 实现布局
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (一)基于IDEA的JAVA基础12
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .axf 转化 .bin文件 的方法
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET Micro Framework初体验(二)
  • .NET的微型Web框架 Nancy
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • [<事务专题>]
  • [22]. 括号生成
  • [ARM]ldr 和 adr 伪指令的区别
  • [bug总结]: Feign调用GET请求找不到请求体实体类