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

  • 1
  • 0
  • 约5.61千字
  • 约 7页
  • 2026-10-13 发布于河北
  • 举报

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

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

一、JVM与内存底层

1、JVM的内存区域划分有哪些?各自作用是什么?

JVM运行时数据区分为线程私有和线程共享两大块,是面试高频底层考点,具体划分和作用如下:

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

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

2.虚拟机栈:存放方法执行的栈帧,包含局部变量表、操作数栈、动态链接、方法出口。每个方法调用对应一个栈帧入栈,方法执行结束栈帧出栈。局部变量表存放基本数据类型、对象引用地址。

3.本地方法栈:作用和虚拟机栈类似,专门为JDK中的Native本地方法服务,比如操作系统底层调用的方法。

线程共享(全局唯一,所有线程共享):

1.堆内存:JVM最大的内存区域,所有对象实例、数组都在堆中分配内存,也是垃圾回收的主要区域,分为新生代、老年代。

2.方法区:存放类的元数据、常量、静态变量、即时编译后的代码缓存。JDK8之后彻底废弃永久代,改用元空间,元空间直接使用本地内存,不受JVM堆内存限制。

3.运行时常量池:属于方法区的一部分,存放编译期常量、运行期动态生成的常量,比如字符串常量。

2、堆内存的分代模型和垃圾回收机制?

Java堆采用分代回收思想,依据对象存活时间长短划分区域,提升回收效率,核心分为新生代和

文档评论(0)

1亿VIP精品文档

相关文档