中文
[面试问题] JVM 的结构和原理

[面试问题] 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 寄存器

  • 记录线程执行当前指定指令时的指令地址

  • 从一条指令到另一条指令,该值会稳步波动,以确保所指向的值被执行

注释

JVM文档 고랭이님의블로그 sgwon1996的velog

댓글 작성

게시글에 대한 의견을 남겨 주세요.

댓글 0