码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • JVM(宋红康)学习之运行时数据区之PC寄存器


    图解:

     

    阿里图解:

     

    一个进程对应一份堆空间和方法区

    一个线程对应一份程序计数器(PC Register)、本地方法栈、虚拟机栈

     

    • 线程分为守护线程和普通线程
    • 当一个Java线程准备好执行以后,此时操作系统会创建一个本地线程,本地线程初始化成功后,会调用Java线程中的run()方法。
    • Java线程结束后,本地线程也被回收。

    后台系统线程在HotSpot JVM中主要有:

    • 虚拟机线程
    • 周期任务线程
    • GC线程
    • 编译线程
    • 信号调度线程

    PC寄存器:用来存储指向下一条指令的地址

    图解:

     

    特殊点:既没有GC也没有OOM(OutOfMemoryError)

     

    面试题:

    • 为什么要用PC寄存器存储字节码指令地址、记录当前线程当前地址?

    因为CPU需要不断的切换各个线程,切换回来以后需要知道从哪个地方开始继续执行

    JVM的字节码解释器就需要改变PC寄存器的值来明确下一条应该执行什么样的字节码指令

    • PC寄存器为什么被设定为线程私有的?
    1. 由于CPU时间片轮限制,众多线程在并发执行过程中,。任何一个确定的时刻,一个处理器或者是多核处理器中的一个内核,只会执行某个线程中的一个指令
    2. 为了能够准确的记录每个线程当前执行的字节码指令地址,最好的办法就是每个线程分配一个程序计数器

    CPU时间片:CPU分配给各个程序的时间,看似并行,实则并发

     

  • 相关阅读:
    【小程序源码】2022全新模板的姓氏头像制作生成
    [2023毕业设计源码]精品基于PHP实现的剧影评|剧评影评系统[包运行成功]
    参数估计(点估计和区间估计)
    计算机毕业设计ssm蓟县农家院网站2zl2w系统+程序+源码+lw+远程部署
    【Java面试】听说Java求职者/面试官都关注了我,这道面试题一个空Object对象的占多大空间?你答的上来吗
    自动化测试框架有哪几种?全网最全面的总结来了
    C++多线程学习(一):C++11 多线程快速入门
    vue-饼形图-详细
    鸿蒙自定义侧滑菜单布局(DrawerLayout)
    CSS详细汇总
  • 原文地址:https://blog.csdn.net/m0_55895641/article/details/126522055
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号