JVM数据区高频面试题及详细答案(实战口语版).docxVIP

  • 1
  • 0
  • 约3.42千字
  • 约 6页
  • 2026-07-27 发布于河北
  • 举报

JVM数据区高频面试题及详细答案(实战口语版).docx

JVM数据区高频面试题及详细答案(实战口语版)

一、基础认知类(入门必问)

1、JVM运行时数据区包含哪几个区域?哪些是线程私有?哪些是线程共享?

参考答案:

JVM运行时数据区总共分5个部分:程序计数器、虚拟机栈、本地方法栈、堆、方法区。

其中线程私有(线程隔离、线程结束就释放):程序计数器、虚拟机栈、本地方法栈。

线程共享(全局共用、JVM启动创建、关闭销毁):堆、方法区。

简单记:和线程执行相关的栈类区域都是私有,存数据、存元信息的都是共享。

2、为什么这三个区域是线程私有?共享会有什么问题?

参考答案:

因为每个线程都是独立执行的,各自有自己的执行流程、栈帧、方法执行状态。如果多个线程共用栈、程序计数器,线程执行的代码位置、局部变量就会互相覆盖,直接乱序、报错。

而堆和方法区是存对象、静态变量、类信息的,本来就是多线程共享访问的,只需要做并发控制就行,不需要隔离。

二、各区域深度面试题(核心高频)

3、程序计数器的作用是什么?有什么特点?会不会OOM?

参考答案:

程序计数器就是当前线程执行代码的行号指示器,记录当前线程执行到哪一条字节码指令。

主要作用:线程切换后恢复执行位置,保证多线程切换后代码能接着往下跑。

特点:

1、唯一一个没有OOM的内存区域;

2、线程私有,内存极小,只存指令地址;

3、执行Native方法时计数器为空,执行Java代码时记录指令地址。

不会

文档评论(0)

1亿VIP精品文档

相关文档