JDK 25/26 性能与工具演进

共 23 题
#

1. JDK 25/26 下 G1/ZGC/Shenandoah 的选型依据(暂停目标、堆规模、吞吐)

A G1 通用性最好,ZGC/Shenandoah 面向低暂停与大堆,选型需权衡暂停/吞吐/堆规模 ✓ 正确答案
B ZGC 吞吐高于 G1
C Shenandoah 只适合小堆
D G1 无法处理大堆
#

2. 将 Spring Boot 4.x 原生镜像投入生产时,与 HotSpot 相比 JFR、JVMTI Agent、堆转储、动态附加和栈符号化有哪些能力缺口或语义差异

A 原生镜像不支持 JVMTI Agent、运行时动态附加,JFR 支持受限,栈为原生栈 ✓ 正确答案
B 原生镜像支持完整的 JVMTI Agent
C 原生镜像与 HotSpot 工具链完全相同
D 原生镜像支持 JIT 相关工具
#

3. Project Leyden 当前交付的是围绕 CDS/AOT 缓存、提前类加载链接和方法画像的渐进式能力,而不是把任意 Java 应用直接编译成独立原生可执行文件;它与 GraalVM Native Image 在闭世界假设、峰值吞吐、缓存可移植性和动态类加载方面有何本质差异

A Leyden 与 GraalVM 完全相同
B GraalVM 保留动态类加载
C Leyden 用渐进式 AOT 缓存,保留动态类加载与 JIT 升级;GraalVM 闭世界、可移植性差 ✓ 正确答案
D Leyden 能编译成任意独立可执行文件
#

4. JDK 25/26 的 Generational Shenandoah 在大堆的优势

A 分代化让大堆回收更高效,提升吞吐并保持低暂停 ✓ 正确答案
B 分代 Shenandoah 只适合小堆
C 分代化会显著增加暂停
D 分代 Shenandoah 与旧版无差异
#

5. JEP 483/516 AOT 加载与缓存的启动加速

A JEP 483/514 提前生成 AOT 缓存,JEP 516 预创建对象,启动时加载减少编译与分配 ✓ 正确答案
B AOT 缓存无法加速启动
C 两者只加速 JIT 编译
D AOT 缓存只影响运行时性能
#

6. JEP 502/526 与单例模式的取舍

A Lazy Constants 可替代所有单例
B 两者完全相同
C Lazy Constants 适合惰性常量值,单例适合全局唯一有状态对象,按需选择 ✓ 正确答案
D 单例比 Lazy Constants 更简洁
#

7. JEP 506 Scoped Values 的高并发优势

A Scoped Values 在虚拟线程下读写更高效、无泄漏、线程安全 ✓ 正确答案
B Scoped Values 比 ThreadLocal 更慢
C Scoped Values 会泄漏
D Scoped Values 与 ThreadLocal 性能相同
#

8. JDK 25/26 与 GraalVM 25+ 的协作

A GraalVM 25 与 JDK 25 对齐,原生镜像与 AOT 缓存、GC 特性协同 ✓ 正确答案
B GraalVM 与 JDK 版本无关
C GraalVM 只支持老 JDK
D 两者无法协作
#

9. JDK 25/26 的 Compact Object Headers 在容器内存的影响

A 对象头压缩会增加内存占用
B 与 GC 无关
C 只影响大对象
D 压缩对象头减少对象内存开销,容器受限内存下提升利用率、降低 GC 压力 ✓ 正确答案
#

10. JDK 25/26 的 JFR Streaming API

A JFR Streaming API 允许实时订阅 JFR 事件流,用于监控与告警 ✓ 正确答案
B JFR Streaming 只能事后分析
C JFR Streaming 无法消费事件
D JFR Streaming 只有转储文件
#

11. JEP 484 Class-File API 与字节码工具的演进

A 它只能读取类文件
B 它只能解析旧字节码
C 它替代了所有专门的字节码需求
D 它是 JDK 标准化的类文件读取/生成/变换 API,JDK 24 定稿 ✓ 正确答案
#

12. JEP 485 Stream Gatherers 的应用

