JVM 运行时数据区

PPG007 ... 2021-12-28 About 1 min

# JVM 运行时数据区

image-20210921165251872

# 程序计数器

程序计数器是一块较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。

注意

程序计数器为线程私有。

# Java 虚拟机栈

Java 虚拟机栈也是线程私有的,生命周期与线程相同。

虚拟机栈描述的是 Java 方法执行的线程内存模型:每个方法被执行的时候,Java 虚拟机都会同步创建一个栈帧用于存储局部变量表操作数栈动态连接方法出口等信息。每一个方法被调用直到执行完毕的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。

# 本地方法栈

作用与虚拟机栈类似,区别在于虚拟机栈为执行字节码服务,本地方法栈为执行本地native方法服务。

# Java 堆

几乎所有对象实例都在这分配内存。

新生代、老年代、永久代、Eden 空间、From Survivor 空间、To Survivor 空间。

# 方法区

用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。

# 运行时常量池

是方法区的一部分,Class 文件中除了有类的版本、字段、方法、接口等描述信息外,还有常量池表,用于存放编译期生成的各种字面量与符号引用,这部分内容将在类加载后存放到方法区的运行时常量池中。

# 直接内存

堆外内存,不受 JVM 管理,I/O 性能好。

Last update: August 15, 2022 09:32
Contributors: Koston Zhuang , PPG007