jvm运行时数据区之程序计数器
什么是程序计数器? 程序计数器是一块 较小 的内存空间,它可以看做是当前线程所执行的字节码的 行号指示器 ;在虚拟机的概念模型里(仅仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时,就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳准、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成 ; ———–摘抄自 周志明版 《深入理解java虚拟机》 P39 简单的理解为,是程序计数器保证了程序的正常执行 ; 有什么特点 线程私有的 是java虚拟机规范里面, 唯一 一个 没有规定任何 OutOfMemoryError 情况的区域 生命周期随着线程,线程启动而产生,线程结束而消亡 为什么具有这些特点 要想理解什么是程序计数器,以及它的特点,需要理解上文中的一句话 这里重点理解 :程序计数器,可以看做是当前线程执行的字节码的 行号指示器 ,这句话;要理解这句话,需要先知道字节码文件长什么样子,看下面的代码 // java 文件被翻译为字节码的时候,字节码大概类似于下面的样子 public void haha(){ // 原来的 haha 方法内部的 java 代码,被翻译为下面的类似于汇编语言的指令 0 xxxx .... 2 xxxx .... 4 xx ... 5 xxx ... } 上面左边的 0、2、4、5