运行时数据区域

[返回JVM目录]

数据区

JVM在执行程序时会把内存分为不同的数据区。
各个区域用途不同,有的区域生命周期和进程相同,有的和线程相同。

程序计数器(program counter register)

拥有小块内存空间,显示当前程序字节码文件行号。字节码解释器可以修改此数值,以此选择下一条字节码指令。(循环,跳转,线程恢复等功能)
在JVM多线程中,每一个线程都会有一个独立计数器,确保线程切换后执行位置正确。该内存为线程私有内存,计数器互不影响。

线程执行Java method 时,计数器记录当前字节码位置。执行Naative时,计数器为undefind。此内存区不规定OutOfMemoryError。

虚拟机栈(VM stacks)

该内存也是线程私有,生命周期和线程相同。
虚拟机栈模拟了Java方法执行过程,即栈帧入栈出栈过程: 执行时创建一个栈帧(Stack Frame),储存局部变量,操作数栈,动态链接方法出口信息。

局部变量存储8种基本数据类型,对象引用 和 returnAddress(指向一个字节码指令地址)

本地方法栈

p63

[返回JVM目录]
作者

黄港欢

发布于

2021-04-10

更新于

2021-04-10

许可协议