目录
Java8的JVM内存结构
程序计数器的功能
记录每个线程正在执行的字节码指令的地址,帮助JVM确定下一条需要执行的指令。
程序技术器的具体细节
class文件的字节码视图的内容
通过javap反编译class文件
javap -v ComplexExample.class
显示的类文件中的方法和字段的详细信息,程序计数器会帮助我们记录JVM的执行位置
程序计数器的特性
Java程序计数器(Program Counter Register)是Java虚拟机(JVM)中的一个小型的内存区,类似于硬件中的程序计数器。它用于跟踪线程正在执行的字节码的地址。在Java中,程序计数器具有以下特性和作用:
-
线程私有性:程序计数器是线程私有的。每个线程都有一个独立的程序计数器,这样线程在执行上下文切换时不会相互影响。因为一个线程在执行时可能会执行不同的方法栈和字节码,因此需要一个独立的计数器记录当前执行位置。
-
字节码解释器的概念:在JVM中,程序计数器用于帮助字节码解释器确定下一条需要执行的指令。它存储了正在执行的Java方法的字节码指令地址(或机器码的地址,如果是通过即时编译器(JIT)编译的代码)。
-
分支、循环、跳转等操作:程序计数器的值会在字节码指令执行的过程中变化,以支持程序的控制流程结构,比如分支(if-else)、循环和跳转(goto)等。
-
唯一一个不会出现内存溢出的区域:Java内存模型中,程序计数器是唯一一个不会发生OutOfMemoryError的区域,因为每个线程在创建时都会分配固定大小的程序计数器。