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,同一时间只能处理一个线程,如何公平,引入时间片,每个程序轮流执行;
     *                      -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
     *
 
     */

  

posted on   anpeiyong  阅读(16)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2019-04-24 SpringCloud---API网关服务---Spring Cloud Zuul

导航

< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5
点击右上角即可分享
微信分享提示