运行时数据区

news2024/11/19 7:45:47

目录

一、概述

1.1、数据区

1.2、JAVA线程数据区

二、线程

2.1、JVM线程概述

2.2、JVM系统线程

三、PC寄存器

3.1、寄存器概述

3.2、作用

3.3、常见问题


一、概述

1.1、数据区

        内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行,JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。 

1.2、JAVA线程数据区

        Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。每个JVM只有一个Runtime实例。即为运行时环境,

        灰色的为单独线程私有的,红色的为多个线程共享的。即: 

  • 每个线程:独立包括程序计数器、虚拟机栈、本地方法栈。
  • 线程间共享:堆、堆外内存(永久代或元空间、代码缓存)

二、线程

2.1、JVM线程概述

  • 线程是一个程序里的运行单元。JVM允许一个应用有多个线程并行的执行。
  • 在Hotspot JVM里,每个线程都与操作系统的本地线程直接映射。
  • 当一个Java线程准备好执行以后,此时一个操作系统的本地线程也同时创建。
  • Java线程执行终止后,本地线程也会回收。

2.2、JVM系统线程

  • 虚拟机线程:需要JVM达到安全点才会出现。该线程的执行类型包括"stop-the-world"的垃圾收集,线程栈收集,线程挂起以及偏向锁撤销。
  • 周期任务线程:时间周期事件的体现(比如中断),一般用于周期性操作的调度执行。
  • GC线程:对在JVM里不同种类的垃圾收集行为提供支持。
  • 编译线程:在运行时会将字节码编译成到本地代码。
  • 信号调度线程:接收信号并发送给JVM,在它内部通过调用适当的方法进行处理。

三、PC寄存器

3.1、寄存器概述

        JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。

  • CPU只有把数据装载到寄存器才能够运行
  • JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟

3.2、作用

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

  • PC寄存器是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域
  • 每个线程都有自己的程序计数器,是线程私有的,生命周期与线程的生命周期保持一致。
  • 任何时间一个线程都只有一个方法在执行,也就是所谓的当前方法。
  • 程序计数器会存储当前线程正在执行的Java方法的JVM指令地址;
  • 是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器完成。
  • 字节码解释器工作时就是通过改变计数器的值来选取下一条需要执行的字节码指令。
  • 是唯一一个在Java虚拟机规范中没有规定任何OutofMemoryError情况的区域。

3.3、常见问题

1.使用PC寄存器存储字节码指令地址作用?为什么使用PC寄存器记录当前线程的执行地址呢?

  • 因为CPU需要不停的切换各个线程,切换回来以后,需要知道接着从哪开始继续执行。
  • JVM的字节码解释器需要通过改变PC寄存器的值,明确下一条应该执行的字节码指令。

2.PC寄存器为什么被设定为私有的? 

  • 由于CPU时间片轮限制,众多线程在并发执行过程中,任何一个确定的时刻,一个处理器或者多核处理器中的一个内核,只会执行某个线程中的一条指令。
  • 这样必然导致经常中断或恢复,如何保证分毫无差呢?每个线程在创建后,都会产生自己的程序计数器和栈帧,程序计数器在各个线程之间互不影响。

3.CPU时间片

  • CPU时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片。
  • 在宏观上:俄们可以同时打开多个应用程序,每个程序并行不悖,同时运行。
  • 但在微观上:由于只有一个CPU,一次只能处理程序要求的一部分,如何处理公平,一种方法就是引入时间片,每个程序轮流执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/163478.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vulnhub DC系列 DC-5

总结: 下载地址 DC-5.zip (Size: 521 MB)Download: http://www.five86.com/downloads/DC-5.zipDownload (Mirror): https://download.vulnhub.com/dc/DC-5.zip使用方法:解压后,使用vm直接打开ova文件。 漏洞利用 信息收集 这里还是使用DC-1的方法 1.给靶…

AR Foundation

AR Session 在一个AR应用中有且只允许存在一个AR Session 包括两个组件 :AR Session (用于管理 Session)、AR Input Manager (用于管理输入的一些信息) AR Session(用于管理 Session) 作用:管理AR应用状…

01.数据的存储

1. 数据类型介绍 1)基本的内置类型:char //字符数据类型 short //短整型 int //整形 long //长整型 long long //更长的整形 float //单精度浮点数 double //双精度浮点数 2)类型的意义: 使用这个类型开辟内存空间的大小&#xff…

Docker快速入门自用笔记

1. Docker - 介绍 不同Linux的内核一致。 2. Docker - 与虚拟机的不同 3. Docker - Docker架构 镜像(只读):应用程序及其所需依赖、函数库、环境、配置等文件打包在一起,称为镜像。 容器:镜像中的应用程序运行后…

一文看懂人机对话

人机对话概述 人机对话是指,让机器理解和运用自然语言实现人机通信的技术,如图1所示,通过人机对话交互,用户可以查询信息,如示例中的第一轮对话,用户查询天气信息,用户也可以和机器机型聊天&am…

Pytorch深度学习【十三】

LeNet网络 基本结构图 构造思路 先用卷积层来学习图片空间信息池化层降低敏感度全连接层来转换到类别空间 代码实现 import torch from torch import nn from d2l import torch as d2l class Reshape(nn.Module):def forward(self ,x):return x.view(-1, 1, 28, 28) # vie…

