📜  JVM分配了多少种内存区域?

📅  最后修改于: 2022-05-13 01:55:43.643000             🧑  作者: Mango

JVM分配了多少种内存区域?

JVM(Java Virtual Machine)是一个抽象机器,换句话说,它是一个程序/软件,它采用Java字节码并将字节码(逐行)转换为机器可理解的代码。

JVM(Java虚拟机)充当运行Java应用程序的运行时引擎。 JVM 是实际调用Java代码中存在的 main 方法的那个。 JVM 是 JRE(Java运行时环境)的一部分。

JVM执行一些特定类型的操作

  1. 加载代码
  2. 验证码
  3. 执行代码
  4. 它为用户提供运行时环境

类加载器

它是 JVM 的一个子系统,用于加载类文件。它主要负责三项活动。

  • 正在加载
  • 链接
  • 初始化

JVM分配的内存区域类型:

所有这些功能都采用不同形式的内存结构。 JVM 中的内存分为 5 个不同的部分

JVM架构

  1. 类(方法)区
  2. 程序计数器寄存器
  3. 本机方法堆栈

让我们简要介绍一下它们:

1.类(方法)区

类方法区是存储类代码、变量代码(静态变量、运行时常量)、方法代码和Java程序的构造函数的内存块。 (这里的方法是指在类中编写的函数)。它存储每个类的类级数据,例如运行时常量池、字段和方法数据、方法代码。

2. 堆

堆区是创建对象或存储对象的内存块。堆内存为类接口和数组分配内存(数组就是对象)。它用于在运行时为对象分配内存

3. 堆栈

每个线程都有一个私有 JVM 堆栈,与线程同时创建。它用于存储方法返回值和执行动态链接时需要的数据和部分结果。

Java Stack 存储帧,每次调用该方法时都会创建一个新帧。框架在其方法调用完成时被销毁

4.程序计数器寄存器:

每个执行特定方法任务的 JVM 线程都有一个与之关联的程序计数器寄存器。非本地方法具有存储可用 JVM 指令地址的 PC,而在本地方法中,程序计数器的值是未定义的。 PC 寄存器能够在某些特定平台上存储返回地址或本机指针。

5. 原生方法栈:

也称为 C 堆栈,本机方法堆栈不是用Java语言编写的。该内存是在创建时为每个线程分配的,它可以是固定的或动态的。