作用:记住下一个jvm指令的执行地址
每一行java源代码,会被编译为多行jvm指令,上文所说的执行地址就是这里的0,3,4等 ,由于执行访问特别频繁,程序计数器的底层是有寄存器来实现的
特点:
- 线程私有,大家熟知java是支持多线程的,每个线程执行时都会有程序计数器的存在,这里的每个线程的程序计数器的独立的,也是线程安全的;如果是单核cpu,单线程的话,那么同样,当使用多线程时,通过调度器分配时间片的方式实现多线程的效果,如果第一次执行没执行完,那么也会把当前执行的程序计数器存起来,执行下一个获得时间片的程序,两次执行的程序计数器也不会相互影响
- 永远不会内存溢出,这里是区别于,栈,堆,方法区等这些程序地址的,他们如果使用不当,都会造成内存溢出