面试经典一问,JVM 的主要组成部分及其作用?

Java工程师这个都问题答不出来,面试官直接先走一步?

如果不能理解一个问题,最好的办法是直接背诵

在java面试中,最常用,也可能是『必被问到』的一个题目就是JVM 的主要组成部分及其作用。下面教你如何回答面试官。

首先JVM包含『两个子系统』和『两个组件』

两个子系统为:Class loader(类装载器)、Execution engine(执行引擎);

两个组件为:Runtime data area(运行时数据区)、Native Interface(本地接口)。

然后我们再分说每个子系统和组件功能:

  1. Class loader(类装载器):根据给定的全限定名类名(如:java.lang.Object)来装载class文件到Runtime data area中的method area。
  2. Execution engine(执行引擎):执行classes中的指令。
  3. Native Interface(本地接口):与native libraries交互,是其它编程语言交互的接口。
  4. Runtime data area(运行时数据区域):这就是我们常说的JVM的内存。

他们之前的执行流程为:首先通过『编译器』把 Java 代码转换成『字节码』,『类加载器』(ClassLoader)再把字节码加载到内存中,将其放在运行时数据区(Runtime data area)的方法区内,而字节码文件只是 JVM 的一套『指令集规范』,并不能直接交给底层操作系统去执行,因此需要特定的『命令解析器执行引擎』(Execution Engine),『将字节码翻译成底层系统指令』,再交由 CPU 去执行,而这个过程中需要调用其他语言的本地库接口(Native Interface)来实现整个程序的功能。

此外,重点说明,类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Class对象,用来封装类在方法区内的数据结构;

如上解释,如果不理解请全文背诵,这个题几乎是必问题。

非专业的专业人士 原创文章

原创不易,请【关注】【点赞】【收藏】

如需转载,请回复说明

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章