Java面试那点事——基础 200106
1. 说一下 jvm 的主要组成部分?及其作用?
组成部分:
- class loader(类加载器)、
- execution engine(执行引擎)、
- native interface(本地接口)、
- runtime data area(运行时数据区)
作用:
- 类加载器:把class文件加载到内存中,需要符合格式要求。
- 执行引擎:解释命令,提交到操作系统执行
- 本地接口:融合不同的编程语言为java所用
- 运行时数据区:所写的程序都要加载到这个区域运行
2.jvm 运行时数据区组成?
组成:
- 堆
- 栈
- PC计数器
- 方法区(1.8jdk之后转移到直接内存)
3. 堆栈的区别?
- 堆:Java内存管理中最大的一块,用来存储对象实例和数组,线程共享。
- 栈:分为虚拟机栈和本地方法栈,这里主要指的是虚拟机栈。虚拟机栈由一个个栈帧组成,每一个栈帧又由局部变量表、动态链接(对象引用)、方法出口等信息组成,线程私有。
4. 运行时数据区哪些是线程共享,哪些是线程私有?
线程私有:
- 栈
- PC计数器
线程共享:
- 堆
- 方法区(元空间)
5.Java 中成员变量、局部变量、静态变量、常量分别存储在那些内存区域中?
- 成员变量:堆
- 局部变量:分情况
- 局部变量是基本类型(8种基本类型):栈
- 局部变量是对象:对象实例存储在堆中,对象引用存储在栈中
- 静态变量(static修饰):方法区(元数据区)
- 常量(final修饰):方法区(元数据区)
【Java 面试那点事】
这里致力于分享 Java 面试路上的各种知识,无论是技术还是经验,你需要的这里都有!
这里可以让你【快速了解 Java 相关知识】,并且【短时间在面试方面有跨越式提升】
面试路上,你不孤单!