全部学科
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
判断题

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

A

B

2
判断题

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

A

B

3
单选题

JVM的主要功能是什么?

A

将Java源代码编译成字节码

B

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

C

管理操作系统的硬件资源

D

提供Java API类库

4
单选题

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

A

.java文件

B

.class文件

C

.exe文件

D

.jar文件

5
单选题

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

A

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

B

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

C

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

D

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

6
多选题

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

A

JDK包含JRE,JRE包含JVM

B

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

C

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

D

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

7
判断题

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

A

B

8
单选题

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

A

B

虚拟机栈

C

方法区

D

程序计数器

9
单选题

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

A

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

B

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

C

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

D

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

10
填空题

根据JVM规范,运行时数据区主要包括:________________________________________

11
判断题

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

A

B

12
单选题

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

A

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

B

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

C

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

D

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

13
单选题

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

A

B

虚拟机栈

C

方法区

D

本地方法栈

14
填空题

JVM创建对象时,首先在堆中________,然后将内存空间____________,接着设置______信息,最后执行________完成初始化。

15
判断题

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

A

B

16
判断题

JVM使用可达性分析算法判断对象存活,GC Roots包括虚拟机栈中的引用变量和方法区中的静态变量。

A

B

17
单选题

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

A

提高了标记效率

B

减少了GC暂停时间

C

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

D

不需要暂停用户线程

18
多选题

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

A

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

B

Parallel Scavenge是多线程收集器

C

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

D

Parallel Scavenge适合后台计算型应用

19
单选题

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

A

Extension ClassLoader

B

Application ClassLoader

C

Bootstrap ClassLoader

D

Custom ClassLoader

20
单选题

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

A

加载Java核心类库

B

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

C

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

D

加载扩展类库中的类

← 上一个试卷 JAVA IO与NIO深入专题测试
下一个试卷 → JAVA反射与注解专题测试

📝 发现内容有误?点击此处直接编辑

想参加完整模拟考试?
小程序提供计时考试、自动评分和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库