精华内容
下载资源
问答
  • Java虚拟机 程序计数器

    千次阅读 2015-12-07 22:16:59
    通常的程序计数器(PC)是...Java虚拟机程序计数器Java运行时数据区的一小块内存区域,但是它的功能和通常的程序计数器是类似的,它指向虚拟机正在执行字节码指令的地址。具体点儿说,当虚拟机执行的方法不是

    通常的程序计数器(PC)是计算机CPU中的一个重要部件,它存储着CPU要执行的命令的地址。在计算机从通电到断电这期间,CPU做的事儿也就是不断执行程序计数器指向的指令和更新程序计数器的值使之指向下一条要执行的指令。

    Java虚拟机中的程序计数器是Java运行时数据区中的一小块内存区域,但是它的功能和通常的程序计数器是类似的,它指向虚拟机正在执行字节码指令的地址。具体点儿说,当虚拟机执行的方法不是native的时,程序计数器指向虚拟机正在执行字节码指令的地址;当虚拟机执行的方法是native的时,程序计数器中的值是未定义的。另外,程序计数器是线程私有的,也就是说,每一个线程都拥有仅属于自己的程序计数器。

    内容来源:

    《深入理解Java虚拟机》第二版

    《Java虚拟机规范 Java SE 7版》

    《深入理解计算机系统》第二版

    展开全文
  • JAVA程序计数器

    千次阅读 2018-11-30 09:51:24
    1)程序计数器java虚拟机管理的内存区域之一 2)它是一块较小的内存空间,可以把它看做是当前线程所执行的字节码的行号指示器。 3)java虚拟机的多线程的实现原理是通过线程轮流切换并获得处理器的执行时间, 在...

    1)程序计数器是java虚拟机管理的内存区域之一
    2)它是一块较小的内存空间,可以把它看做是当前线程所执行的字节码的行号指示器。
    3)java虚拟机的多线程的实现原理是通过线程轮流切换并获得处理器的执行时间,
    在任何时刻,一个处理器都只会执行一条线程中的指令,因此线程切换之后,能够恢复到
    上次的执行位置,就是靠程序计数器。为了防止线程之间的紊乱,每个线程都需要一个程序
    计数器,所以程序计数器是线程私有的。

    展开全文
  • 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 程序计数器

    2016-08-09 11:12:29
    2.每个线程都需要一个独立的程序计数器,各线程之间互不影响。 3.a.线程执行java方法,计数器记录正在执行的虚拟机字节码指令的地址;b.线程执行native方法,计数器值空(Undefined)。 4.虚拟机规范唯一没有...

    1.当前线程 所执行字节码  行号指示器。是一块较小的内存空间。

    2.每个线程都需要一个独立的程序计数器,各线程之间互不影响。

    3.a.线程执行java方法,计数器记录正在执行的虚拟机字节码指令的地址;b.线程执行native方法,计数器值空(Undefined)。

    4.虚拟机规范中唯一没有规定任何 OutOfMemoryErro的区域。

    展开全文
  • 这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM的PC寄存器是对物理PC寄存器的一种抽象模拟; 作用? PC寄存器...
  • 2、前篇博文已将对JVM虚拟机内存的 方法栈 【JAVA虚拟机内存结构之虚拟机栈(JVM Stack)】做了详细的介绍,栈的四大部分: 虚拟机栈主要用于存储四部分内容 栈帧(Stack Frame) ------局部变量表 --...
  • ava虚拟机程序计数器在书上的P39页程序计数器干嘛的?有了它,字节码解释器才可以知道下一条要执行的字节...而Java程序计数器存在内存里。我好像在操作系统也听说过程序计数器?是跟操作系统程序计数器有点...
  • 程序计数器program counter register是一块较小的内存空间,他可以看做是当前线程所执行的字节码的行号指示器。在jvm的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令...
  • 程序计数器 介绍 JVM的程序计数寄存器(Program Counter Register),Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理...
  • java 内存模型程序计数器和虚拟机栈

    千次阅读 2019-09-23 20:04:57
    java程序运行过程会把它所管理的区域划分不同的数据区域,其中包括方法区、虚拟机栈、本地方法栈、堆、程序计数器。 一、程序计数器 程序计数器是一块 较小 的内存空间,它可以看做是当前线程所执行的字节码的 ...
  • 程序计数器(program counter register)只占用了一块比较小的内存空间,至于小到什么程度呢,这样说吧,有时可以忽略不计的。 作用 可以看作是当前线程所执行的字节码文件(class)的行号指示器。在虚拟机的...
  • 我们知道对于一个处理器(如果是多核cpu那就是一核),在一个确定的时候只会执行一条线程的指令,一条线程有多个指令,为了线程切换可以恢复到正确执行位置,每个线程都需要有独立的一个程序计数器,不同线程之间...
  • 很明显图右侧是Java源代码,Java源代码是不能直接执行运行的,需要经过编译,即编译成左侧的二进制字节码,主要是JVM指令,正是因为这些JVM指令在不同的操作系统上都是一致的,所以Java才有跨平台的操作。...
  • 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码(代码)的行号指示器。当前执行到哪一行,下面该执行哪一行代码。 程序计数器处于线程的独占区,每个线程都有各自独立的计数器。 如果...
  • 程序计数器 概念: 程序计数器是一块较小的内存空间,它的作用可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里字节码解释器工作时就是通过...当执行java方法时,程序计数器中记录的是虚拟机字...
  • 正在执行 java 方法的话,计数器记录的是虚拟机字节码指令的地址(当前指令的地址) 。如果还是 Native 方法,则为空。 这个内存区域是唯一一个在虚拟机没有规定任何 OutOfMemoryError 情况的区域。 ...
  • 1.如果线程正在执行的是一个java方法,...2.如果正在执行的是 Native方法,这个计数器值则为空(Undefined),此内存区域是 唯一一个 在java 虚拟机规范没有规定任何OutOfMemoryError情况区域。 具体为什么呢? ...
  • 程序计数器

    2021-04-12 23:14:25
    程序计数器是一块较小的内存空间,可以看作当前线程所执行的字节码行号指示器。需要注意以下几点内容: ...4)程序计数器也是在Java虚拟机规范唯一没有规定任何OutOfMemoryError异常情况的区域 ...
  • 先说下程序计数器 这个名字我觉得翻译的不好,给人的直观印象就是给程序计数的,为什么要给程序计数。不是很好理解。 我觉得叫成程序恢复器都比程序计数器容易理解。 为什么,因为程序计数器记录的是正在执行的虚拟机...
  • 这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM的PC寄存器是对物理PC 寄存器的一种抽象模拟。 作用 PC寄存器...
  • 在执行Java程序过程会把它所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途,以及创建和销毁的时间,有的区域随虚拟机进程启动而存在,有的区域依赖用户线程的启动和结束而建立和销毁,根据Java7规划...
  • Java虚拟机程序计数器 在书上的P39页 程序计数器干嘛的? 有了它,字节码解释器才可以知道下一条要执行的字节码指令是哪个。 无论是取下一条指令还是分支、循环、跳转、中断、线程恢复,都需要这个程序计数器。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,165
精华内容 2,866
关键字:

java中程序计数器

java 订阅