JAVA JVM基础与内存模型专题测试
考察知识点
本试卷涵盖以下核心知识点:
JVM概述与跨平台原理(5题)
- JVM实现Java跨平台的原理
- JVM的主要功能(字节码转换为机器码执行)
- JVM本身是平台相关的,不是跨平台
- Java源文件编译生成.class字节码文件
- JIT编译器将热点代码编译成本地机器码
- JDK、JRE、JVM的关系(JDK ⊃ JRE ⊃ JVM)
JVM内存结构(堆、栈、方法区等)(5题)
- JVM运行时数据区五大区域:堆、虚拟机栈、方法区、本地方法栈、程序计数器
- 堆内存是所有线程共享的,存储对象实例
- 虚拟机栈存储方法调用栈帧和局部变量,线程私有
- 方法区存储类信息、常量、静态变量,线程共享
- JDK 8用元空间取代永久代实现方法区
- 程序计数器记录当前执行字节码指令位置
对象创建与内存分配(4题)
- 对象创建流程:加载类 → 分配内存 → 初始化零值 → 设置对象头 → 执行构造方法
- 对象的成员变量存储在堆中,局部变量存储在栈中
- 静态变量存储在方法区中
- 对象内存分配方式:指针碰撞和空闲列表
垃圾回收机制与算法(5题)
- 引用计数法无法解决循环引用问题
- JVM使用可达性分析算法判断对象存活
- GC Roots包括栈中引用变量、静态变量等
- 垃圾回收算法:标记-清除、标记-整理、复制算法
- 标记-整理算法消除内存碎片问题
- Minor GC、Major GC、Full GC、Mixed GC的区别
- Parallel Scavenge收集器关注吞吐量
类加载机制与双亲委派模型(5题)
- JVM类加载器层级:Bootstrap、Extension、Application、自定义加载器
- Bootstrap ClassLoader是最顶层的类加载器
- Application ClassLoader加载classpath下的用户类
- 双亲委派模型的工作原理
- 类的唯一性由类名和ClassLoader共同决定
- 打破双亲委派的场景(Tomcat、SPI、OSGi)
- 类加载器之间是组合关系而非继承关系
💡 参考答案在文末
判断题
1
JVM使用可达性分析算法判断对象存活,GC Roots包括虚拟机栈中的引用变量和方法区中的静态变量。
2
Java堆内存是所有线程共享的内存区域,用于存储对象实例。
3
Java程序能够"一次编写,到处运行"的根本原因是JVM的存在。
4
引用计数法是一种简单有效的垃圾回收算法,可以正确回收所有不可达对象。
5
对象的成员变量存储在堆内存中的对象实例里,而局部变量存储在栈内存中。
6
JVM本身是跨平台的,同一份JVM程序可以在不同操作系统上运行。
单选题
7
方法内的局部变量存储在哪个内存区域?
8
标记-整理(Mark-Compact)算法相比标记-清除算法的主要改进是什么?
9
以下哪个场景通常需要打破双亲委派模型?
10
关于JDK 8中方法区的变化,以下说法正确的是?
11
类的静态变量存储在哪个内存区域?
12
Java中创建一个对象的主要流程是?
13
关于JVM的执行方式,以下说法正确的是?
14
JVM中最顶层的类加载器是?
15
Java源文件经过编译后生成的是什么文件?
16
JVM的主要功能是什么?
多选题
17
以下关于JDK、JRE、JVM关系的描述,正确的有哪些?
18
关于Parallel Scavenge垃圾收集器,以下说法正确的有哪些?
填空题
19
JVM创建对象时,首先在堆中____________,然后将内存空间____________,接着设置____________信息,最后执行构造方法完成初始化。
20
根据JVM规范,运行时数据区主要包括:____________、____________、____________、本地方法栈、程序计数器。
参考答案
1.正确
2.正确
3.正确
4.错误
5.正确
6.错误
7.B
8.C
9.C
10.B
11.C
12.A
13.C
14.C
15.B
16.B
17.A;B;C
18.A;B;C;D
19.分配内存;初始化为零值;对象头
20.堆;虚拟机栈;方法区
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码