JVM高频面试试题及详细答案.docxVIP

  • 0
  • 0
  • 约8.17千字
  • 约 10页
  • 2026-06-08 发布于河北
  • 举报

JVM高频面试试题及详细答案

一、JVM内存模型相关

1.请详细说明JVM运行时数据区的组成,以及各区域的作用和可能发生的OOM场景

答案:

JVM运行时数据区主要分为5个核心区域,各自职责和OOM场景如下:

• 程序计数器:线程私有,存储当前线程执行的字节码行号指示器,是唯一不会OOM的区域。多线程切换时通过它恢复执行位置,若执行native方法则值为undefined。

• Java虚拟机栈:线程私有,栈帧组成(局部变量表、操作数栈、动态链接、方法出口)。每个方法调用时创建栈帧入栈,执行完出栈。OOM场景:栈深度超过虚拟机允许的最大深度(StackOverflowError,如递归无终止条件);栈扩展时无法申请到足够内存(OutOfMemoryError,如创建大量线程导致栈内存总和超物理内存)。

• 本地方法栈:线程私有,与虚拟机栈功能类似,区别是为native方法服务。OOM场景同虚拟机栈(StackOverflowError/OutOfMemoryError)。

• Java堆:线程共享,JVM中最大的内存区域,用于存储对象实例和数组。堆被划分为年轻代(Eden区+Survivor区)和老年代,垃圾回收的主要区域。OOM场景:对象实例创建过多,垃圾回收无法释放足够内存(java.lang.OutOfMemoryErr

文档评论(0)

1亿VIP精品文档

相关文档