A Gatherers 支持滑窗、去重、聚合等自定义中间操作,与并行流兼容 ✓ 正确答案
B Gatherers 只能用于简单过滤
C Gatherers 无法组合
D Gatherers 与 Stream 无关
#

13. jdeps/jdeprscan 在检测 JDK 内部 API 使用与模块化迁移中的应用

A jdeps 只扫弃用 API
B 两者无法定位内部 API
C jdeprscan 检测模块依赖
D jdeps 检测内部 API 与模块依赖,jdeprscan 扫描弃用 API,配合模块化迁移 ✓ 正确答案
#

14. 从 jcmd GC.heap_dump 到 MAT 支配树的现代堆分析流程与 JFR 的配合

A jcmd 生成堆转储,MAT 支配树定位大对象,JFR 提供分配与 GC 上下文,配合分析 ✓ 正确答案
B jcmd 只能生成文本日志
C MAT 没有支配树
D JFR 无法配合堆分析
#

15. JEP 454 在 JDK 22 将 Foreign Function & Memory API 定稿后,Arena 的 confined、shared 与 auto 生命周期如何约束 MemorySegment 的跨线程访问和释放?把 JNI 库迁移为 Linker 的 downcall/upcall 时,结构体布局、回调存活期、errno 捕获和原生崩溃隔离应如何测试

A confined Arena 可跨线程访问
B 迁移 JNI 无需测试布局
C auto Arena 释放时机确定
D confined 单线程、shared 可跨线程、auto 由 GC 回收,迁移 JNI 需测试布局/回调/errno/崩溃 ✓ 正确答案
#

16. JEP 502/526 Stable Values/Lazy Constants 的延迟初始化收益

A 延迟初始化会增加启动开销
B 值在首次访问时初始化,减少启动开销与内存占用,且线程安全 ✓ 正确答案
C 延迟初始化不节约资源
D 延迟初始化需 DCL 样板
#

17. JDK 25/26 的 Foreign Function API 演进

A FFM 持续增强 Linker/布局/受限方法处理,是 JNI 的现代替代 ✓ 正确答案
B FFM 已被移除
C FFM 只支持 downcall
D FFM 与 JNI 无关
#

18. JDK 25/26 的 jlink/jpackage 演进

A jlink 无法配合 AOT
B jlink 与 jpackage 功能相同
C jpackage 只能打包单一平台
D jlink 支持链接时生成 CDS/AOT 缓存,jpackage 增强跨平台打包与签名 ✓ 正确答案
#

19. JDK 25/26 的工具链(jcmd/jstat/jfr)增强

A jcmd/jstat/jfr 增强了对 AOT、虚拟线程、HTTP/3、final 完整性等新特性的诊断 ✓ 正确答案
B jcmd 无法处理虚拟线程
C jfr 没有新事件
D jstat 无法统计分代 GC
#

20. JEP 508/529 Vector API 的应用场景

A Vector API 只适合串行逻辑
B Vector API 无法提升性能
C Vector API 适合图像处理、矩阵乘法、统计分析等可向量化数值计算 ✓ 正确答案
D Vector API 只能用于字符串
#

21. JEP 509 JFR CPU-Time 的 CPU 剖析

A 它等同于 wall-clock 采样
B 它只记录 I/O 时间
C 它基于 CPU 时间,更准确反映计算热点,排除 I/O 等待干扰 ✓ 正确答案
D 它是转储分析
#

22. Spring Boot 4.x 的 AOT 处理与 GraalVM Native Image 25+ 的闭世界分析分别负责什么

A 两者职责相同
B Spring Boot AOT 生成容器元数据与配置,GraalVM 闭世界分析做静态可达性分析,分工配合 ✓ 正确答案
C GraalVM 负责 Spring 容器构建
D Spring Boot AOT 不做构建时优化
#

23. Vector API 从 JEP 489(JDK 24)、JEP 508(JDK 25)

A JEP 489 是第 9 次孵化,JEP 508 是第 10 次孵化,持续优化 API 与可移植性 ✓ 正确答案
B JEP 489 已转正
C Vector API 在 JDK 24 已定稿
D 两次版本无变化