关于这部分内容,对测试开发工程师的面试来说一般很少会问及到。在面试阿里、滴滴、网易这些java 技术栈的公司可能会被问到。但是为什么我们需要学习和了解呢?其主要原因是后续我们如果要在使用java技术栈的公司做性能测试相关的工作时,拥有这些知识能更好的帮助我们去发现和分析问题。我还记得当时在网易实习的时候,看性能测试组同学写的测试报告中就包含了这部分内容。所以打好基本功总是没错的,尤其是我们还在学校的时候更是打基本功的好时间。对于苦苦学习JVM的同学,这篇文章应该能帮助大家解决大部分的基础面试题目。

入门视频推荐

学习JVM,有一本很经典的书籍《深入理解java虚拟机》。但是这本书对初学者来说真的不是非常友好。我推荐大家在理解这种比较晦涩的知识的时候,最好先看视频,然后再看书籍。这里推荐给大家我在B站上看到的不错的视频:https://www.bilibili.com/video/BV1kJ411g7C1 。看完视频之后再回过头来看这本书大家会觉得更容易一些。

视频看完了希望大家思考这样一个问题,面试过程中面试官可能会问:你了解java 的虚拟机吗?针对这样的问题,你打算怎么回答呢?或者换个角度来说,看完上面的视频,留在你脑海里面关于jvm都有那些方面的内容呢?如果你回答不了这个问题,那么我可以肯定的说,上面这个视频你真的是白看了。
接下来那我来说说我看完上面视频的几点收获和总结,供大家参考:

视频学习总结-JVM是什么&都有那些功能

简单来讲就是JVM就是一个可以被执行的程序,这个程序能帮助我们解决一件事情:解析并执行.class文件。这个过程中包含了java程序中使用的内存的分配和回收管理(空间),以及执行相应的代码指令(时间)。正是有了jvm的存在,我们java程序才能跨平台的执行,因为不同的平台会有相应版本的虚拟机(要记得我们安装JDK的时候根据不同的系统会下载不同的JDK)来帮助我们解析执行java程序。这些内容如果用图来总结的话,如下两幅图所示:



控制台输出

视频学习总结-JVM 内存管理要掌握的几个点

从上述我们知道,我们对jvm 更进一步的掌握就是要从空间和时间两个维度来了解。实际面试过程中考察更多应该都集中在空间维度上:jvm中的内存管理的一些知识点的考察。在内存管理中,我们需要知道以下几个要点:

(1)JVM可使用的内存是有限的。这个有限主要有两方面的原因:一个是我们的程序所宿主的主机的物理内存资源是有限的;第二个原因主机分配给JVM和java程序的内存资源是有限的,jvm在启动的时候会有一系列的参数设置相应内存空间的大小。