Java 虚拟机面试题, JVM 垃圾回收调优的两个主要目标是什么?
Java 虚拟机面试题, JVM 垃圾回收调优的两个主要目标是什么?
QA
Step 1
Q:: JVM 垃圾回收调优的两个主要目标是什么?
A:: JVM 垃圾回收调优的两个主要目标是:1. 最小化垃圾回收引起的停顿时间。停顿时间会直接影响应用程序的响应速度和用户体验,尤其是在对响应时间有严格要求的系统中,如交易系统或在线游戏。2.
最大化吞吐量,尽量减少垃圾回收占用的 CPU 时间,以确保应用程序能处理更多的请求。
Step 2
Q:: Java 虚拟机中垃圾回收的主要算法有哪些?
A:: Java 虚拟机中的垃圾回收主要算法包括:1. 标记-清除算法:这是最基础的算法,分为标记阶段和清除阶段。2. 复制算法:通常用于年轻代,减少内存碎片。3. 标记-整理算法:适用于老年代,有效减少内存碎片。4.
分代收集算法:结合了多种算法,根据对象生命周期的不同将其分为不同代进行垃圾回收。
Step 3
Q:: 什么是JVM内存模型,如何划分不同的内存区域?
A:: JVM 内存模型指的是 Java 虚拟机运行时对内存的管理方式。内存被划分为多个区域,包括堆内存(Heap)、方法区(Method Area)、程序计数器(Program Counter Register)、虚拟机栈(JVM Stack)和本地方法栈(Native Method Stack)。堆内存主要存储对象实例,方法区存储类信息、常量、静态变量等,程序计数器用于指示当前线程执行的字节码指令位置,虚拟机栈和本地方法栈则分别存储方法执行时的局部变量表、操作数栈等。
Step 4
Q:: 什么是类加载机制?JVM是如何加载类的?
A:: JVM 的类加载机制是指 Java 虚拟机如何将 .
class 文件中的字节码加载到内存中,并将其转换为 JVM 能够执行的类对象。类加载的主要步骤包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)。加载阶段,JVM 会通过类加载器(ClassLoader)来查找并加载字节码文件;验证阶段,确保字节码文件的正确性和安全性;准备阶段,分配类变量的内存并初始化为默认值;解析阶段,将符号引用转换为直接引用;初始化阶段,执行类的静态代码块和变量的初始化。
Step 5
Q:: 什么是 JVM 中的 '逃逸分析'
,它有什么作用?
A:: 逃逸分析(Escape Analysis)是 JVM 优化中的一项技术,用于判断对象的作用域是否超出了方法范围。如果某个对象没有逃逸出方法,那么 JVM 可能会进行栈上分配或同步消除,这样可以减少堆上的分配压力和垃圾回收的负担,提高程序的运行效率。