Java虚拟机内存模型简介

118 阅读2分钟

这是我参与2022首次更文挑战的第12天,活动详情查看:2022首次更文挑战

前言

在我们初学Java的时候,对于Java虚拟机了解的很少或者几乎没有了解,我们主要的精力还是在如何用Java语言进行程序的编写。但是随着我们的工作经验的增长,对于Java虚拟机的了解也是我们成长道路的必经之路的。所以,今天我们来了解一下Java虚拟机的一部分——Java虚拟机的内存模型。

Java虚拟机内存模型

大家对于内存的第一印象就是就是快,但是容量会比磁盘小很多。Java虚拟机的内存模型也有根据计算机的构成进行设计的(个人观点)。首先JVM的内存模型由以下几个部分构成:

  • 方法区:在方法区,存储了类名、直接父类名、方法和变量信息等所有类级别的信息,包括静态变量。每个JVM只有一个方法区,它是一个共享资源区。

  • 堆:所有对象的信息都存储在堆区中。每个 JVM 也有一个堆区。它也是一种共享资源区。

  • 栈:对于每个线程,JVM 创建一个存储在这里的运行时堆栈。该堆栈的每个块都称为激活记录/堆栈帧,其中存储方法调用。该方法的所有局部变量都存储在它们相应的框架中。线程终止后,其运行时堆栈将被 JVM 销毁。它不是共享资源。

  • PC程序计数器:存放线程当前执行指令的地址。显然,每个线程都有单独的PC程序计数器。

  • 本地方法栈:对于每个线程,都会创建一个单独的本机堆栈。它存储本机方法信息。

以上就是JVM内存模型的5个大的部分,其中我们的堆区,还有分为老年代和新生代,新生代中,还有区分Eden区和两个Survivor区。

总结

以上就是我们Java虚拟机的内存模型以及它的组成部分的介绍。