Java底层核心面试题(含详细真实面试版答案).docxVIP

  • 1
  • 0
  • 约5.82千字
  • 约 8页
  • 2026-08-24 发布于河北
  • 举报

Java底层核心面试题(含详细真实面试版答案).docx

Java底层核心面试题(含详细真实面试版答案)

一、Java基础与JVM底层

1、谈谈你对JVM内存模型(运行时数据区)的理解,各区域的作用和特点?

JVM运行时数据区分为线程私有和线程共享两部分,是Java程序运行的核心内存结构,各区域职责明确:

线程私有区域(随线程创建销毁,线程隔离)

1)程序计数器:当前线程执行的字节码行号指示器,记录代码执行位置,是唯一一个没有OOM的内存区域。线程切换后通过该寄存器恢复执行位置。

2)虚拟机栈:每个方法执行都会创建一个栈帧,存储局部变量表、操作数栈、动态链接、方法出口。基本数据类型、对象引用都存在这里。栈内存固定,递归过深、方法调用过多会出现栈溢出(StackOverflowError)。

3)本地方法栈:专门为JVM调用的Native方法服务,作用和虚拟机栈类似,负责本地方法的栈帧存储,同样会发生栈溢出。

线程共享区域(全局共享,JVM启动创建,关闭销毁)

1)堆内存:所有对象实例、数组都在堆中分配,是GC回收的主要区域。分为新生代、老年代,部分JVM包含元空间对应的堆划分。堆内存不足会抛出OOM。

2)方法区:存储类信息、常量、静态变量、即时编译后的代码缓存。JDK8之前是永久代,JDK8及之后彻底废弃永久代,改用元空间,元空间使用本地内存,不再占用堆内存,大幅降低类加载过多导致的OOM。

3)运行时常量池:属于方法区的一部分,存放

文档评论(0)

1亿VIP精品文档

相关文档