面试必问|聊聊JVM性能调优?

25d591675d646088fa832f220d7f0798.png

若有收获,请记得分享和转发哦

对于工作3年左右的Java程序员来说,在面试大厂的过程中,面试官可能不会太关注你做了多少个项目、你的CRUD水平如何。更多的是关注你对某项技术点的理解深度,所以说,工作3年左右的小伙伴一定要把自己的重心放到技术的深度上来。

今天,我们先一起聊聊关于JVM性能调优的话题,本文的主要结构如下所示。

面试必问|聊聊JVM性能调优?_第1张图片

常见面试题

关于JVM,一道常见的面试题就是:Java中创建的对象是存储在JVM中的哪个区域的?

例如,这里,我们简单的列举一行代码,如下所示。

User user = new User();

关于上面的代码,不少小伙伴都知道,创建出来的User对象是放在JVM中的堆区域的,而User对象的引用是放在栈中的。但如果你只是了解到这种程度,那面试官就会认为你了解的太浅显了,可能就会达不到他们的要求。其实面试官想要了解你是否对JVM有一个更深入的认识。

站在面试官的角度来看这个问题时,回答创建出来的User对象是放在JVM的堆区,也并没有错。但是JVM的堆内存区域又会分为年轻代和老年代,而年轻代又会分为Eden区和Survivor区。JVM堆空间的逻辑结构如下图所示。

面试必问|聊聊JVM性能调优?_第2张图片

而面试官更想了解的是你能不能说出来创建的对象具体是存放在JVM堆空间的哪个区域。

在JVM内部,会将整个堆空间划分成年轻代和老年代,年轻代默认会占整个堆内存空间的1/3,老年代默认会占整个堆内存空间的2/3。年轻代又会划分为Eden区和两个Survivor区,它们之间的默认比例是Eden:Survivor1:Survivor2 = 8:1:1。

面试必问|聊聊JVM性能调优?_第3张图片

如果你能回答出 新创建的User对象是存放在JVM堆空间中年轻代的Eden区,那面试官就会对你刮目相看了。

面试必问|聊聊JVM性能调优?_第4张图片

面试必问|聊聊JVM性能调优?_第5张图片

面试必问|聊聊JVM性能调优?_第6张图片

面试必问|聊聊JVM性能调优?_第7张图片

面试必问|聊聊JVM性能调优?_第8张图片

面试必问|聊聊JVM性能调优?_第9张图片

面试必问|聊聊JVM性能调优?_第10张图片

面试必问|聊聊JVM性能调优?_第11张图片

面试必问|聊聊JVM性能调优?_第12张图片

面试必问|聊聊JVM性能调优?_第13张图片

面试必问|聊聊JVM性能调优?_第14张图片

面试必问|聊聊JVM性能调优?_第15张图片

面试必问|聊聊JVM性能调优?_第16张图片

面试必问|聊聊JVM性能调优?_第17张图片

面试必问|聊聊JVM性能调优?_第18张图片

面试必问|聊聊JVM性能调优?_第19张图片

面试必问|聊聊JVM性能调优?_第20张图片

面试必问|聊聊JVM性能调优?_第21张图片

面试必问|聊聊JVM性能调优?_第22张图片

接下来,介绍了类的加载过程,主要包含:加载、验证、准备、解析和初始化等步骤,同时,说明了各个步骤的主要作用。

最后,介绍了JVM中常用的调优参数,涵盖堆、新生代、方法区(元空间)和栈(线程)常用的调优参数。并以Tomcat调优为例,详细说明了如何使用这些调优参数。

说了这么多你都掌握了吗?

你可能感兴趣的:(java,python,人工智能,面试,jvm)