JVM架构图如下:
1、线程安全区域
1)程序计数器
1、程序计数器的定义
程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的
字节码的行号指示器。在Java虚拟机的概念模型里[1],字节码解释器工作时就是通过改变这个计数器
的值来选取下一条需要执行的字节码指令,它是程序控制流的指示器,分支、循环、跳转、异常处
理、线程恢复等基础功能都需要依赖这个计数器来完成。
2、为什么每条线程都需要有一个独立的程序计数器?
确定的时刻,一个处理器(对于多核处理器来说是一个内核)都只会执行一条线程中的指令。因
此,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程
之间计数器互不影响,独立存储,我们称这类内存区域为“线程私有”的内存。
3、程序计数器作用?
程序计数器记录正在执行的字节码指令地址,大小固定。
4、程序计数器永远不会OOM(内存溢出)的原因?
如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地 址;如果正在执行的是本地(Na