一,概述
程序计数器(program counter register)就是一块很小很小的内存空间,小到可以忽略不计,所以这个内存区域是在java虚拟界规范中没有规定任何OutOfMemoryError的情况的区域,如果连这个小块的内存区域都能发生OutOfMemoryError,那你的内存是有多么多么的小啊!
二,作用
它的作用可以理解为,是当前线程所执行的字节码文件(class)的行号指示器。字节码解释器就是通过 改变程序计数器的值 来得到下一条要执行的字节码指令的。比如说程序中的分支、循环、异常处理、跳转等命令都是通过 依赖 程序计数器来实现的。
三,特性
1,java虚拟机在任何一个时刻,一个处理器都只是会处理一个线程中的指令,所以为了保证线程切换后能够恢复到原来正确的执行位置,每个线程都会有一个 独立的程序计数器,也就是各个线程之间的计数器是互不影响的,独立存储的。
2,如果执行的是java方法,那么记录的是正在执行的虚拟机字节码指令的地址的地址,如果是native方法,计数器的值为空(undefined)。
3,这个内存区域是唯一一个在java虚拟界规范中没有规定任何OutOfMemoryError的情况的区域。