🖥️ 程序计数器演示

可视化理解程序计数器如何控制指令执行

线程1 - main()
程序计数器 (PC)
0
指向字节码行号
0 iconst_1 // 将常量1压入栈
1 istore_1 // 存储到变量1
2 iconst_2 // 将常量2压入栈
3 istore_2 // 存储到变量2
4 iload_1 // 加载变量1
5 iload_2 // 加载变量2
6 iadd // 相加
7 istore_3 // 存储结果
8 return // 返回
线程2 - calculate()
程序计数器 (PC)
0
指向字节码行号
0 iconst_5 // 将常量5压入栈
1 istore_1 // 存储到变量1
2 iload_1 // 加载变量1
3 iconst_1 // 将常量1压入栈
4 iadd // 相加
5 istore_1 // 存储结果
6 return // 返回
当前状态: 准备执行 - 程序计数器指向第一条指令

💡 程序计数器关键概念

  • 线程私有:每个线程都有独立的程序计数器,互不干扰
  • 指令地址:保存当前执行的字节码指令的地址(行号)
  • 执行控制:CPU通过程序计数器知道下一条要执行的指令
  • 线程切换:当线程切换时,程序计数器保存当前执行位置
  • 异常安全:唯一不会发生OutOfMemoryError的内存区域
  • 本地方法:执行native方法时,程序计数器值为undefined