当前位置:网站首页>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 .
边栏推荐
猜你喜欢
随机推荐
Mongodb learning notes
Assembly language segment definition
mysql的合计/统计函数
汇编语言段定义
这群程序员中的「广告狂人」,把抖音广告做成了AR游戏
Thank you for your invitation. I'm in the work area. I just handed in the code. I'm an intern in the next ByteDance
Flink 解析(五):State与State Backend
唯有學C不負眾望 TOP5 S1E8|S1E9:字符和字符串&&算術運算符
GCC error: terminate called after throwing an instance of 'std:: regex_ error‘ what(): regex
算数运算指令
JVM garbage collector part 1
MySQL optimization notes
Flink parsing (VI): savepoints
Some instructions on whether to call destructor when QT window closes and application stops
MySQL日期函数
Flink 解析(六):Savepoints
JVM garbage collector part 2
Data transfer instruction
字节跳动技术面试官现身说法:我最想pick什么样的候选人
Yum install XXX reports an error