首页 > 编程知识 正文

数据存储器和寄存器有啥区别,pc寄存器的值存在什么地方

时间:2023-05-05 15:46:05 阅读:126854 作者:2880

在运行时数据区和PC寄存器之前,简要介绍了JVM的概要和类加载系统。 传送门如下。

3359 blog.csdn.net/weixin _ 43823391/article/details/118637349、https://blog.csdn.net/weixin _ 4382391/arered

另一方面,JVM运行时数据区1.1通过运行时数据区前的“类加载-验证-准备-分析-初始化”阶段后,执行引擎使用我们的类,同时执行引擎使用我们的运行时数据区

内存是非常重要的系统资源,是硬盘与CPU的中间仓库和桥梁,基于操作系统和APP应用的实时运行JVM内存布局规定了Java运行中内存申请、分配和管理的策略,保证了JVM的高效稳定运行根据JVM的不同,内存的分割方法和管理机制有部分差异。 结合JVM虚拟机的规格,研究一下经典的JVM内存布局。

Java虚拟机定义了在几个程序运行时使用的运行时数据区。 其中几个是在虚拟机启动时创建的,在虚拟机退出时销毁。 另外,还有与线程对应的内容。 与线程对应的数据区域将随着线程的开始和结束而创建和销毁。

每个线程:独立地包括程序计数器、堆栈和本地堆栈。

线程间共享:堆、堆外内存(永久层代或元空间、代码缓存) ) )。

每个JVM只有一个Runtime实例。 也就是说,是运行时环境,相当于存储器结构中间的框架:运行时环境。

1.2线程是程序中的执行单元。 JVM允许在单个APP应用程序中并行执行多个线程。 在Hotspot JVM中,每个线程都直接映射到操作系统的本地线程。

当Java线程准备运行时,还会同时创建操作系统的本地线程。 当Java线程运行结束时,本地线程也将被重用。

操作系统将所有线程的时间表设置为可用的CPU之一。 成功初始化本地线程后,将调用Java线程中的run ()方法。

1.3 JVM系统线程虚拟机线程:在JVM到达安全点之前不会发生此类线程操作。 这些操作必须在不同线程上进行的原因是,为了防止堆发生变化,JVM必须到达安全点。 此线程的执行类型包括“停止时间世界”垃圾回收、线程堆栈收集、线程挂起和取消偏转锁定。 周期任务线程:此线程是时间周期事件(如中断)的体现,通常用于计划执行定期操作。 GC线程:此线程支持JVM中各种类型的垃圾回收行为; 编译线程:在运行时将字节码编译成本地代码的线程; 信号调度线程:此线程接收信号并将其发送到JVM,然后通过在其中调用相应的方法进行处理。 二、PC寄存器2.1概要在JVM的程序计数寄存器(Program Counter Register )中,Register的命名来源于CPU的寄存器,寄存器存储有关指令的现场信息。 CPU必须将数据加载到寄存器中才能工作。 在这里,翻译成PC计数器(或指令计数器)可能更合适,而不是广义上的物理寄存器。 另外,也称为程序挂钩。 (也不易发生不必要的误会。 JVM内的PC寄存器是物理PC寄存器的抽象模拟。

2.2作用PC寄存器用于存储指向下一条指令的地址,即将执行的指令代码。由执行引擎读取下一条指令。

那是个小内存空间,几乎可以无视而记不住。 也是运行速度最快的存储区。

JVM规范中,每个线程都有自己的程序计数器,是线程的专用,生命周期与线程的生命周期相匹配。

每个时间一个线程只运行一种方法。 也就是现在的方法。 程序计数器存储当前线程正在执行的Java方法的JVM指令地址。 或者,如果正在运行native方法,则未指定值(undefined )。

这是程序控制流的指示符,分支、循环、跳转、异常处理、线程恢复等基础功能需要依赖于该计数器来进行。

字节码解释器通过修改此计数器的值并选择下一个要执行的字节码命令来工作。

这是Java虚拟机规范中唯一没有规定内存外错情况的区域。

简单来说,class文件加载到方法区域,JVM解析到运行时数据区域。 JVM用户线程通过执行引擎使用运行时数据区中的数据。

追记: 1、为什么电脑寄存器设置为私有?

我们知道,多线程是一种在特定时间段只运行其中一个线程的方法,由于CPU不断切换任务,必然会导致频繁的中断和恢复。 怎么做到毫厘不爽呢? 为了准确记录每个线程运行的当前字节码指令地址,最好的方法是为每个线程分配PC寄存器,这样可以在每个线程之间进行独立的计算,从而避免相互干扰。

由于CPU时间片的限制,许多线程在并发执行过程中,在某个特定时间点,一个处理器或多核处理器中的一个内核只执行一个线程中的一个指令。 这必然会导致频繁的中断和恢复,如何保证点不错呢? 每个线程创建后生成自己的程序计数器和堆栈帧,程序计数器在每个线程之间互不影响。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。