美文网首页
JVM之程序计数器

JVM之程序计数器

作者: Seven_DQ | 来源:发表于2021-06-14 21:21 被阅读0次

数据运行时数据区域

Java虚拟机在执行Java程序过程中会将它管理的内存分成若干个不同的数据区域,不同的数据区域用途不同,内存的管理(创建和销毁)不同,如下图是Java虚拟机中数据的区域模型图。

图1-1 Java 虚拟机运行时数据区

程序计数器

程序计数器(Program Counter Register)是一块比较小的内存空间,通过改变计数器的值来选取下一条需要执行的字节码指令,是程序控制流的指示器,分支、循环、跳转、异常、线程恢复等基础功能都是需要依赖计数器来完成。每条线程都是有一个独立的程序计数器,线程之前互相没有影响,这样在多线程中可以很容易的管理每个线程需要执行的下一个代码是什么(字节码指令)。如果线程正在执行Java方法,则计数器记录的是正在执行的虚拟机字节码指令的地址;如果执行的是本地方法,则计数器的值为空(Undefined)。程序计数器是唯一一个不会发生OutOfMemoryError的内存区域。

总结:
  1. 程序计数器是线程私有的内存空间,主要记录线程需要执行的下一个字节码指令地址,不会发生OOM
  2. 线程执行本地方法时,计数器记录的值为空
  3. 内存的生命周期是伴随着线程的创建而创建,销毁而销毁,而且占用空间非常小
思考:
  1. 是如何保障顺序的,也就是字节码指令执行前就记录下一条?还是执行完再记录下一条指令地址。
    A:首先程序计数器记录的是当前执行的指令地址,程序计数器其实不保证整个代码的顺序,一个线程的代码执行顺序使用通过栈的数据结构来控制的。
  2. 如何保障一致性,记录的字节码指令是否真的执行成功,执行失败怎么办
  3. 在执行本地方法时计数器的值是空,为什么

引用

  1. 《深入理解Java虚拟·JVM高级特性与最佳实践 第3版》周志明

相关文章

  • 第一章 java虚拟机内存概要

    ###jvm运行时数据区域(NO.1) > >(img) >(img) ##程序计数器 >程序计数器在jvm中是一...

  • JVM

    JVM JVM 工作流程 运行时数据区(Runtime Data Area) 程序计数器 程序计数器(Progra...

  • 终于有人将jvm讲清楚了,阿里架构师推荐jvm架构解析文档

    一、JVM 内存区域划分 程序计数器(线程私有) 程序计数器(Program Counter Register),...

  • JVM 内存结构和垃圾回收

    1. JVM 内存结构 1.1 程序计数器 JVM 支持多线程同时执行,每个线程都有自己的程序计数器,线程正在执行...

  • JVM内存区域划分

    JVM内存的划分有五片: 程序计数器   程序计数器(Program Counter Register),也有称作...

  • 01 JVM内存结构组成

    1 JVM 概述图 2 内存结构 2.1 程序计数器 2.1.1 概述 程序计数器(寄存器):是记录下一条jvm指...

  • 图解jvm--(一)jvm内存结构

    jvm内存结构 1.程序计数器 1.1 定义 Program Counter Register 程序计数器(寄存器...

  • 深入理解JVM内存模型

    JVM 内存模型 运行时数据区域 程序计数器(Program Conunter Regisiter) 程序计数器是...

  • JVM垃圾回收

    JVM垃圾回收 内存结构 要想理解jvm的垃圾回收机制,必须先知道java虚拟机的内存结构。 程序计数器程序计数器...

  • Jvm内存结构与垃圾回收

    1. jvm运行时内存结构 程序计数器:当前线程通过程序计数器来辅助执行代码,《深入理解JVM》书作者称为...

网友评论

      本文标题:JVM之程序计数器

      本文链接:https://www.haomeiwen.com/subject/mvcisltx.html