Java虚拟机在执行过程中,会将所管理的内存划分成若干不同的数据区域。如下图所示。
这些数据区的用途、创建、销毁时间都是不同的,有的随着虚拟机进程的启动而一直存在,有的则伴随着用户线程的生命周期而存在。
Program Counter Register
程序计数器(Program Counter Register)可以看作是当前线程执行的字节码的行号指示器。如果正在执行的是一个Java方法,记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是一个本地(Native)方法,记录的是空值(Undefined)。这是一个唯一没有OOM的区域。
Reference
- 《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》/ 周志明 著 / ISBN:978-7-111-64124-7 / 机械工业出版社 2019 北京