当前位置:网站首页>Program counter of JVM runtime data area
Program counter of JVM runtime data area
2022-07-06 17:14:00 【Smart popcorn】
1. Introduce
The program counter is also called PC register , Its full name is Program Counter Register, It's a literal translation , It can be seen as an abstract simulation of real physical registers .
Its main function is to store the address of the next instruction , You can see the following , from 5 Get the corresponding operation instructions at the position of , Put in PC Access in register , Then the execution engine will read , Translate operation instructions into machine instructions , Perform a series of operations such as addition, subtraction, multiplication and division .
Take a look back. , As shown in the figure below .
2. characteristic
It also has the following features .
- The memory occupied is very small , Almost negligible , Very fast .
- Thread private , Each thread has a piece , There will be no thread safety issues
- One thread corresponds to one method , The program counter stores the instruction address of the method running in the thread , But if the local method is executed , The instruction address is underfine, Can't record , Because he only records Java Method
- Branch loop Jump depends on this counter
- stay JVM The only one in the specification will not OOM Region
3.CPU Time slice
Let's talk about CPU The concept of time slice , This is a CPU The time allocated to the execution of each program .
For a single core CPU, There is no concept of parallel , But because CPU Time slice switching , It will give us an illusion of concurrency , That is, multiple programs are running at the same time , Because each program may only run 10ns Time for , Switch back and forth , But in essence, it is a single thread operation .
But for multicore CPU, Multiple programs are assigned to different cores for processing , Different threads perform different jobs at the same time , But for every core , There will be concurrent operations , That is, each thread alternates ,
4. Two questions
PC What's the use of registers storing bytecode instruction addresses ?
In the case of multithreading , Executing a method will involve multiple threads , So record the instruction address , Otherwise, the switched thread will execute from the beginning , That must be wrong .
take 4*100 For the meter relay , The relay man is 100 rice ,200 rice ,300 Wait at a place of meters , Instead of starting from scratch , The position of the relay is equivalent to the instruction address .
PC Why should registers be thread private ?
hypothesis PC Registers are shared by threads , So what problems will it bring , Suppose three threads execute three different methods .
The first thread 1 Execute to order 5 了 , Start switching , Threads 2 Execute the final execution to the instruction 7, Will command 5 Cover the position of , Wait for the thread 123 It's all done , Threads 1 Start again , Is from the instruction 17 It's going to work , But it only executed the instruction originally 5, But there's no record , It will definitely cause confusion in the procedure , So the program counter has to be thread private .
Share daily
If you've ever hated your parents for being incompetent , No vision , It means that you have gone beyond the limitations of your parents , And this is the situation they do everything they want to see .
边栏推荐
- Login to verify the simple use of KOA passport Middleware
- Flink parsing (VI): savepoints
- Only learning C can live up to expectations top3 demo exercise
- QT system learning series: 1.2 style sheet sub control lookup
- 面试集锦库
- Coursera cannot play video
- Shell_ 03_ environment variable
- Programmer orientation problem solving methodology
- DOS function call
- Some instructions on whether to call destructor when QT window closes and application stops
猜你喜欢
Activiti directory (III) deployment process and initiation process
When it comes to Google i/o, this is how ByteDance is applied to flutter
Some instructions on whether to call destructor when QT window closes and application stops
Activiti directory (IV) inquiry agency / done, approved
手把手带你做强化学习实验--敲级详细
Coursera cannot play video
逻辑运算指令
Idea resolving jar package conflicts
Shawshank's sense of redemption
Flink 解析(四):恢复机制
随机推荐
Ce n'est qu'en apprenant que c est à la hauteur des attentes Top5 s1e8 | s1e9: caractères et chaînes & opérateurs arithmétiques
ByteDance technical Interviewer: what kind of candidate do I want to pick most
逻辑运算指令
Flink 解析(七):时间窗口
arithmetic operation
Prototype chain inheritance
SQL tuning notes
List集合数据移除(List.subList.clear)
Description of project structure configuration of idea
After the subscript is used to assign a value to the string type, the cout output variable is empty.
Programmer orientation problem solving methodology
JVM garbage collector part 1
吴军三部曲见识(七) 商业的本质
Brush questions during summer vacation, ouch ouch
学习投资大师的智慧
JVM garbage collector part 2
SQL调优小记
1. JVM入门介绍
Activiti目录(三)部署流程、发起流程
Design of DS18B20 digital thermometer system