JVM春招快速学习指南
1.说在前面
在Java相关岗位的春/秋招面试过程中,JVM的学习是必不可少的。本文主要是通过《深入理解Java虚拟机》第三版来介绍JVM的学习路线和方法,并对没有过JVM基础的给出阅读和学习建议,尽可能更加快速高效的进行JVM的学习与秋招面试的备战。
2.JVM是什么
在介绍JVM的学习备战路线和方法之前,先对JVM是什么做一个介绍,通过JVM是什么来理解为什么要学习JVM。
JVM即Java Virtual Machine,Java虚拟机,简单来说就是一台虚拟的计算机,平时编写的Java代码就需要借助JVM来运行。
详细点说,JVM内部实现了内存管理,例如JVM能够给我们Java代码中的对象进行内存分配、当对象没用的时候进行垃圾回收。而内存是我们操作系统的东西,所以JVM就相当于一个中间调度者,我们的Java代码编译生成字节码,字节码交给JVM,JVM调用操作系统的东西来实现代码的运行。过程如下图所示
通过上图不难得出Java“编译一次,到处运行”的原因,我们的Java代码都是 .java文件,通过编译生成 .class文件,然后class文件交给JVM,其他的执行细节都由JVM来完成,所以只要不同的操作系统上都安装了JVM就能够实现“编译一次,到处运行”。
到这里,大概已经明白了JVM是什么,JVM能够干什么,当然JVM的重要性也不言而喻,所以接下来介绍JVM的学习路线。
3.JVM学习指南
如果是准备面试的话,JVM的学习一共需要两个阶段,第一阶段主要通过看书来掌握JVM的理论基础和内涵,第二个阶段则是系统的看八股文(面试题)来达到一个复习和应对面试的效果
下图展示了《深入理解Java虚拟机》一书的目录,我把书的目录按照面试中出现的频率进行了划分。
选读: 选读部分主要是JVM实践和调优的部分,如果当前面试时间比较紧迫就可以跳过这一个部分。但有时间的话还是推荐阅读这一部分,JVM调优相对其它章节难度较大,但在校招的面试中是绝对的加分项
了解: 了解的部分是书中第六章,类文件结构,这部分主要介绍了Class文件的结构,这部分需要有一定的了解
掌握: 掌握部分是第八章的字节码执行引擎以及十二、十三章的并发部分。第八章的字节码分析,是比JVM调优稍微简单点的面试加分项,书中的分析也十分到位,作者几乎已经把知识给你嚼碎了,只差你自己送到胃里,所以把整个部分归纳为了掌握。至于十二和十三章,如果对Java并发编程有过学习推荐仔细阅读,会有不一样的收获。但如果备战学习的过程中还没有进行并发编程的学习,那么这两章可以先放一放,暂时不看,在Java并发编程的学习体系中更系统的去学习会更好。
熟悉: 第二章和第三章归纳为了熟悉,第二章是JVM学习的理论基础所以这一章必须深入理解并记忆。第三章垃圾回收则是面试的大热门,并且学习的成本相对上面的JVM调优和字节码指令要低,垃圾回收的知识体系结构划分的很清晰,所以学习难度相对不大。
(书中还有一个第一章,第一章讲讲Java发展史,然后教你装了个JDK,但我们所有人电脑上都已经有JDK了,所以第一章可看可不看吧,看了拓宽一下视野)
看完书之后就可以看面试题了,这里推荐库森和Guide的网站,网站上归纳了很完善的面试题。
库森:https://www.javalearn.cn/#/doc/JVM/面试题
Guide:https://javaguide.cn/java/jvm/memory-area.html#前言