精华内容
下载资源
问答
  • java程序计数器(线程私有)
    2021-03-14 22:53:39

    一块较小的内存空间, 是当前线程所执行的字节码的行号指示器,每条线程都要有一个独立的程序计数
    器,这类内存也称为“线程私有” 的内存。
    正在执行 java 方法的话,计数器记录的是虚拟机字节码指令的地址(当前指令的地址) 。如果还是
    Native 方法,则为空。
    这个内存区域是唯一一个在虚拟机中没有规定任何 OutOfMemoryError 情况的区域。

    更多相关内容
  • JAVA程序计数器理解

    2021-07-23 19:13:28
    JVM在运行时,内存区域中属于程序私有的区域包括:程序计数器、虚拟机栈、本地方法栈。本片文章主要理解程序计数器的相关概念以及工作原理。 一、什么是程序计数器 程序计数器是记录着当前线程所执行的字节码的...

        JVM在运行时,内存区域中属于程序私有的区域包括:程序计数器、虚拟机栈、本地方法栈。本片文章主要理解程序计数器的相关概念以及工作原理。

    一、什么是程序计数器

        程序计数器是记录着当前线程所执行的字节码的行号指示器。

    二、为什么需要程序计数器

        Java在编译后的字节码未经过JIT(实时编译器)编译前,其执行方式是通过“字节码解释器”解释执行。可以简单理解为解释器读取装入内存的字节码,按照顺序读区字节码指令,并翻译成指定的操作,并根据这些操作进行计算、跳转、循环等操作。

        从上面的描述,可以怀疑程序计数器还有必要吗?如果程序永远只有一个线程,指令按顺序执行即可,确实程序计数器没有存在的必要。但是Java程序是多线程协同合作执行的,而JVM的多线程是通过CPU的时间片轮转算法实现,也就是说线程可能还没有执行完,但是由于时间片耗尽,不得不挂起,等待下次分配时间片,才能继续执行。所以需要计数器记住被挂起时,程序执行的位置。

    三、程序计数器的特点

         1、每个线程私有一个程序计数器。

        2、程序计数器的值为对应线程执行字节码指令的地址。

        3、执行native本地方法时,程序计数器的值为空(Undefined)。因为native方法是java通过JNI直接调用本地C/C++库,可以近似的认为native方法相当于C/C++暴露给java的一个接口,java通过调用这个接口从而调用到C/C++方法。由于该方法是通过C/C++而不是java进行实现。那么自然无法产生相应的字节码,并且C/C++执行时的内存分配是由自己语言决定的,而不是由JVM决定的。

        4、程序计数器占用内存空间很小,几乎可以忽略不计。

        5、唯一一个无OOM的区域

    展开全文
  • Java程序计数器

    2018-11-28 10:32:42
    程序技术器是一块较小的内存空间,他可以看作是当前线程执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器...

            程序技术器是一块较小的内存空间,他可以看作是当前线程执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能都需要依赖计数器来完成。

            由于java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(对于多核处理器来说是一个内核)只会执行一条程序中的指令,因此,为了线程切换能恢复到正确的执行位置,每条线程都需要有一个独立的计数器,各条线程之间计数器是互不影响,独立存储,我们称这类内存区域为 “线程私有”的内存。

            如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址:如果正在执行的是本地的方法,这个计数器值则为空。此内存区域是唯一一个在java虚拟机规范中没有规定任何OutOfMemoryError情况的区域。

    展开全文
  • Java 程序计数器

    2019-12-21 12:22:04
    程序计数器 1. 概述 程序计数器是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。 在概念模型中,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,...

    Java 程序计数器

    1. 概述

    • 程序计数器是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码行号指示器
    • 在概念模型中,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要这个计数器来完成
    • Java 虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(对于多喝处理器来说是一个内核)只会执行一条线程中的指令。
    • 因此,为了线程切换后能恢复到正确的执行位置,每个线程都需要有一个独立的程序计数器,各条线程之间的计数器互不影响,独立存储,称这类内存区域为**“线程私有”**的内存。
    • 如果线程现在正在执行的是一个 Java 方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址
    • 如果线程正在执行的是 Native 方法,这个计数器值则为空(Undefined)(Native方法是非Java语言编写,比如c/c++,它们无法在 Java 编译时生成字节码,即JVM 获取不到 native 实现, 只能通过系统指令去调用native方法)
    • 此内存区域是唯一一个在 Java 虚拟机规范中没有规定任何 OutOfMemoryError情况的区域

    2.特点

    • 占内存很小,唯一不会规定任何 OutOfMemoryError情况
    • 线程私有
    • 对java方法是字节码指令的地址,对 Native 方法是 Undefined

    3.举例子理解

    package PC;
    
    public class Demo {
        public int fun() {
            int a = 100;
            int b = 200;
            int c = 300;
            return (a + b) * c;
        }
    }
    

    将class文件反编译之后,数字部分就是字节码指令的偏移量,bipush之类的是jvm的操作指令,当执行fun()方法时,在当前线程中就会创建相应的程序计数器,在计数器中存放执行地址。
    反编译结果

    之后希望可以分享一些有关于多线程以及Native方法的相关总结。

    展开全文
  • JAVA程序计数器

    千次阅读 2018-11-30 09:51:24
    1)程序计数器java虚拟机管理的内存区域之一 2)它是一块较小的内存空间,可以把它看做是当前线程所执行的字节码的行号指示器。 3)java虚拟机的多线程的实现原理是通过线程轮流切换并获得处理器的执行时间, 在...
  • 什么是程序计数器?程序计数器是当前线程正在执行的字节码的地址。程序计数器是线程隔离的,每一个线程在工作的时候都有一个独立的计数器。2.字节码的执行原理编译后的字节码在没有经过JIT(实时编译器)编译前,是通过...
  • Java中的程序计数器是什么

    千次阅读 2021-02-12 10:22:55
    程序计数器是当前线程正在执行的字节码的地址。程序计数器是线程隔离的,每一个线程在工作的时候都有一个独立的计数器。JAVA虚拟机管理的内存区域图1.什么是程序计数器?程序计数器是当前线程正在执行的字节码的地址...
  • java 程序计数器

    2016-08-09 13:57:37
    2.每个线程都需要一个独立的程序计数器,各线程之间互不影响。 3.a.线程执行java方法,计数器记录正在执行的虚拟机字节码指令的地址;b.线程执行native方法,计数器值空(Undefined)。 4.虚拟机规范中唯一...
  • 1、前篇介绍了【JAVA虚拟机堆内存结构以及堆内存作用对象回收机制】,主要包含四部分 一、堆区(Heap) 二、对象的内存布局 三、对象的访问定位 四、Java堆的内存划分 2、前篇博文已将对JVM虚拟机内存中的 ...
  • 从图中可以看到有5大内存区域,按照是否被线程所共享可分为两部分,一部分是线程独占区域,包括Java栈,本地方法栈和程序计数器。还有一部分是被线程所共享的,包括方法区和堆。什么是线程共享和线程独占呢,非常好...
  • Java虚拟机程序计数器在书上的P39页程序计数器干嘛的?有了它,字节码解释器才可以知道下一条要执行的字节码指令是哪个。无论是取下一条指令还是分支、循环、跳转、中断、线程恢复,都需要这个程序计数器程序...
  • PC寄存器(程序计数器)概述 PC Register介绍 JVM中的程序计数寄存器(Program Counter Register),Register的命名源于CPU寄存器。寄存器存储指令相关的信息,CPU只有把数据装在到寄存器才能够运行。 这里的寄存器...
  • 程序计数器是一块 较小 的内存空间,它可以看做是当前线程所执行的字节码的 行号指示器 ;在虚拟机的概念模型里(仅仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时,就是通过改变这...
  • 程序计数器(program counter register)只占用了一块比较小的内存空间,至于小到什么程度呢,这样说吧,有时可以忽略不计的。 作用 可以看作是当前线程所执行的字节码文件(class)的行号指示器。在虚拟机的...
  • JVM内存结构组成部分包括程序计数器、虚拟机栈、本地方法栈、堆、方法区。 首先我们来看程序计数器(PC Register),再了解程序计数器的作用之前,我们先分析下面的代码。 很明显图中右侧是Java源代码,Java源...
  • Java虚拟机--程序计数器

    千次阅读 2018-07-10 08:35:09
    1 《深入理解Java虚拟机》 2 https://blog.csdn.net/leaf_0303/article/details/78953669 3 https://blog.csdn.net/zhushao_1229/article/details/52782091 4 https://blog.csdn.net/youngyouth/article/d...
  • Program Counter Register 程序计数器(寄存器),Java代码无法直接执行,需要先将源代码转为二进制字节码即JVM指令,然后交由解释器在转换成机器码后才能有CPU去执行。而程序计数器的作用就是记录
  • 这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟; 作用? PC寄存器...
  • jvm规范规定程序计数器不会内存溢出,但是程序计数器是和线程绑定的,新增一个线程也会新增一个程序计数器。那么怎么保证新增线程时,程序计数器的空间是足够的呢?
  • 1、运行时数据区的结构2、JVM线程的说明3、程序计数器(PC寄存器)4、java虚拟机栈 内容详情: 1、运行时数据区的结构其中:上面的本地方法栈,程序计数器,虚拟机栈是每个线程都有一份的,堆区和和右边的方法区是...
  • Java内存区域之程序计数器

    千次阅读 2018-03-21 20:30:35
    ava虚拟机程序计数器在书上的P39页程序计数器干嘛的?有了它,字节码解释器才可以知道下一条要执行的字节...而Java程序计数器存在内存里。我好像在操作系统中也听说过程序计数器?是跟操作系统中的程序计数器有点...
  • java 内存模型程序计数器和虚拟机栈

    千次阅读 2019-09-23 20:04:57
    java程序运行过程中会把它所管理的区域划分不同的数据区域,其中包括方法区、虚拟机栈、本地方法栈、堆、程序计数器。 一、程序计数器 程序计数器是一块 较小 的内存空间,它可以看做是当前线程所执行的字节码的 ...
  • Java虚拟机的多线程是通过各个线程的轮流切换并分配处理器的执行时间(cpu时间片)来实现的,同一时间处理器 只能执行一条线程,为了线程切换后可以恢复到原来执行的位置,每条线程需要一个独立的程序计数器,各个线程...
  • 程序计数器 介绍 JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理...
  • 内存结构 程序计数器 虚拟机栈 本地方法栈 堆 方法区 1. 程序计数器 从上面这张图可以看出程序计数器在JVM里的位置,可以看到它属于JVM内存结构的组成部分。...java程序是支持多线程一起运行的,多个线程一起
  • 通过上一篇文章,我们大了解了JVM的整体架构,其大概分为:元数据(JDK7是方法区)、堆、虚拟机栈、本地方法栈、程序计数器几个部分。 下面,咱们再对它进行逐一"解剖",一探究竟。 1. PC 程序计数器 什么是程序...
  • JVM之程序计数器

    2021-06-20 22:17:55
    作用:用于存储下一条指令的地址。...执行java方法时,程序计数器是有值的,且记录的是正在执行的字节码指令的地址(参考上一小节的描述)。  3.执行native本地方法时,程序计数器的值为空(Undefined)。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 142,395
精华内容 56,958
关键字:

java程序计数器

java 订阅
友情链接: MO-Layer.rar