全部学科
Python全栈
python
NodeJS全栈
nodejs

JAVA JVM基础与内存模型专题测试

20 题 45 分钟 难度:★★

考察知识点

本试卷涵盖以下核心知识点:

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包括虚拟机栈中的引用变量和方法区中的静态变量。

A

B

2

Java堆内存是所有线程共享的内存区域,用于存储对象实例。

A

B

3

Java程序能够"一次编写,到处运行"的根本原因是JVM的存在。

A

B

4

引用计数法是一种简单有效的垃圾回收算法,可以正确回收所有不可达对象。

A

B

5

对象的成员变量存储在堆内存中的对象实例里,而局部变量存储在栈内存中。

A

B

6

JVM本身是跨平台的,同一份JVM程序可以在不同操作系统上运行。

A

B

单选题
7

方法内的局部变量存储在哪个内存区域?

A

B

虚拟机栈

C

方法区

D

程序计数器

8

标记-整理(Mark-Compact)算法相比标记-清除算法的主要改进是什么?

A

提高了标记效率

B

减少了GC暂停时间

C

将存活对象整理到一端,消除内存碎片

D

不需要暂停用户线程

9

以下哪个场景通常需要打破双亲委派模型?

A

加载Java核心类库

B

加载应用程序的普通业务类

C

Web容器(如Tomcat)加载多个Web应用的类

D

加载扩展类库中的类

10

关于JDK 8中方法区的变化,以下说法正确的是?

A

方法区被完全移除,不再存在

B

永久代被元空间取代,元空间使用本地内存

C

方法区仍然在JVM内存中,只是改名为元空间

D

类信息直接存储在堆内存中

11

类的静态变量存储在哪个内存区域?

A

B

虚拟机栈

C

方法区

D

本地方法栈

12

Java中创建一个对象的主要流程是?

A

加载类 → 分配内存 → 初始化对象 → 设置引用

B

分配内存 → 加载类 → 初始化对象 → 设置引用

C

初始化对象 → 分配内存 → 加载类 → 设置引用

D

设置引用 → 加载类 → 分配内存 → 初始化对象

13

关于JVM的执行方式,以下说法正确的是?

A

JVM只能解释执行字节码,不能编译执行

B

JIT编译器会将所有字节码一次性编译成机器码

C

JIT编译器在运行时将热点代码编译成本地机器码以提高性能

D

JVM执行Java程序的性能永远不如C++等编译型语言

14

JVM中最顶层的类加载器是?

A

Extension ClassLoader

B

Application ClassLoader

C

Bootstrap ClassLoader

D

Custom ClassLoader

15

Java源文件经过编译后生成的是什么文件?

A

.java文件

B

.class文件

C

.exe文件

D

.jar文件

16

JVM的主要功能是什么?

A

将Java源代码编译成字节码

B

将字节码解释或编译成机器码执行

C

管理操作系统的硬件资源

D

提供Java API类库

多选题
17

以下关于JDK、JRE、JVM关系的描述,正确的有哪些?

A

JDK包含JRE,JRE包含JVM

B

JRE是Java运行时环境,包含JVM和核心类库

C

JDK是Java开发工具包,包含编译器等开发工具

D

只安装JVM就可以运行Java程序

18

关于Parallel Scavenge垃圾收集器,以下说法正确的有哪些?

A

Parallel Scavenge是新生代收集器,使用复制算法

B

Parallel Scavenge是多线程收集器

C

Parallel Scavenge关注吞吐量而非暂停时间

D

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.堆;虚拟机栈;方法区
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 JAVA IO与NIO深入专题测试
下一套试卷 → JAVA反射与注解专题测试
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码