1、定义:
- 程序计数器是一块较小的内存空间,它可以看作是:保存当前线程所正在执行的字节码指令的地址(行号)。
- 由于Java虚拟机在多线程模式下是
通过线程轮流切换并分配CPU时间片
的方式来实现的,因此当某一线程的时间片用完,但指令操作未执行完毕时,就要记住该线程的待执行指令
,等待CPU下次分配到时间片后再从记录的指令处继续执行
。
2、特点:
线程私有
- 程序计数器是
每个线程所私有的
,当另一个线程的时间片用完,又返回来执行当前线程的代码时,通过程序计数器可以知道应该执行哪一句指令
不存在内存溢出问题
- 程序计数器内存区域是虚拟机中唯一没有规定OutOfMemoryError情况的区域。
3、举例
-
假如现在有一个人A(看作CPU)正在看电影(看作一个线程)
-
这时,突然电话铃声响起,有人打来了电话,那A(CPU)就要暂停电影,去接电话。
-
等到电话打完,A(CPU)再继续看电影。
通过这样一个例子,模仿了程序计数器在JVM中的作用