上一篇 JVM01_初识JVM
下一篇 JVM03_栈

1. 什么是程序计数器?
  • 这块内存区域很小,它是当前线程所执行的字节码的行号指示器,字节码解释器通过改变这个计数器的值来选取下一条需要执行的字节码指令(就是一个指针,指向方法区中的方法字节码)
2. 作用是什么?
  • 是用来存储指向下一条指令的地址,也即将要执行的指令代码。由执行引擎读取下一条指令。
3. 有什么特点?
  • 是线程私有的 、不会存在内存溢出。
4. 为什么Native方法这个计数器是undefined的?
  • 在物理上实现程序计数器是在寄存器实现的,整个cpu中最快的一个执行单元。
  • 所以执行的是一个Native方法,那这个计数器是undefined(程序计数器是JVM中的概念)。
5. 主要储存的是什么?
  • 用来存储指向下一条指令的地址,也即将要执行的指令代码。
6. 是否是线程私有的?
  • 每个线程都有一个程序计数器,是线程私有的。就是一个指针,指向方法区中的方法字节码。
7. 有没有可能发生OOM?
  • 它是唯一一个在java虚拟机规范中没有OOM的区域。
8. 使用PC寄存器存储字节码指令地址有什么用呢?(为什么使用PC寄存器记录当前线程的执行地址呢?)
  • 1.因为CPU需要不停的切换各个线程,这时候切换回来以后,就得知道接着从哪开始继续执行。
  • 2.JVM的字节码解释器就需要通过改变PC寄存器的值来明确下一条应该执行什么样的字节码指令。
9. PC寄存器为什么设定为线程私有?
  • 为了能够准确记录各个线程正在执行的当前字节码指令地址,最好的办法自然是为每一个线程都分配一个PC寄存器。
10. 关于本地线程和JVM中的线程说明
  • 1.在Hotspot JVM里的每个线程都与操作系统的本地线程直接映射。

    • 解释:当一个Java线程准备好执行以后,此时一个操作系统的本地线程也同时创建一个。当Java线程执行终止后,本地线程也会被回收。
  • 2.操作系统负责所有线程的安排调度到任何一个可用的CPU上。一旦本地线程初始化完毕,它就会调用Java线程中的run方法。

11. 图形理解:

