java虚拟机_Oracle独家:Java虚拟机学习指南

大家好,我是极客时间《深入拆解 Java 虚拟机》作者、Oracle Labs 高级研究员郑雨迪。有幸借这个专题的机会,能和大家分享为何 Java 工程师要学 Java 虚拟机?如何掌握 Java 虚拟机?

工欲善其事,必先利其器

“为什么学 Java 虚拟机”这个问题,就和“为什么要学习数据结构和算法”是一个道理:工欲善其事,必先利其器。

我总结了三点必须要学好 Java 虚拟机的理由:

  • Java 已然是一门主流的工程语言,拥有大量的应用。作为 Java 语言的执行引擎,Java 虚拟机的调优一直是热点话题,成为各大厂面试的压轴题。

  • 此外,主流的 Java 虚拟机 -- 也就是 OpenJDK 的 HotSpot VM-- 是完全开源的。只要读得懂 C++ 代码,便能够绕开网络上的“二手”资料,直面 Java 实现的核心逻辑。

  • Java 在不断地增添新特性、新功能,其中不少都“借鉴”自其他编程语言。同样,通过学习 Java 虚拟机,在遇到其他语言实现时也能够触类旁通,迅速地完成调优、排错工作。

另外,我注意到国内大厂不再只满足于使用开源项目,而是积极参与这些项目的开发。例如 Alibaba 在去年便已成为 OpenJDK 项目执行委员会的一员,可以左右 Java 语言的发展。一旦越来越多的大厂加大对底层、对这些开源项目的投入,势必会产生许多对高精尖技术专家的需求。

所以,作为一名 Java 程序员,在尽情享受 Java 虚拟机带来好处的同时,你还应该去了解和思考“这些技术特性是如何实现的”,去了解最底层的原理。只有熟悉 JVM,你才能在遇到 OutOfMemory 等异常时,不会束手无策,不会一脸懵逼的上网找解决办法,最后就算改了几个启动参数解决了问题,也还是云里雾里。

那该如何揭开 Java 虚拟机迷雾,深入底层,将 Java 虚拟机拿下?我分为 3 个阶段来分享,每个阶段大家又该具备哪些技能?

先附上一张我制作的「Java 虚拟机知识框架图」,涵盖了 Java 虚拟机的所有学习要点,建议保存。

76b2b197318e815dc46e05650d75608b.png

此外,我去年在极客时间推出的《深入拆解 Java 虚拟机》专栏,就是希望你可以从底层出发,揭秘 Java 虚拟机的工作原理,让你更好地理解 Java 语言特性,写出简洁高效的代码,并掌握诊断手法和调优方式。同时,我也会讲到 Orcale GraalVM 黑科技,让大家了解到前沿技术热点,比如编译器 Graal、语言实现框架 Truffle 等待。不管你是在准备面试、还是想进阶 Java,Java 虚拟机绝对是一把助力的利剑。

一、Java 虚拟机新手入门

虽然我们和语言朝夕相处,但不少人提及代码的详细运行过程也难免会一时语塞。这都是由于 Java 虚拟机封装得太好,让使用者几乎感觉不到它的存在,也导致不少初学者学习 Java 虚拟机时摸不着头脑,找不到脉络。

Java 虚拟机的基本原理及运行机制,对于初学者来说,是必须要掌握的,至少我是这么要求的。不然根基不牢,何来平地高楼起。

所以我也花了一整个模块的篇幅来逐次介绍 Java 虚拟机的设计决策以及工程实现,让大家在学习 Java 虚拟机时,可以知其然,也要知其所以然。

以下是专栏里的部分原理内容,大家对照着,看看是否已掌握。

  • Java 代码有很多种运行方式,那 Java 虚拟机具体是怎样运行 Java 字节码的?[第 1 讲 | Java 代码是怎么运行的?]

  • boolean 在 Java 虚拟机是以整数形式表示的 --0 代表 false,1 代表 true。那么 2 又代表什么呢?为什么要这样设计?[第 2 讲 | Java 的基本类型]

  • 都说反射慢,究竟为什么慢?[第 7 讲 | JVM 是如何实现反射的?]

  • 垃圾回收的原理是什么?如何优化? [第 11 讲 | 垃圾回收]

  • Java 内存模型是在解决什么疑难杂症? [第 13 讲 | Java 内存模型]

