[面试问题] JVM 的结构和原理
编译有关 JVM 的面试问题
23-06-27 填充未完成的内容 23-07-01 完成并填写内容
Java 概述
1. Java 的开发理念
一次编写,随处运行
-
以平台无关的语言为目标
-
开发的重点是能够在任何操作系统上运行用相同语言编写的代码(跨平台)。
2. JDK
-
Java 开发工具包 它是 Java 开发工具,包括 JRE 和 JVM。与默认情况下只需运行用 Java 编写的程序的用户不同,开发人员需要安装 JDK。JDK 包括一个编译器。
-
Java 运行时环境 Java 运行时环境包括 Java 类库、Java 类加载器和 JVM。使用类加载器和类库编写的 Java 代码可与类库结合在 JVM 上运行。
-
Java 虚拟机
什么是 JVM?
-
Java Virtual Machine,Java 虚拟机。
-
为运行 Java 程序提供环境的软件。
Java 代码 → 编译器 → 机器语言
通过为应用程序的执行分配内存来构建 Java 运行时数据区。
运行时数据区
-
堆区
-
方法区域
以上两个区域由所有线程共享
-
PC 寄存器
-
本地方法堆栈
-
堆栈区域
上述三个区域在每个线程启动时创建,并在终止时销毁。
每个区域的详细信息
1. 堆
- 存储类实例和数组的空间
垃圾回收 * 动态内存管理系统 "垃圾回收
2. 方法
- 存储类、接口结构的空间
3. 堆栈
-
类似于 C 语言的堆栈结构,存储局部变量和函数执行结果
-
它负责调用和返回函数,并有一个堆栈框架。
-
什么是堆栈框架?
每个函数的分隔空间,包含函数的调用信息。 以后进先出的方式处理堆栈框架 如果在没有空闲空间时添加了一个框架,就会发生堆栈溢出。 指针法使用序幕和尾声检查堆栈返回位置
4. 本地方法堆栈
-
用 C、CPP 编写的方法的执行堆栈
-
执行代码时分配本地方法栈
-
可能导致堆栈溢出错误或内存不足错误
-
可动态调整堆栈大小
5. PC 寄存器
-
每个线程都有一个 PC 寄存器
-
记录线程执行当前指定指令时的指令地址
-
从一条指令到另一条指令,该值会稳步波动,以确保所指向的值被执行
注释
댓글 작성
게시글에 대한 의견을 남겨 주세요.