JVM---运行时数据区-PC寄存器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | /** * 【运行时数据区-PC寄存器】 * * Program Counter Register(PC寄存器): * * 为什么使用PC寄存器 存储 当前线程的指令地址? * CPU需要不停切换各个线程,这时候线程切换回来后,需要知道当前线程从哪开始继续执行; * * what? * 程序计数寄存器,命名 源于 CPU寄存器; * JVM的 PC寄存器 是对 物理PC寄存器的 抽象模拟; * * 作用: * 存储 某个线程指向下一条指令的地址,由执行引擎 读取下一条指令; * * 很小的内存空间,几乎可以忽略不记; * 运行速度最快的存储区域; * 线程私有; * 任何时间 一个线程 只有 一个方法在执行,也就是 当前方法; * PC寄存器 存储 当前线程 正在执行的 Java方法的 JVM指令地址, * 如果是 native方法,则是 undefined; * * 程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成; * * 唯一一个在JVM规范中没有任何 OutOfMemoryError的区域; * * eg: * 指令地址(偏移地址) 操作指令 * 0 aload_0 * 1 invokespecial * 4 return * * 执行引擎 读取 PC寄存器的指令地址 -> 操作 虚拟机栈中的栈桢的 局部变量表、操作数栈... -> 交给CPU执行; * * CPU时间片: * CPU分配给各个程序的时间,每个线程被分配的一个事件段; * * 微观上,一个CPU,同一时间只能处理一个线程,如何公平,引入时间片,每个程序轮流执行; * -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ * */ |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2019-04-24 SpringCloud---API网关服务---Spring Cloud Zuul