当前位置:网站首页>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 .
边栏推荐
- TCP's three handshakes and four waves
- Activiti目录(三)部署流程、发起流程
- JVM之垃圾回收器上篇
- QT system learning series: 1.2 style sheet sub control lookup
- 手把手带你做强化学习实验--敲级详细
- js垃圾回收机制和内存泄漏
- The "advertising maniacs" in this group of programmers turned Tiktok advertisements into ar games
- The QT program compiled on CentOS lacks a MySQL driven solution
- Alibaba cloud server builds SVN version Library
- MySQL optimization notes
猜你喜欢
这群程序员中的「广告狂人」,把抖音广告做成了AR游戏
Resume of a microservice architecture teacher with 10 years of work experience
Programmer orientation problem solving methodology
Flink 解析(三):内存管理
[graduation project] QT from introduction to practice: realize imitation of QQ communication, which is also the last blog post in school.
Many papers on ByteDance have been selected into CVPR 2021, and the selected dry goods are here
Idea breakpoint debugging skills, multiple dynamic diagram package teaching package meeting.
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源码解读(三):ExecutionGraph源码解读
Log4j2 major vulnerabilities and Solutions
随机推荐
Eight part essay that everyone likes
1. JVM入门介绍
GCC error: terminate called after throwing an instance of 'std:: regex_ error‘ what(): regex
在 vi 编辑器中的命令模式下,删除当前光标处的字符使用 __ 命 令。
逻辑运算指令
Conception du système de thermomètre numérique DS18B20
Shell_ 07_ Functions and regular expressions
Basic knowledge of assembly language
8086 memory
姚班智班齐上阵,竞赛高手聚一堂,这是什么神仙编程大赛?
Install docker under windows10 (through Oracle VM VirtualBox)
Resume of a microservice architecture teacher with 10 years of work experience
Shell_ 06_ Judgment and circulation
In the command mode in the VI editor, delete the character usage at the current cursor__ Command.
When it comes to Google i/o, this is how ByteDance is applied to flutter
Some feelings of brushing leetcode 300+ questions
Fdog series (I): think about it. It's better to write a chat software. Then start with the imitation QQ registration page.
ByteDance overseas technical team won the championship again: HD video coding has won the first place in 17 items
搭建flutter环境入坑集合
Activiti directory (III) deployment process and initiation process