JVM系列(六):JVM内存区域中程序计数器介绍

今天继续给大家分享JVM的相关知识,今天介绍一下JVM内存区域的程序计数器。

1、程序计数器概念

JVM中的程序计数寄存器(Program Counter Register)中Register的命名来源于CPU的寄存器,寄存器用来存储指令相关的现场信息。

CPU只有把数据装载到寄存器中才能够正常执行指令。

JVM中的寄存器不是物理上的寄存器而是对物理寄存器的抽象模拟。

程序计数器有时候也被称为为程序钩子

2、程序计数器的作用

程序计数器是JVM内存区域中一块较小的内存空间,可以认为是当前Java线程所执行的字节码的行号指示器。字节码解释器工作是通过改变这个计数器的值来定位选取下一条待执行的字节码指令,选择、循环、异常处理、线程恢复等功能都需要依赖程序计数器来完成。

说明:JVM虚拟机为了保证线程切换后还能恢复到上次正确执行的位置,JVM给每条Java线程都分配了一个独立的程序计数器,这样各线程之间计数器互不影响,独立存储和对应的Java线程生命周期保持一致。

  • 字节码解释器通过改变程序计数器来依次读取指令,从而实现Java代码的流程控制,比如:顺序执行、选择、循环、异常处理等。

  • 在多线程的情况下,程序计数器主要用于记录当前线程执行的具体位置,这样在线程切换回来的时候知道该线程从哪一个环节开始执行。

3、程序计数器的特点

  • 每个Java线程独有,与其对应的Java线程的生命周期保持一致。

  • 占用JVM内存区域很小的一块(可忽略不计),读取速度很快

  • 负责准确记录每个线程当前执行到的具体位置

  • 执行本地方法,程序计数器会存储undefined

  • JVM中唯一一个不会出现Out Of Memory Error(内存溢出错误)的区域,也不需要进行垃圾回收

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/270030.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM系列(七):虚拟机栈的相关知识介绍

今天继续给大家分享JVM系列的相关知识,今天介绍一下虚拟机栈的介绍。 1、虚拟机栈的概念 虚拟机栈也称为Java栈,Java每个main方法被执行的时候,JVM都会同步创建一个栈帧(Stack Frame),通过存储局部变量表…

JVM系列(八):堆(Heap)的相关知识介绍

目录 1、JVM堆的概念 2、JVM堆的特点 3、JVM堆的内部结构 3.1 组成 3.2 堆内存内部空间所占比例 3.3 永久代和元空间区别 4、堆空间的大小设置 5、堆空间垃圾回收 1、JVM堆的概念 JVM中的堆是用来存放对象的内存空间,几乎所有的Java对象、数组都存储在JVM的…

电脑技巧:Hyper-V安装UOS操作系统图文教程

今天给大家分享微软官方Hyper-v虚拟机管理软件安装UOS操作系统图文教程,感兴趣的朋友也可以下载试一试,当然有啥问题也可以互相沟通交流! 1、首先任务管理切换到性能选项卡,查看虚拟化是否已经启用,如果没有启用的话&…

JVM系列(九):MinorGC、MajorGC、FullGC垃圾回收介绍

今天给大家继续分享MinorGC、MajorGC、FullGC相关知识,如有不对的地方欢迎指正! 1、MinorGC (新生代垃圾回收) JDK1.8 堆内部结构 从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC&…

JVM系列(十):JVM垃圾回收算法相关知识

今天给大家继续分享JVM垃圾回收算法相关知识,如有不对的地方欢迎指正。 JVM垃圾回收算法主要有标记清除、复制算法、标记整理、分代收集四种,下面来逐一介绍。 1、标记清除(Mark-Sweep) 标记清除作为最基础的垃圾回收算法&#…

Java8 拼接字符串 StringJoiner

StringJoiner是Java8新出的一个类,用于构造由分隔符分隔的字符序列,并可选择性地从提供的前缀开始和以提供的后缀结尾。省的我们开发人员再次通过StringBuffer或者StingBuilder拼接。 我们查看一下一下代码,试着猜一下。 1.简单的字符串拼接…

分享Git常见的项目托管平台

今天给大家分享Git常见的项目托管平台,大家一起来看看吧! 1、GitHub GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。是全球最大、代码质量最高的Git开源项目平台。遗憾的…

网络技巧:教你给路由器装上电池,断电照样可以上网

家里要是停电了,你的WiFi还能上网吗?想都不用想,“肯定不能”估计所有人都会这样回答。如果小编跟你说即使停电了,也有个小方法让你能够用WiFi,你会相信不?下面大家一起来看看吧! 其实&#xff…

电脑软件:推荐一款磁盘空间分析工具——WizTree

目录 1、WizTree是啥? 2、WizTree的特点 2.1 磁盘空间利用率分析 2.2 扫描速度快 2.3 支持多文件系统格式 2.4 树状图显示 2.5 大文件快速查找 2.5 支持文件名模糊搜索 2.6 支持导出文件和 MFT 数据 2.7 支持导入文件和 MFT 数据 2.8 命令行支持 3、总结…

分布式自增ID算法---雪花算法(SnowFlake)Java实现

分布式id生成算法的有很多种,Twitter的SnowFlake就是其中经典的一种。 算法原理 SnowFlake算法生成id的结果是一个64bit大小的整数,它的结构如下图: 1bit,不用,因为二进制中最高位是符号位,1表示负数&…

软件:给大家推荐一款国产非常好用的效率软件uTools

目录 1、uTools介绍 2、安装下载 3、uTools常用功能介绍 今天给大家推荐一款办公人员必备的效率软件uTools,可以大幅度提升你的生产力,感兴趣的朋友可以下载试一试,相信你一定会爱不释手。 1、uTools介绍 uTools是一款插件化,极简、跨平…

数据库知识:SQLServer创建非sa用户笔记

数据库安全是数据库运维非常重要的环节,今天给大家分享SQLServer如何创建非sa用户,并且设置数据库对应的访问权限,希望对大家能有所帮助! 1、创建登录名 1.1、创建登录名 安全性→登录名→新建登录名(鼠标右键&#xf…

微软电脑管家2.0公测版体验

前言 微软电脑管家2.0公测版本终于发布了,之前给大家分享过微软电脑管家测试版的文章,今天给大家再介绍一下微软电脑管家2.0公测版究竟带来了哪些更新,大家一起来看看吧! 安装要求 微软官方公布的安装要求是windows10的1809版本…

布隆过滤器(Bloom Filter)的原理和实现

布隆过滤器使用场景 之前在《数学之美》里面看到过布隆过滤器的介绍。那么什么场景下面需要使用布隆过滤器呢? 看下下面几个问题 字处理软件中,需要检查一个英语单词是否拼写正确在 FBI,一个嫌疑人的名字是否已经在嫌疑名单上在网络爬虫里&a…

硬件知识:RTMP和RTSP传统流媒体协议介绍

今天给大家分享RTMP和RTSP传统流媒体协议介绍,希望对大家能有所帮助! 1、RTSP 1.1 RTSP协议介绍 RTSP (Real-Time Stream Protocol)由Real Networks 和 Netscape共同提出的,基于文本的多媒体播放控制协议。RTSP定义…