JVM04_程序计数器

Posted root_zhb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM04_程序计数器相关的知识,希望对你有一定的参考价值。

程序计数器(PC寄存、程序钩子)

1、简介

  1. JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。
  2. 作用 :存储指向下一条指令的地址,也即将要执行的指令代码。由执行引擎读取下一条指令
  3. 如果执行的是一个Native方法,那这个计数器是undefined
  4. 线程私有;无GC;无OOM

在这里插入图片描述在这里插入图片描述

2、面试问题

  1. 使用PC寄存器存储字节码指令地址有什么用呢? 为什么使用PC寄存器记录当前线程的执行地址呢?
    因为CPU需要不停的切换各个线程,这时候切换回来以后,就得知道接着从哪开始继续执行
    JVM的字节码解释器就需要通过改变PC寄存器的值来明确下一条应该执行什么样的字节码指令
  2. PC寄存器为什么设定为线程私有?
    为了能够准确记录各个线程正在执行的当前字节码指令地址,最好的办法自然是为每一个线程都分配一个PC寄存器,各个线程互不干扰。

3、CPU时间片

CPU时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片。

并行 VS 串行
并发 VS 单发

以上是关于JVM04_程序计数器的主要内容,如果未能解决你的问题,请参考以下文章

黑马程序员JVM教程笔记完整目录

JVM_03 运行时数据区1-[程序计数器+虚拟机栈+本地方法栈]

JVM05_程序计数器的作用特点线程私有本地方法的概述

JVM——内存结构

jvm_内存结构

JVM04——垃圾回收器和回收算法