后端经典面试题合集, JDK 和 JRE 和 JVM 分别是什么,有什么区别?
后端经典面试题合集, JDK 和 JRE 和 JVM 分别是什么,有什么区别?
QA
Step 1
Q:: JDK 和 JRE 和 JVM 分别是什么,有什么区别?
A:: JDK(Java Development Kit)是用于开发Java应用程序的工具包,包含了JRE、编译器、调试器等工具。JRE(Java Runtime Environment)是Java程序的运行环境,包含了JVM和Java类库。JVM(Java Virtual Machine)是Java程序的虚拟机,它负责将Java字节码解释成机器码并执行。三者的关系是JDK包含JRE,而JRE包含JVM。
Step 2
Q:: JVM 是如何实现跨平台的?
A:: JVM 实现跨平台的关键在于 '一次编译,到处运行' 的理念。Java 源代码被编译成与平台无关的字节码 (.class 文件)
,而不同平台上的 JVM 实现负责将这些字节码转换为特定平台的机器码进行执行。这种机制使得相同的 Java 程序可以在不同的平台上运行,而无需重新编译。
Step 3
Q:: JVM 的内存结构是什么?
A:: JVM 内存结构主要包括以下几个区域:堆(Heap)、栈(Stack)、方法区(Method Area)、程序计数器(Program Counter Register)和本地方法栈(Native Method Stack)。堆主要用于存储对象实例,栈用于存储方法的局部变量、操作数栈等,方法区存储类信息、常量、静态变量等,程序计数器记录当前线程执行的字节码位置,本地方法栈则用于执行本地方法。
Step 4
Q:: 什么是垃圾回收(Garbage Collection),它如何工作?
A:: 垃圾回收(Garbage Collection)是 JVM 中自动管理内存的一种机制。它会自动清理不再被引用的对象以释放内存空间。垃圾回收器通过标记清除算法(Mark-and-Sweep)、复制算法(Copying)、标记整理算法(Mark-Compact)等方式工作,常见的垃圾回收器有 Serial、Parallel、CMS、G1
等。