二、进阶 Java 虚拟机

告别了 GRUD 研究员,如果你想再进一步进阶,那么以下是知识点是你必须要掌握的。弄懂了这些,你基本上掌握了面试官 80% 的问题。

  • 怎么判定对象已经“死去”?垃圾回收的原理是什么? [第 11 讲 | 垃圾回收(上)]

  • Java 虚拟机的堆是如何划分的? [第 12 讲 | 垃圾回收(下)]

  • Java 内存模型是在解决什么疑难杂症? [第 13 讲 | Java 内存模型]

  • 如何用红绿灯类比 Java 虚拟机中的各项锁优化?[第 14 讲 | Java 虚拟机是怎么实现 synchronized 的?]

  • 即时编译器有哪些优化?[第 16 讲 | 即时编译(上) ]

  • 即时编译器应用了哪些面向循环的编译优化?[第 25 讲 | 循环优化]

  • JVM 垃圾回收算法

当然,我希望大家能系统学习 Java 虚拟机,而不是为了面试去刷题。更要的是希望这个专栏能激发出大家学习 Java 虚拟机乃至其他底层工作、前沿工作的热情。

就像我开设这个专栏一样,为不辜负大家的信任,我几乎每篇专栏都会大量阅读 HotSpot 的源代码,和同事讨论实现背后的设计理念,在这个过程中,我也发现了一些 HotSpot 中的 Bug,或者年久失修的代码,又或者是设计不合理的地方。苦中有乐,忙碌中又有惊喜。

34e4b9b77283f93e9549ae899c0a69d3.png《深入拆解 Java 虚拟机》3 月 20 日(3 天后)起涨价至¥99,限时拼团¥58

三、Java 虚拟机高手

在我的专栏中,有一条令我印象颇深的留言,讲的是他如何解决反射调用效率低下的问题。之所以印象深刻,是因为他的做法和 Java 虚拟机中附带的自动优化方式完全一致。换个角度来看,他其实已经具备为 Java 虚拟机设计优化的能力,也完全可以将这一优化实现回馈给 OpenJDK 社区。

举一反三,主动的解 t 决问题,且能回馈开源。这必然是高手需要具备的能力之一。

这时候大家必须去想的一个问题:如何让 Java(以及其他 Java 虚拟机语言,如 Scala、Kotlin 等)跑得更快?

主要分三个方面去考虑:

  • 什么是虚方法调用?如何消除虚方法调用开销?[第 20 讲 | 方法内联]

  • Java 虚拟机是如何进行硬件加速的?[第 22 讲 |HotSpot 虚拟机的 intrinsic]

  • 我需要手工避免 new 语句吗?[第 23 讲 | 逃逸分析]

另外,我也推荐你看看专栏里这些内容,追上 JVM 的前沿技术热点:

  • 第 34 讲 | Graal:用 Java 编译 Java

  • 第 35 讲 | Truffle:语言实现框架

  • 第 36 讲 | SubstrateVM:AOT 编译框架

再之,Java 虚拟机有很多工具,需要大家熟练掌握,比如 javap-- 能够将 class 文件反汇编人类可读格式的工具;OpenJDK 项目 Code Tools-- 包含了好几个实用小工具,又或者是 ASM--Java 字节码框架等等。

在专栏里,我专门有几篇文章来介绍各类工具的使用:

  • 如何通过注解处理器自动生成业务逻辑? [第 27 讲 | 注解处理器]

  • 如何标准化地衡量程序性能? [第 28 讲 | 基准测试框架 JMH]

  • 如何对 Java 虚拟机进行监控及诊断?[第 30 讲 | Java 虚拟机的监控及诊断工具(命令行篇)]

3 天倒计时福利

《深入拆解 Java 虚拟机》3 月 20 日(3 天后)起涨价至¥99,限时拼团¥58,已超过 2.2w 人加入学习,想认真进阶 Java 的同学,请抓紧搭上这趟末班车(方式:点击下图)

1fa25472a40c51f7990e9a1d80efb9da.png

