程序计数器没有OOM_打程序的黑眼豆豆的博客-程序员秘密_程序计数器为什么不会oom

技术标签: JVM  Java  

程序计数器(Program Counter Register)也称PC寄存器。是运行时数据区里唯一一块没有Out of Memory的区域。

只存下一个字节码指令的地址,消耗内存小且固定,无论方法多深,他只存一条。

只针对一个线程,随着线程的结束而销毁。

使用PC寄存器存储字节码指令地址有什么用?

为什么使用PC寄存器记录当前线程的执行地址呢?

因为CPU需要不停的切换各个线程,这时候切换回来以后,就的知道接着从哪开始执行。

JVM的字节码解释器就是通过改变pc寄存器的值来确定下一条应该执行什么样的字节码指令。

PC寄存器为什么会被设定为线程私有

我们都知道所谓多线程在一个特定的时间段内只会执行其中某一个线程的方法,CPU会不停的做任务切换,这样必然导致经常终端或回复,如果保证分毫不差呢?为了能够准确地记录各个线程正在执行的当前字节码指令地址,最好的办法自然是为每一个线程分配一个pc寄存器,这样一来各个线程之间便可以进行独立计算,从而不会出现相互干扰的情况。

由于cpu时间片轮询限制,众多线程在并发执行过程中,任何一个确定的时间,一个处理器或者多核处理器中的一个内核,只会执行某个线程中的一条指令。

这样必然会导致经常终端或恢复,如何保证分毫不差呢?每个线程在创建后,都会产生自己的程序计数器和栈帧,程序计数器在各个线程之间互不影响。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Doris0214/article/details/114840461

智能推荐

使用picard评估文库复杂度_生信修炼手册的博客-程序员秘密

欢迎关注”生信修炼手册”!文库复杂度对应的英文如下Library Complexity表示的是文库中unique的分子数目,unique分子数目越多,文库复杂度越高。在数据分析中,重复序...

macbook 命令行大全_weixin_34393428的博客-程序员秘密

2019独角兽企业重金招聘Python工程师标准>>> ...

python全局变量使用_lovemysea的博客-程序员秘密

应该尽量避免使用全局变量。不同的模块都可以自由的访问全局变量,可能会导致全局变量的不可预知性。对全局变量,如果程序员甲修改了_a的值,程序员乙同时也要使用_a,这时可能导致程序中的错误。这种错误是很难发现和更正的。 全局变量降低了函数或模块之间的通用性,不同的函数或模块都要依赖于全局变量。同样,全局变量降低了代码的可读性,阅读者可能并不知道调用的某个变量是全局变量。但是某些时候,全

[CISCN2019 总决赛 Day1 Web4]Laravel1-PHP代码审计学习_lmonstergg的博客-程序员秘密

题目就是简单的几行代码,看到了反序列化函数,还提示了有源代码,那就说明得审代码找POP链咯源码下了文件还挺多的,这会就有点懵逼了,文件这么多一个一个的找得找到猴年马月啊。无奈之下上网翻一翻网上审Laravel的文章,发现了可以先全局搜索缩小范围(Sublimetext中是快捷键ctrl+shift+f),提高速率,我搜了下_destruct找到了不少,双击就可以去到文件文件里面具体查看,接下来就是一个个去看有没有发现有用的吧第一次审这么大的文件,东西太多太杂,没啥经验,没看出啥,只能找篇大佬的.

XMPP(Jabber)_Kaitiren的博客-程序员秘密_jabber xmpp

现在比较流行的开放IM协议包括SIP、SIMPLE和XMPP(jabber)。对XMPP做一个简单介绍。目前XMPP协议的使用的案例还相对较少,主要是Google的gtalk和Nokia新推出的Ovi。XMPP设计了一个在互联网上唯一的标识,用JID来表达。通常一个 JID 由三部分组成,[email protected]/resource 。和email很像,但比 email 的表达形式多了

21条SQL Server数据库开发经验_轻鸿飘羽的博客-程序员秘密

<br />一、了解你用的工具 <br />不要轻视这一点,这是我在这篇文章中讲述的最关键的一条。也许你也看到有很多的SQL Server程序员没有掌握全部的T-SQL命令和SQL Server提供的那些有用的工具。 <br />“什么?我要浪费一个月的时间来学习那些我永远也不会用到的SQL命令???”,你也许会这样说。对的,你不需要这样做。但是你应该用一个周末浏览所有的T-SQL命令。在这里,你的任务是了解,将来,当你设计一个查询时,你会记起来:“对了,这里有一个命令可以完全实现我需要的功能”,于是,到M

随便推点

触发器中 使用带参数的游标_lanwei6312的博客-程序员秘密

create or replace trigger trigger_task_work  after  update  on yp_work_task    for each row  -- local variables here    --- add by lanwei 2012-05-28  --- 游标获取任务的参与人数     declare cu

52o1314小符号_特殊名字符号(52o1314特殊上下组合小符号)_罗思明的博客-程序员秘密

王者荣耀名字特殊符号2019稀有美丽最新流行符号大全王者荣耀名字2019有哪些特别的符号?有哪些罕见而美丽的流行符号?王者荣耀有很多特别的符号,很受玩家欢迎!在这里,我会推荐并教你如何使用它!王者荣耀罕见特殊符号输入法;其实操作方法比较简单,找到想要的符号,然后直接复制到名字里!一些特殊的符号系统将无法识别,所以替换其他符号《王者荣耀》(2019)中罕见而美丽的流行符号全集爱情象征手形符号象棋符号...

centos 安装内核头文件_Linux系统入门学习:如何在Linux上安装内核头文件_weixin_39725924的博客-程序员秘密

提问:我在安装一个设备驱动前先要安装内核头文件。怎样安装合适的内核头文件?当你在编译一个设备驱动模块时,你需要在系统中安装内核头文件。内核头文件同样在你编译与内核直接链接的用户空间程序时需要。当你在这些情况下安装内核头文件时,你必须确保内核头文件精确地与你当前内核版本匹配(比如:3.13.0-24-generic)。如果你的内核是发行版自带的内核版本,或者使用默认的包管理器的基础仓库升级的(比如:...

协作组:灵活的 CUDA 线程编程_panda1234lee的博客-程序员秘密

英文原文来自NVIDIADeveloper Blog 官方手册在有效的并行算法中,线程通过合作并共享数据来执行集体计算。要共享数据,线程必须同步。共享的粒度因算法而异,因此线程同步应该是灵活的。使同步成为程序的显式部分,来确保安全、可维护和模块化。为了满足这些需求,CUDA 9 引入了协作组,它通过扩展 CUDA 编程模型,从而允许内核动态地组织线程组。从历史上看,CUDA 编程模型...

学计算机最好的大学排名,我国计算机专业最好的大学排名,分为3个档次,清华只排第2..._消失的下一次的博客-程序员秘密

原标题:我国计算机专业最好的大学排名,分为3个档次,清华只排第2计算机专业也是当今的热门专业,市场需求大,高端IT人才可以轻松拿到十万以上的年薪,每年都有很多考生报考计算机专业。大家知道计算机专业最好的大学有哪些吗?首先上一张表,2017年教育部学科评估中计算机专业评估为A以上的大学共有23所。 今天就给大家介绍一下这些大学,共有23所,可分为3个档次,清华只排在第二! 一、A+档A+档的大学一共...

推荐文章

热门文章

相关标签