【程序计数器】概念、作用、特点、线程私有、本地方法的概述_JVM02相关推荐

  1. JVM - 结合代码示例彻底搞懂Java内存区域_线程栈 | 本地方法栈 | 程序计数器

    文章目录 Pre 运行时数据区总览 线程栈 概要 栈内部主要组成部分 局部变量 操作数栈 动态链接 方法出口 小结 程序计数器 本地方法栈 附 测试demo javap JVM字节码指令集手册 Pre ...

  2. 46栈内存溢出、内存区域(程序计数器、Java 虚拟机栈、本地方法栈、Java 堆、方法区、直接内存、内存溢出)与内存溢出(对象实例化分析)

    46.什么情况下会发生栈内存溢出 46.1.Java 内存区域与内存溢出 46.1.1.内存区域 46.1.1.1.程序计数器 46.1.1.2.Java 虚拟机栈 46.1.1.3.本地方法栈 46 ...

  3. 12.JDK1.8 JVM运行时数据区域概览、各区域介绍、程序计数器、Java虚拟机栈、本地方法栈、堆、堆空间内存分配(默认情况下)、字符串常量池、元数据区、jvm参数配置

    12.JDK1.8 JVM运行时数据区域概览 12.1.JDK1.8 JVM运行时数据区域概览 12.2.各区域介绍 12.3.各区域介绍 12.3.1.程序计数器 12.3.2.Java虚拟机栈 1 ...

  4. java中的native关键字有什么作用?(java本地方法)

    转自: http://zhidao.baidu.com/link?url=Xu94DBMxXz3sJyCrG7G1sCmXoHuyuYx4DMG1x7UqYL7FhfFnqF7-Z9nxIQUpntP ...

  5. JVM程序计数器,虚拟机栈,本地方法栈

    程序计数器 它记录了程序执行字节码的行号和指令,字节码解释器的工作就是改变程序计数器的值,切换下一条需要执行的指令(分支,循环,跳转,异常等).java虚拟机是多线程通过轮流切换CPU时间片的方式实现 ...

  6. 【Android 内存优化】Java 内存模型 ( Java 虚拟机内存模型 | 线程私有区 | 共享数据区 | 内存回收算法 | 引用计数 | 可达性分析 )

    文章目录 一. Java 虚拟机内存模型 二. 程序计数器 ( 线程私有区 ) 三. 虚拟机栈 ( 线程私有区 ) 四. 本地方法栈 ( 线程私有区 ) 五. 方法区 ( 共享数据区 ) 1. 方法区 ...

  7. JVM【带着问题去学习 02】数据结构栈+本地方法栈+虚拟机栈+JVM栈运行原理

    1.数据结构栈 栈是一种比较简单的数据结构,后进先出.栈本身是一个线性表,但是这个表中只有一端允许数据的进出.栈的常用操作包括入栈push和出栈pop,对应于数据的压入和弹出.由于栈后进先出的特性,常 ...

  8. JVM学习笔记上(概述-本地方法栈)

    背景 前一阵跟着宋红康的视频学了学JVM,视频没有更新完,所以也没学完,这里记录一下笔记 JVM概述 JVM位置:  运行在操作系统之上 相对于java语言,JVM的位置如下所示 对于安卓的Davli ...

  9. JVM内存结构|本地方法栈和堆

    本地方法栈 服务的对象是jvm执行的native方法,而虚拟机栈服务的对象 当线程调用本地方法时,虚拟机会保持java栈不变,不再在线程的java栈中压入新的栈帧,虚拟机只是简单的动态连接并直接调用指 ...

最新文章

  1. 网课谁的最好_报补习班,还是“上网课”?利用课余时间提高成绩,网课更加适合...
  2. 自制反汇编逆向分析工具 迭代第六版本 (二)
  3. 超大规模数据中心vs微型数据中心
  4. 《WinForm开发系列之控件篇》Item33 NotifyIcon(暂无)
  5. mysql connection是什么_记一次MySQL出现too many connection
  6. 看似杂乱无序的随机运动.....
  7. 弱引用什么时候被回收_Java基础 强引用、弱引用、软引用、虚引用
  8. h5课件制作_PPT新功能!竟然还能用来制作H5
  9. 现在写程序要像蚊子一样WZ132
  10. Python笔记-字符串转json
  11. 蓝星二开某微商城源码+搭建教程
  12. 一维FDTD等离子体的Matlab,修正过的一维FDTD等离子体MATLAB代码(公式修正)
  13. “化鲲为鹏,我有话说”如何用鲲鹏弹性云服务器部署《Python网络爬虫开发环境》
  14. Java 并发编程之 LockSupport
  15. 动态列从一表的数据汇总至另外一张表中
  16. SQL 错误代码汇总
  17. 巨蟒django之CRM2 展示客户列表分页
  18. 【DP专题】LintCode刷题笔记
  19. 如何使用UltraCompare对比两个文件夹内容差异
  20. 百度的世界里,AI没有退路

热门文章

  1. mysql 百度地图 省市_百度地图自定义选取区域(一)
  2. SSL双向认证以及证书的制作和使用
  3. bsd协议开源框架tcp服务器,搬运RT Thread中BSD Socket实现UDP及TCP例子
  4. 干货:浏览器渲染引擎Webkit和V8引擎工作原理
  5. 虚拟机没有声音,提示 “使用的设备标识号已超出本地系统范围”的解决方法
  6. python生成和为1的随机数_生成0.1到1.0之间的随机数。Python
  7. 90%的自媒体达人都在用的文案模板
  8. redmine 部署
  9. 猜中了A股会震荡,没猜中会这样
  10. 捷俊通地磅称重软件在垃圾处理厂中的应用