【面试:JVM】
说说Java虚拟机的生命周期及体系结构?
参见:Java虚拟机生命周期和体系结构
Java 是如何实现跨平台的?
注意:跨平台的是 Java 程序,而不是 JVM。 JVM 是用 C/C++ 开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的 JVM。
所谓“跨平台”,即实现“一次编译,到处运行”:
- 我们编写的 Java 源码,编译后会生成一种 .class 文件,称为字节码文件;
- Java 虚拟机(JVM)负责将字节码文件翻译成特定平台下的机器码然后运行。
也就是说,只要在不同平台上安装对应的 JVM,就可以运行字节码文件,运行我们编写的 Java 程序,这个过程,我们编写的 Java 程序没有做任何改变,仅仅是通过 JVM 这一“中间层”,就能在不同平台上运行(不同平台使用不同的 JVM 实现),从而实现“跨平台”。
什么是 JVM ?
JVM,即 Java 虚拟机(“Java Virtual Machine”)。它通过模拟一个计算机来达到一个计算机所具有的的计算功能。JVM 能够跨计算机体系结构来执行 Java 字节码,主要是由于 JVM 屏蔽了与各个计算机平台相关的软件或者硬件之间的差异,使得与平台相关的耦合统一由 JVM 提供者来实现。
JVM 由哪些部分组成?
JVM 的结构基本上由 4 部分组成:
- 类加载器,在 JVM 启动时或者类运行时将需要的 class 加载到 JVM 中。
- 执行引擎,执行引擎的任务是负责执行 class 文件中包含的字节码指令,相当于实际机器上的 CPU。
- 内存区,将内存划分成若干个区以模拟实际机器上的存储、记录和调度功能模块,如实际机器上的各种功能的寄存器或者 PC 指针的记录器等。
- 本地方法调用,调用 C 或 C++ 实现的本地方法的代码返回结果。