Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。
1、程序计数器
程序计数器,是一块较小的内存空间,可以看做当前线程所执行的字节码的行号指示器。
java文件编译成class字节码文件后,会生成一系列操作指令,每个操作指令都会有相应的指令地址(偏移地址),当字节码解释器器工作时,程序计数器会保存下一条指令要执行的指令的地址, 之后,执行引擎会从 程序计数器中,获得指令的地址,拿到操作指令,对其进行执行。
多线程执行时,若A线程挂起,B线程执行,B线程挂起,A线程继续执行,此时就需要通过A线程的程序计数器来恢复A线程指令的执行位置。为了保证线程切换执行后可以正确执行指令,因此每个线程都有一个独立的程序计数器,也就是说程序计数器是线程私有的。
参考:
《深入理解Java虚拟机-JVM高级特性与最佳实践》周志明
https://www.136.la/shida/show-131489.html
程序计数器(关于java虚拟机内存的那些事)_young-youth的博客-CSDN博客_为什么程序计数器不会内存溢出
上述是本人学习Java虚拟机过程中整理的内容,若有不正之处还望指教。若有用到某位大神的文章内容或资料,还请留言,本小菜会备注上出处。