程序计数器的作用是记录执行的字节码的位置,说白了就是代码执行到哪里了。
有什么用呢?这就得说代码在执行时,处理器一次在某一个时刻只能执行一个线程中的一行代码,所以其他线程代码的执行就会暂时停止,等到处理器可以执行其他线程的代码时就会用到程序计数器记录的位置信息,让代码继续执行下去。
所以,每个线程都私有一个程序计数器,各个线程的程序计数器相互独立互不影响。
如果线程正在执行的是一个Java方法,那么程序计数器记录的是字节码的地址,如果执行的是Native方法,那么程序计数器的值为空(Undefined)。
此区域是唯一一个不会有OutOfMemoryError的区域