这是我参与2022首次更文挑战的第12天,活动详情查看:2022首次更文挑战
前言
在我们初学Java的时候,对于Java虚拟机了解的很少或者几乎没有了解,我们主要的精力还是在如何用Java语言进行程序的编写。但是随着我们的工作经验的增长,对于Java虚拟机的了解也是我们成长道路的必经之路的。所以,今天我们来了解一下Java虚拟机的一部分——Java虚拟机的内存模型。
Java虚拟机内存模型
大家对于内存的第一印象就是就是快,但是容量会比磁盘小很多。Java虚拟机的内存模型也有根据计算机的构成进行设计的(个人观点)。首先JVM的内存模型由以下几个部分构成:
-
方法区:在方法区,存储了类名、直接父类名、方法和变量信息等所有类级别的信息,包括静态变量。每个JVM只有一个方法区,它是一个共享资源区。
-
堆:所有对象的信息都存储在堆区中。每个 JVM 也有一个堆区。它也是一种共享资源区。
-
栈:对于每个线程,JVM 创建一个存储在这里的运行时堆栈。该堆栈的每个块都称为激活记录/堆栈帧,其中存储方法调用。该方法的所有局部变量都存储在它们相应的框架中。线程终止后,其运行时堆栈将被 JVM 销毁。它不是共享资源。
-
PC程序计数器:存放线程当前执行指令的地址。显然,每个线程都有单独的PC程序计数器。
-
本地方法栈:对于每个线程,都会创建一个单独的本机堆栈。它存储本机方法信息。
以上就是JVM内存模型的5个大的部分,其中我们的堆区,还有分为老年代和新生代,新生代中,还有区分Eden区和两个Survivor区。
总结
以上就是我们Java虚拟机的内存模型以及它的组成部分的介绍。