下面给大家截了部分读者评价,你可以参考。

5479474ffa4683e1d78367ca461a9049.png可以点击看大图

额外福利:

今日参团,还可获得 Java 学习礼包:郑雨迪总结的《Java 虚拟机知识图谱》+《Java 经典图书 *6》+《Java 面试卡片》。(具体操作:将截图在后台,审核通过后立即获得链接。)

点击“”,试读或订阅

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355795.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows聚焦壁纸不更新_壁纸推荐说 | 爱上你的壁纸,每天更新的免费壁纸软件dynamic theme...

搜罗东西 好物尝鲜图|源网络文|百里丶“ 看官们好!这里是每期都在的百里,每期的好物推荐缘由都会出现在这里。喜欢的小伙伴可以点个关注呦!看过前文的小伙伴都知道百里是一个爱好尝鲜的,那对于自己每天一定会接触到的…

jOOQ星期二:拉斐尔·温特豪德(Rafael Winterhalter)正在与字节好友搏斗字节码

欢迎来到jOOQ Tuesdays系列。 在本系列中,我们每隔一个月的第三个星期二发布一篇文章,从jOOQ的角度采访我们发现该行业令人兴奋的人。 这包括从事SQL,Java,开放源代码以及其他各种相关主题的人员。 我们很高兴在第七版中与Rafae…

软件工程个人作业03—找水王

实验要求: 结对开发伙伴: 姓名:陶雨洁 博客地址链接:http://www.cnblogs.com/Amyheartxy/p/6736268.html 一、设计思想 其实在课堂上,老师已经点出了一点思路,已经很接近于答案,具体思路如下&am…

wps分享为什么要登入_【知识分享】柴油为什么要加氢处理?

柴油是石油经过常压分馏后得到的产物。如果直接由石油炼制得到,柴油中的硫、氮、氧含量较高,烯烃的含量也比较高。产品中烯烃的含量高则容易出现变色现象,而且还会影响机动车的使用寿命,对大气污染程度也相对大些。为了克服上面这…

mybatisplus 结果_SpringBoot + MyBatisPlus 快速入门

Hello,大家好!前面与大家分享了一次如何搭建Java项目脚手架,并且送给大家一个基础项目模板。那今天与大家分享如何使用这个基础项目,也就是快速上手 SpringBoots ➕ MyBatisPlus。 项目 / 目录结构 天津商业大学学院信息 这是一张天津商业大学…

w7鼠标计算机无法识别,win7电脑遇见usb鼠标无法标识的详细处理步骤

部分win7电脑用户遇见usb鼠标无法标识的情况,要怎么处理呢?下面教程就为你们带来了win7电脑遇见usb鼠标无法标识的详细处理步骤。1、首先,如果你的鼠标出现没有反应的情况,你就把鼠标拔下来,然后插到电脑的另一个USB插口上面&…

小米air2se耳机只有一边有声音怎么办_别光盯着AirPods,这些无线蓝牙耳机,其实也很好用...

几年前TWS耳机市场还是AirPods的天下,但如今TWS已经不再是苹果专属,很多手机厂商也入局TWS耳机行列里来,推出了很多高性价比的TWS耳机,今天小编就给大家推荐4款TWS耳机,当然如果有更好的推荐也欢迎大家补充。1、小米 A…

webpack打包生成的map文件_一站式搞明白webpack中的代码分割

上次分析到通过devtool的配置项来设置source map,在线上环境可以通过设置成cheap-module-source-map来生成单独的map文件,但是map文件在线上环境会不会每次都加载呢?如果加载的话,会不会造成带宽和请求的浪费呢?笔者也…

计算机PMA,PMA通信协议分析及仿真工具

PMA通信协议分析及仿真软件是专为计算机通信开发人员打造的一款模拟分析工具,现在不少设备在进行开发的时候都需要对通信协议进行分析了,使用这款工具可以有效地对设备进行模拟、查看通信状况以及进行模拟仿真处理等操作,软件提供了多种运行模…

红帽JBoss企业应用平台7.0 ALPHA发布了!

