Program Count Register程序计数器(寄存器)
java源代码经过编译,变成jvm指令
作用: 在jvm指令的执行过程中,记录下一个指令的执行地址,一条一条执行
特点:
线程私有 :
在多个线程时,会分配时间片,
线程1在时间片内未执行完会暂存线程1,
然后执行线程2的代码,如果也在时间片内没有执行完,会暂存线程2,继续执行线程1..
其中暂存的是存储下一个jvm指令执行的地址,存在对应线程计数器中,不同线程单独存放
并且每一个线程有属于自己的程序计数器,存自己要执行的命令
不会内存溢出: 因为程序计算器所维护的只是下一条待执行的命令的地址,内容很少就一条
所以不存在OutOfMemoryError,没有内存溢出
相关概念:
时间片:
操作系统分配给正在运行的进程/线程的一段CPU时间,用来实现多任务的并发执行。
时间片通常很短,如几毫秒到几百毫秒,这样用户就感觉不到程序之间的切换。
时间片的分配由操作系统内核调度程序决定,会考虑进程/线程的优先级、交互、资源需求等因素
时间片的长度和分配策略会影响系统的性能和响应速度。
为什么要有时间片:
因为CPU的速度远高于其他设备,如内存、磁盘、网络等,
如果没有时间片,CPU就会一直等待一个进程或线程完成它的所有任务,其他进程或线程
会被饿死,无法得到运行机会。会造成CPU资源的浪费以及降低系统的性能和用户的体验。