JVM 运行时数据区
PPG007 ... 2021-12-28 About 1 min
# JVM 运行时数据区
# 程序计数器
程序计数器是一块较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。
注意
程序计数器为线程私有。
# Java 虚拟机栈
Java 虚拟机栈也是线程私有的,生命周期与线程相同。
虚拟机栈描述的是 Java 方法执行的线程内存模型:每个方法被执行的时候,Java 虚拟机都会同步创建一个栈帧用于存储局部变量表、操作数栈、动态连接、方法出口等信息。每一个方法被调用直到执行完毕的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。
# 本地方法栈
作用与虚拟机栈类似,区别在于虚拟机栈为执行字节码服务,本地方法栈为执行本地native方法服务。
# Java 堆
几乎所有对象实例都在这分配内存。
新生代、老年代、永久代、Eden 空间、From Survivor 空间、To Survivor 空间。
# 方法区
用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。
# 运行时常量池
是方法区的一部分,Class 文件中除了有类的版本、字段、方法、接口等描述信息外,还有常量池表,用于存放编译期生成的各种字面量与符号引用,这部分内容将在类加载后存放到方法区的运行时常量池中。
# 直接内存
堆外内存,不受 JVM 管理,I/O 性能好。