首页 > 图灵资讯 > java面试题>正文
金三银四精选java面试题-JVM的主要组成部分
2024-01-07 10:15:15
你能谈一下JVM的主要组成部分吗?
JDK的JRE的区别作为一个Java开发,我相信每个人都知道。但是很多人却不知道JRE是Java虚拟机的实现。它可以分析字节码、解释代码然后执行它。我们作为开发人员,了解JVM的体系结构非常重要。它可以指导我们去写出性能良好的代码。能够很好的去分析性能问题。接下来带领大家来学习JVM的体系结构和它的组成部分。
我们看上面的体系图,里面的东西虽然有点多看起来很累,我们先别去看细节,我们就先关注三个最外围的部分:
- ClassLoader子系统
- 运行时数据区
- 执行引擎
类加载器
当 Java 虚拟机将 Java 源码编译为字节码之后,虚拟机便可以将字节码读取进内存,从而进行解析、运行等整个过程,这个过程我们叫:Java 虚拟机的类加载机制。JVM 虚拟机执行 class 字节码的过程可以分为七个阶段:加载、验证、准备、解析、初始化、使用、卸载。
运行时数据区
「运行时数据区」也可以叫做是「虚拟机内存结构」我们通常叫的比较多的还是JVM虚拟机内存结构。它指 JVM 运行时会把它管理的内存划分成若干个不同的数据区域 ,简单的说就是不同的数据放在不同的地方。共分为五个部分:方法区、堆、虚拟机栈、程序计数器、本地方法栈。
虚拟机栈
和程序计数器
是线程私有的,而堆
和方法区
是线程共享的区域。
执行引擎
我们最终代码是要运行的,这部分工作就是由执行引擎来完成。它会把分配给运行时数据区的字节码交给执行引擎来执行。执行引擎则会读取字节码并一段一段的执行它。
Java是一门半解释半编译型语言,所以执行引擎又分为了解释器
和JIT编译器
,解释器就是当Java虚拟机启动时根据预定义的规范把字节码翻译成对应的机器码逐行去解释执行。而JIT编译器是虚拟机将源代码直接编译成机器码。