01 JVM 内存结构
Java 虚拟机的内存空间分为 5 个部分:
-
程序计数器
-
Java 虚拟机栈
-
本地方法栈
-
堆
-
方法区
JDK 1.8 同 JDK 1.7 比,最大的差别就是:元数据区取代了永久代。元空间的本质和永久 代类似,都是对 JVM 规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元数据空间并不在虚拟机中,而是使用本地内存。
1.1 程序计数器(PC 寄存器)
(1)程序计数器的定义 程序计数器是一块较小的内存空间,是当前线程正在执行的那条字节码指令的地 址。若当前线程正在执行的是一个本地方法,那么此时程序计数器为 Undefined。
(2)程序计数器的作用
(3)程序计数器的特点 是一块较小的内存空间。
由于文章篇幅问题,部门内容将以图片展示,如有小伙伴需完整文档进行查阅观看可以私信免费获取。
1.2 Java 虚拟机栈(Java 栈)
(1)Java 虚拟机栈的定义 Java 虚拟机栈是描述 Java 方法运行过程的内存模型。
Java 虚拟机栈会为每一个即将运行的 Java 方法创建一块叫做“栈帧”的区域, 用于存放该方法运行过程中的一些信息,如:
-
局部变量表
-
操作数栈
-
动态链接
-
方法出口信息
-
......