ElasticSearch7 Kibana集群安装

文章目录ElasticSearch安装下载安装包基础环境安装JDK安装修改Linux配置安装ES启动报错bootstrap check failure [1] of [1]: memory locking requested for elasticsearch process but memory is not lockedKibana安装Kibana简介Kibana下载Kibana安装ElasticSearch安装 下载安…

RS485接口电路设计

RS485接口是串口的一种,常常用在一些工业控制中,485通信是半双工的通信,一条总线最多可连接256个485设备。RS485信号速率最高可以到10Mbps,传输距离最大能到1000多米485接口包含一对差分信号A和B,如下图所示RS485标准规…

springcloud3 Nacos的集群搭建

一 nacos的集群搭建说明 1.1 版本选择的说明 本案例采用的版本是1.4.2 ,当选用其他版本均有不同的问题: 1.4.4 nginx代理后,输入密码登录进去。 2.2.0 ,2.1.2等 2.x版本均是 3个节点的启动之后,只能访问一个节点。…

David Murray 加入 VeraViews 担任需求总监

近日,VeraViews宣布任命 David Murray 为需求总监。 VeraViews 是一个旨在提供透明和可审计的无效流量 (IVT) 预防的广告技术平台,很高兴地宣布任命David Murray为 VeraViews 需求总监。 大卫是伦敦的一位商业专家,他在英国许多最大、商业上…

三种方式二叉树求从根到叶子结点的所有路径的方法整理

二叉树求从根到叶子结点的所有路径的方法整理 1. 利用递归和回溯方法求解 思路: 利用递归和回溯的方法求解 首先将当前结点加入到path中,然后判断是否为叶子结点,如果为叶子结点,则保存path路径如果不是叶子结点,则…

IDEA 开发工具

文章目录IDEA 开发工具一、IDEA 概述二、IDEA 下载和安装1. IDEA 下载2. IDEA 安装三、IDEA 中的第一个代码1. IDEA 项目结构介绍2. IDEA 中的第一个代码1)创建 Project 项目2)创建 Module 模块3)创建 class 类4)在类中编写代码5&…

C++指针

指针的基本概念 作用&#xff1a;通过指针间接访问内存。 内存编号从0开始&#xff0c;一般使用16进制表示。 可以利用指针变量保存地址。 指针变量定义和使用 数据类型*变量名 #include<iostream> using namespace std;int main(){//定义指针int a10;//指针定义语…

绕线机-排线伺服速度解算FC(比例随动编程应用)

绕线机模型和算法详细讲解,专栏已有几篇介绍文章,这篇属于补充和升华。在介绍这篇文章算法之前大家有必要了解什么是"随动系统"。相关链接如下: 绕线机机械结构相关介绍: S7-200 SMART PLC和V20变频器绕线机控制应用_RXXW_Dor的博客-CSDN博客_plc绕线机绕线机P…

循迹小车基本原理和代码实现

目录 一、循迹模块使用 二、接线方式 三、循迹小车原理 四、代码实现 一、循迹模块使用 1、TCRT5000传感器的红外发射二极管不断发射红外线&#xff0c;当发出的红外线没有被反射回来或被反射回来但强度不太够时&#xff0c;红外接收管一直处于关断状态&#xff0c;此时模…

将本地SpringBoot微服务制作成Docker Image镜像包然后运行

将本地SpringBoot微服务制作成Docker Image镜像包然后运行 文章目录将本地SpringBoot微服务制作成Docker Image镜像包然后运行1&#xff09;环境准备2&#xff09;验证jar包3&#xff09;制作images镜像包4&#xff09;注意1&#xff09;环境准备 准备一个SpringBoot项目&…

音视频笔记

音视频笔记 基础理论知识 雷神的博客 [总结]视音频编解码技术零基础学习方法 视频压缩 H264码流结构 码流结构&#xff1a;原来你是这样的H264 H265码流结构 音视频基础&#xff1a;H265/HEVC&码流结构 FFMPEG 雷神的博客 [总结]FFMPEG视音频编解码零基础学习方法…

1583_AURIX_TC275_SMU的控制以及FSP

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) SMU的软件控制接口主要是实现了一些控制命令&#xff0c;用于控制SMU的状态机以及FSP。具体的内容在上面的一部分表格以及接下来的一页中的表格中有介绍。 涉及到ed命令&#xff0c;用几个…

NC6 Error to init aggVOStyle,Please check the back log

由于近期调整及抵消模板的公式字段长度不够&#xff0c;就修改了元数据的字符长度&#xff0c;结果导致修改保存后保存&#xff0c;报错如下&#xff08;如果大家有什么好的解决方案&#xff0c;欢迎评论留言一起探讨学习&#xff09;&#xff1a; 错误日志&#xff1a; 11:1…

Slurm中集群配置文件slum.conf

1.slurm.conf简介slurm.conf是一个ASCII文件&#xff0c;它描述了一般的Slurm 配置信息、要管理的节点、有关如何将这些节点分组到分区中&#xff0c;以及各种调度与这些分区关联的参数。此文件应为在群集中的所有节点上保持一致。可以通过设置SLURM_CONF在执行时修改文件位置 …