java程序设计语言+java虚拟机+java api类库统称为jdk,jdk为java开发的最小环境。java api类库中的se子集+java虚拟机统称为JRE,JRE为java运行时的标准环境。
程序计数器:
java虚拟机(jvm)在程序运行过程中,会将它所管理的内存划分为若干个不同的数据区域,这些区域有些随着jvm的启动而创建,有些随着用户线程的启动和结束而创建和销毁。一个基本jvm运行时内存模型如下:
注意:上图展示的是java se7的虚拟机规范;java的虚拟机规范并不是一成不变的,oracle在发布新的jvm版本时,可能会对jvm作一定的优化和改进,例如jdk8中,方法区被移出,取而代之的是元数据空间(metaspace)。
1,什么是程序计数器?
程序计数器是java虚拟机记录当前线程所执行字节码的行号指示器。
java代码编译后的字节码在未经过JIT(实时编译器)编译之前,其执行方式是通过"字节码解释器"进行解释执行的。简单的工作原理为:解释器读取装入内存的字节码,按照顺序读取字节码指令,读取一个指令之后,将该指令翻译成固定的操作,并根据这些操作进行分支、循环、跳转等流程。
从上面的描述中可能会产生程序计数器是否多余的疑问,因为在java虚拟机中,沿着指令的顺序执行下去,跳转到指定的指令处按顺序继续执行是完全能够保证程序的执行顺序的,假设程序永远只有一个线程