合肥Java培训
达内合肥java培训中心

18130056197

热门课程

java虚拟机中程序计数器的概念与特点


java虚拟机是程序员在学习java编程开发的时候需要重点学习的技术知识之一,而今天我们就通过案例分析来了解一下java虚拟机中程序计数器的概念与特点。

java虚拟机中程序计数器的概念与特点

程序计数器:一块较小的内存空间,记录着当前线程所执行的字节码的行号指示器,也就是指向下一条指令的地址,即将执行的指令代码。由执行引擎读取下一条指令。

字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令,读取一个指令就将其翻译成固定的操作,根据这些操作进行分支、循环、跳转等动作。

异常处理、线程恢复等功能都需要依赖这个计数器来完成。

我们在其他地方也看到过程序计数器也叫 PC寄存器(ProgramCounterRegister),Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能运行。

特点

1.如果线程正在执行的是Java方法,则这个计数器记录的是正在执行的虚拟机字节码指令地址。

2.如果正在执行的是Native方法,则这个技术器值为空(Undefined)。

因为native方法是java通过JNI直接调用本地C/C++库,可以近似的认为native方法相当于C/C++暴露给java的一个接口,java通过调用这个接口从而调用到C/C++方法。

由于该方法是通过C/C++而不是java进行实现。那么自然无法产生相应的字节码,并且C/C++执行时的内存分配是由自己语言决定的,而不是由JVM决定的。

3.此内存区域是一个在Java虚拟机规范中没有规定任何OOM情况的区域。

作用

JVM的多线程是通过CPU时间片轮转(即线程轮流切换并分配处理器执行时间)算法来实现的。也就是说,某个线程在执行过程中可能会因为时间片耗尽而被挂起,而另一个线程获取到时间片开始执行。

当被挂起的线程重新获取到时间片的时候,它要想从被挂起的地方继续执行,就必须知道它上次执行到哪个位置,在JVM中,通过程序计数器来记录某个线程的字节码执行位置。

因此,程序计数器是具备线程隔离的特性,也就是说,每个线程工作时都有属于自己的独立计数器。不同线程之间的程序计数器互不影响,独立存储。

【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。

预约申请免费试听课程

         

上一篇:零基础学习java编程开发都有哪些学习方法
下一篇:java编程开发中的代码优化方法

网络优化包含了哪些方面的内容

java程序员需要掌握哪些web优化方法

java异常处理中Exception类的应用

java编程开发中方法的应用与优缺点

选择城市和中心
江西省

贵州省

广西省

海南省