特点:
- 运行时数据区中唯一不会出现OOM的区域,没有垃圾回收。
- 每个线程有一个私有的程序计数器,线程之间互不影响。
- 程序计数器会存储当前线程正在执行的Java方法的 JVM指令地址,为了线程切换后能恢复到正确的位置。
- 如果正在执行的本地方法,这个计数器值则应为空。(undefined)
(面试常问)使用PC寄存器存储字节码指令地址有什么用?
(面试常问)为什么使用PC寄存器记录当前线程的执行地址呢?
记录下一条字节码执行的指令,实现分支循环跳转、异常处理、线程恢复等功能。因为线程是一个个的顺序执行流,CPU需要不停的切换各个线程,这时候切换回来以后,就得知道接着从哪开始继续执行。
(面试常问)PC寄存器为什么被设定为私有的?
- CPU,多线程,分配时间片,只执行一个线程,CPU任务切换,线程中断恢复
- 各个线程、PC寄存器记录、当前字节码指令地址,各个线程之间可进行独立计算,防止相互干扰