程序计数器是一块较小的内存空间,它的作用可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。- - 摘自《深入理解Java虚拟机》

特点:

1、线程私有。

2、是java虚拟机规范里,唯一一个没有规定OutOfMemoryError情况的区域。

3、生命周期随着线程启动而产生,线程结束而消亡。

4、如果执行的是java方法,则记录指令地址;如果执行的是Native,则保存值为空。

保存指令的偏移地址,字节码解释器根据该地址来执行指令。

多线程中,CPU不会保存每个线程的执行位置,只能由每个线程自己记录,因此,程序计数器的内存空间是线程私有的。

程序计数器由线程私有,那么其生命周期也应同线程一致。

程序计数器保存指令的偏移地址,这个值的大小范围是固定的,因此可以在创建之初分配一个绝对不可能溢出的内存。

本地方法是C/C++所写,由系统调用,不会产生字节码。因此,也就没有指令偏移地址可供记录。

最新文章

  1. GSD_WeiXin(高仿微信)应用源码
  2. MongoDB C Driver使用教程
  3. Caffe 源碼閱讀(五) Solver.cpp
  4. web前端工程师校园招聘要求
  5. [转]pycharm 2016 注册码
  6. [JS] javascript基础语法
  7. JVM中显示锁基础AbstractQueuedSynchronizer
  8. iOS 学习笔记 十三 (2015.04.15)采用第三方库,实现ios录音转为amr
  9. POJ 3140-Contestants Division(树形dp)
  10. 【HDOJ】3029 Scales
  11. 重新开始学习javase_多态(动态绑定、推迟绑定或者运行期绑定)
  12. Android studio教程:[6]创建多个Activity
  13. linux下so动态库一些不为人知的秘密(中二)
  14. C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名
  15. 设计模式(4)--AbstractFactory(抽象工厂模式)--创建型
  16. Docker入门之---ENTRYPOINT和CMD
  17. jieba库与好玩的词云的学习与应用实现
  18. Jenkins+Ansible+Gitlab自动化部署三剑客-Ansible本地搭建
  19. Squid作代理服务器,用户密码验证,高匿代理
  20. RestTemplate学习

热门文章

  1. MySQL Online DDL工具
  2. Git:目录
  3. 阶段3 1.Mybatis_03.自定义Mybatis框架_5.自定义Mybatis的编码-创建两个默认实现类并分析类之间的关系
  4. HTML真是好东西!
  5. ELK是什么
  6. JavaScript —— 常见用途
  7. shoi 魔法树
  8. tensorflow学习之tf.truncated_normal和tf.random_noraml的区别
  9. 用seaborn对数据可视化
  10. LeetCode链表简单题