2023Java高频面试题,jvm虚拟机体系结构,收藏必看!

1. 前言

最近很多小伙伴在找工作.

在面试中, 面试官经常问到的一个面试题是 : 请说出Jvm虚拟机体系结构?

小伙伴们, 一般会说堆, 栈.....然后面试官问, 那还知道其他的吗, 然后小伙伴们就语塞了.......

面试后来问千锋健哥, 所以健哥在这里为大家来讲讲这个Jvm虚拟机体系结构的问题.

2. 面试题考点

如果面试官是千锋健哥的话, 那么我想考的就是看看候选人是否有对Jvm虚拟机结构有一个宏观的理解.

大家来想想为什么要问这个问题呢, 因为Jvm优化的第一步就是先要理解整个Jvm虚拟机的体系结构和作用, 然后再学习Jvm的垃圾回收机制, Jvm分析的命令等, 最后才可以做Jvm调优或者优化.

下面是健哥整理的关于Jvm虚拟机部分的整体学习思路和大纲:

2023Java高频面试题,jvm虚拟机体系结构,收藏必看!_第1张图片

 3. 解题分析

2023Java高频面试题,jvm虚拟机体系结构,收藏必看!_第2张图片

下面千锋健哥来带大家一起分析下这个问题的解题思路, 首先Jvm虚拟机结构一共分为九个部分如下:

接下来健哥再说一说每个部分的作用:

3.1. 类加载器

作用 : 类加载器(class loader)用来加载 Java 类到 Java 虚拟机中.

类加载器将 Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成java.lang.Class类的一个实例。每个这样的实例用来表示一个 Java 类。通过此实例的newInstance()方法就可以创建出该类的一个对象。

3.2. 方法区

作用 : Java方法区和堆一样,方法区是一块所有线程共享的内存区域,他保存系统的类信息。比如类的字段、方法、常量池等。

3.3. Java堆

作用 : 堆内存用于存放由new创建的对象和数组。例如: new String() 创建一个对象, 而这个对象就会放入Java堆中存储

3.4. Java栈

作用 : 线程私有,它的生命周期与线程相同。存储局部变量, 动态链接, 方法出口等信息.

3.5. 直接内存

作用 : 提高一些场景中的性能. 直接内存并不是虚拟机运行时数据区的一部分,也不是Java 虚拟机规范中定义的内存区域。在NIO中增加NIO的性能.

3.6. 本地方法栈

作用 : 用于本地方法调用, JDK源码中好多使用了Native关键字, 也就是调用底层C语言编写的方法.

3.7. 垃圾回收系统

作用: 垃圾回收器也叫做垃圾回收系统, 用于在Jvm运行时, 回收垃圾(不用的对象), 释放被占用的内存.

3.8. PC寄存器

作用 : 每个线程启动的时候,都会创建一个PC寄存器。保存下一条将要执行的指令地址. PC寄存器的内容总是指向下一条将被执行指令的地址,这里的地址可以是一个本地指针,也可以是在方法区中相对应于该方法起始指令的偏移量。

3.9. 执行引擎

作用 : 执行编译后的字节码指令.

4. 总结

经过上面的分析最后千锋健哥来给大家总结下这个问题的完整答案:

Jvm虚拟机体系结构一共分为九个部分:

类加载器, 方法区, Java堆, Java栈, 直接内存, 本地方法栈, 垃圾回收器, pc寄存器, 执行引擎.

大家一定要牢记哦, 这可是高频面试题!!!

你可能感兴趣的:(jvm,java,面试)