红帽JBoss企业应用程序平台7(JBoss EAP 7)是基于开放标准构建并符合Java Enterprise Edition 7规范的中间件平台。 它将WildFly Application Server 10与高可用性群集,消息传递,分布式缓存和其他技术集成在一起。 现在可以下载最新…

chrome只能装在c盘吗_电脑硬盘使用与文件整理入门——逃离C盘?

在Windows 10伴随着SSD固态硬盘大范围铺开的背景下,曾经广泛传播的硬盘使用模式(C盘装系统,D盘装软件,E、F盘放各种文件)是否还有实践意义?我们该基于什么样的理念来养成一些良好习惯,从而安全又…

机器人峰会王伟_【“峰”景独好】大美中国探春中国机器人峰会举办地——浙江宁波余姚...

导读:5月8日至10日,第六届中国机器人峰会暨智能经济人才峰会即将盛大启幕,海内外重磅嘉宾、业界精英将汇聚一堂,带来一场超高水准的人工智能盛宴。会议举办地浙江宁波余姚,历史悠久、文化底蕴深厚,通过文化…

计算机ip地址未修复连接不了无线网络,本地连接没有有效的ip配置,教您修复本地连接没有有效的ip配置...

我们在平时使用电脑工作中,时常会遇到网络连接不上,进行网络诊断后,会提示“本地连接没有有效的IP配置”的问题,那么如何解决这个问题呢?下面小编就来给大家快速修复本地连接没有有效的ip配置的问题。经常使用电脑上网…

同步方法 调用异步防范_.NET Web应用中为什么要使用async/await异步编程?

布莱恩特:.NET Core开发精选文章目录,持续更新,欢迎投稿!​zhuanlan.zhihu.com前言1.什么是async/await? await和async是.NET Framework4.5框架、C#5.0语法里面出现的技术,目的是用于简化异步编程模型。2.async和await…

戴尔电脑开机黑屏怎么办_笔记本电脑开机黑屏怎么办

笔记本电脑开机黑屏是什么原因,电脑黑屏问题如何修复解决众所周知笔记本电脑的散热性能不是特别好,长时间使用笔记本电脑就可能会出现笔记本发烫的状况,严重的有可能造成笔记本电脑出现问题。人们在使用笔记本电脑时可能会出现电脑开机黑屏等情况&#x…

ftp服务器上传文件提示451,解决IIS7之FTP部分文件上传451错误

单位的需要搭建一个FTP,于是就直接使用服务器上的IIS添加了FTP组件,大家都知道IIS组件中的ftp服务器功能比较简单,但是设置起来不太个性化!配置好以后,添加一个组的用户具有上传及读取权限,使用Flashfxp软件…

存根类 测试代码 java_嘲弄和存根–了解Mockito的测试双打

存根类 测试代码 java介绍 我遇到的一件事是使用模拟框架的团队假设他们在模拟。 他们并不知道Mocks只是Gerard Meszaros在xunitpatterns.com上分类的“测试双打”之一。 重要的是要认识到每种类型的双重测试在测试中扮演着不同的角色。 用与学习不同模式或重构相同的方式&a…

只会python怎么挣钱_业余学python有用吗

Python的火热我就不细说了,大家都是编程老司机,对最前沿最火热的编程语言肯定比我还了解。前几天,我看了一篇“如何用Python制造一个抖音小姐姐发掘器?”,阅读量竟然比头条上的还多了一倍。可见Python的火热&#xff0…

物联网项目:将Arduino连接到Ubidots和Android –第1部分

这个物联网项目探索了物联网的一个重要方面:如何使用以太网屏蔽将Arduino连接到物联网云平台 。 这方面很重要,因为可以将数据存储在云中然后进行分析。 一旦数据(如传感器值)存储在云中,便可以使用智能手机访问数据并…

iphone黑屏转圈_iphone XR被曝新BUG,众多用户中招,无规律黑屏假死

进入今年一月份以来,苹果放宽了对iphone的定价,所以各大电商都对多款iphone XR进行了上千元的降价。这也让iphone XR瞬间取代了华为MATE 20 PRO成为新的“真香机”。而随着iphone XR的用户越来越多,这款手机也再次爆出新的BUG。根据网友的反馈…