【JVM篇】什么是运行时数据区

news2024/10/7 4:32:08

文章目录

  • 🍔什么是运行时数据区
    • ⭐程序计数器
    • ⭐栈
      • 🔎Java虚拟机栈
        • 🎈栈帧的内容
      • 🔎本地方法栈
    • ⭐堆
    • ⭐方法区

在这里插入图片描述

🍔什么是运行时数据区

运行时数据区指的是jvm所管理的内存区域,其中分为两大类

  • 线程共享:方法区,堆
  • 线程不共享:程序计数器,栈(本地方法栈,虚拟机栈)

方法区:存放每一个加载的类的基础信息,运行时常量池,字符串常量池
堆:存放创建出来的对象
本地方法栈和虚拟机栈都存放了线程中执行方法时需要使用的基础数据。
程序计数器存放了当前线程执行的字节码指令在内存中的地址。

直接内存主要是NIO使用,有操作系统直接管理,不属于JVM内存

⭐程序计数器

程序计数器也叫PC寄存器,每个线程会通过程序计数器记录当前要执行的字节码指令的地址
主要有2个作用

  • 可以控制程序指令的进行,实现分支,跳转,异常等逻辑
  • 在多线程执行情况下,Java虚拟机需要通过程序计数器记录CPU切换前,解释执行到的指令并且继续解释执行

请添加图片描述
表面上2个线程是并行的,其实实际上是交替执行的,执行一会线程A后,会执行一会线程B,然后继续交替执行

⭐栈

🔎Java虚拟机栈

Java虚拟机栈采用栈的数据结构来管理方法调用中的基本数据,先进后出
每一个方法的调用所以一个栈帧来保存
每个线程都会包含一个自己的虚拟机栈,它的生命周期和线程相同(这样子也能看出jvm的线程是不共享的,因为每个线程都有自己的栈)
请添加图片描述

🎈栈帧的内容

主要包含下面3部分内容

  • 局部变量表:在方法执行过程在存放所有的局部变量
  • 操作数帧:虚拟机在执行指令过程中用来存放临时数据的一块区域
  • 帧数据

🔎本地方法栈

Java虚拟机栈存储了Java方法调用时的栈帧,而本地方法栈存储的是native本地方法的栈帧
在hotspot虚拟机中,Java虚拟机栈和本地方法栈实现上使用了同一个栈空间。本地方法栈会在栈内存上生成一个栈帧,临时保存方法的参数的同时方便出现异常时也把本地方法的栈信息打印出来

⭐堆

一般Java程序中堆内存是空间最大的一块内存区域,创建出来的对象都存储在堆上
栈上的局部变量表,可以存放堆中的对象的引用。静态变量也可以存放堆中的对象的引用,通过静态变量就可以实现对象在线程之间共享
堆是垃圾回收最重要的部分,堆结构更详细的划分于垃圾回收器有关
请添加图片描述

⭐方法区

方法区是Java虚拟机规范中提出来的一个虚拟机概念,在HotSpot虚拟机不同版本中会使用永久代或者元空间来实现。方法区主要存放的是基础信息,如下:

  • 每一个加载类的基础信息

  • 请添加图片描述

  • 运行时常量池,保存了字节码文件中的常量池内容,比卖你常量内容重复创建减少内存开销

  • 字符串常量池,存储字符串的常量

在技术的道路上,我们不断探索、不断前行,不断面对挑战、不断突破自我。科技的发展改变着世界,而我们作为技术人员,也在这个过程中书写着自己的篇章。让我们携手并进,共同努力,开创美好的未来!愿我们在科技的征途上不断奋进,创造出更加美好、更加智能的明天!

在这里插入图片描述

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

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

相关文章

Unity导出Android studio项目遇到的aar无法打包问题

Android Studio 接入现有aar 前因,开发过程中,发现Unity打包出来的android包,带有aar,随着android studio打包的过程中,发现要么提示aar要从网络下载,下载不到,要么提示当前aar不能直接在本地引入(玄学,之前一直不会),会导致损坏。 原因,Android studio版本高,An…

OpenCV中inRange函数

在OpenCV中,inRange函数用于根据颜色范围从图像中提取特定的颜色区域。这个函数检查输入图像中的每个像素,如果像素值位于指定的范围内,则在输出图像(或掩码)中对应位置的像素被设置为白色(或者说是255&…

救命~女儿这样穿也太好看了吧

充满青春活力感的 一件小熊针织学院风开衫 小编墙裂推荐哦早春天气微凉 这件抗起球包芯纱材质的开衫 厚度就刚刚好里面随意搭件T恤来穿 上学还是日常出游穿都很合适

传奇手游白日门【天玺996】win架设服务端+双端+GM授权后台+详细教程

资源下载地址:传奇手游白日门【天玺996】win架设服务端双端GM授权后台详细教程 - 海盗空间

数据结构1.0(基础)

近java的介绍, 文章目录 第一章、数据结构1、数据结构 ?2、常用的数据结构数据结构? 逻辑结构and物理结构 第二章、数据结构基本介绍2.1、数组(Array)2.2、堆栈(Stack)2.3、队列(Que…

基于Gost工具的ICMP隐蔽隧道通信分析

1.概述 近期,观成科技安全研究团队在现网中检测到了利用Gost工具实现加密隧道的攻击行为。Gost是一款支持多种协议的隧道工具,使用go语言编写。该工具实现了多种协议的隧道通信方法,例如TCP/UDP协议,Websocket,HTTP/2…

MySQL之select查询

华子目录 SQL简介SQL语句分类SQL语句的书写规范SQL注释单行注释多行注释 select语句简单的select语句select的算数运算select 要查询的信息 from 表名;查询表字段查询常量查询表达式查询函数 查询定义别名as安全等于<>去重distinct连接字段concat 模糊查询运算符比较运算…

电商数据分析工具(京东淘宝电商数据):电商运营过程中为什么要做数据分析?电商企业如何做好数据分析?

众所周知&#xff0c;电商企业进行数据分析是电商运营中的重要一环&#xff0c;电商数据分析是企业持续改进业务流程、提高运营效率、增加收入和利润的关键。 通过深入的数据分析&#xff0c;电商企业能够更有效地响应市场需求、提高客户满意度&#xff0c;最终实现可持续增长…

如何图片无损放大?几个无损放大图片分享

在数字化时代&#xff0c;图片已经成为我们生活中不可或缺的一部分。从社交媒体上的分享&#xff0c;到专业摄影作品的展示&#xff0c;再到网页设计和平面广告的制作&#xff0c;图片的质量往往直接影响到我们的视觉体验和信息传达的效果。然而&#xff0c;有时候&#xff0c;…

选择现货白银交易平台后要怎么做?

进入现货白银市场&#xff0c;选择现货白银交易平台是投资者首先要面对的问题。然而&#xff0c;有投资者认为解决了这个问题&#xff0c;往后就一帆风顺了&#xff0c;这样投资者把现货白银交易想的太简单了。如果真这么简单&#xff0c;岂不是很多投资者都可以获得盈利&#…

快排——OJ题

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、颜色划分1、题目讲解2、算法原理3、代码实现 二、排序数组1、题目讲解2、算法原理3、代码…

网络运行安全

网络运行安全 第一节 一般规定 第二十一条 国家实行网络安全等级保护制度。网络运营者应当按照网络安全等级保护制度的要求,履行下列安全保护义务,保障网络免受干扰、破坏或者未收授权的访问,防止网络数据泄露或者被窃取、篡改: 制定内部安全管理制度和操作规程,确定网络…

JVM--- 垃圾收集器详细整理

目录 一、垃圾收集需要考虑的三个事情&#xff1a; 二、垃圾回收针对的区域 三、如何判断对象已死 1.引用计数算法&#xff1a; 2.可达性分析算法 四、引用 五、生存还是死亡&#xff1f; 六、回收方法区 七、垃圾收集算法 1.分代收集理论 2.标记-清除算法 3.标记-复制算…

11-k8s中网络资源service

一、service资源概述 每当我们企业的业务pod迭代功能的时候&#xff0c;都会修改pod&#xff0c;修改后重新启动pod&#xff0c;ip就会变化&#xff0c;那么在生产环境当中&#xff0c;从用户到宿主机、从宿主机到pod&#xff0c;这一个访问流程&#xff0c;都是事先写好的&…

储能光伏一体化解决方案

上海安科瑞电气股份有限公司 胡冠楠 咨询家&#xff1a;“Acrelhgn”&#xff0c;了解更多产品资讯 1. 工业园区能源数字化系统构成 把一个工业园区的能源系统看成一个微网&#xff0c;这个能源微网可能由微电网、给/排水网、供冷/热管网、燃气管网等等组成。要提高园区的能源…

【安全狐】Windows修改文件时间

Windows修改文件时间 在应急响应过程中不要对文件时间100%的相信 powershell下执行 (ls 1.txt).CreationTimeUtc2029-01-25 06:00:10 (ls 1.txt).LastWriteTimeUtc2029-01-25 06:00:10 (ls 1.txt).LastAccessTimeUtc2029-01-25 06:00:10

selenium 驱动 Edge浏览器,解决selenium打开Edge浏览器闪退问题

一、Edge浏览器驱动下载 1、在设置中查看浏览器的版本号 2、在官网中进行对应下载 Microsoft Edge WebDriver - Microsoft Edge Developer 二、环境变量配置 1、打开设置界面 右击【此电脑】---选择【属性】----选择【高级系统设置】-----点击【环境变量】 2、变量设置 在…

Linux------环境变量

目录 前言 一、环境变量 二、添加PATH环境变量 三、HOME环境变量 四、查看所有环境变量 1.指令获取 2.代码获取 2.1 getenv 2.2main函数的第三个参数 2.3 全局变量environ 五、环境变量存放地点 六、添加自命名环境变量 七、系统环境变量具有全局属性 八、环境变…

[AIGC] 利用 ChatGpt 深入理解 Java 虚拟机(JVM)的内存分布

深入理解 Java 虚拟机&#xff08;JVM&#xff09;的内存分布 Java 虚拟机&#xff08;JVM&#xff09;是 Java 编程语言的核心运行环境&#xff0c;它负责解释和执行 Java 字节码。在 JVM 中&#xff0c;内存被划分为几个不同的区域&#xff0c;每个区域都有特定的用途。了解…

java生成pdf

1.pdf预览 2.maven <!--pdf--><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.9</version></dependency><dependency><groupId>com.itextpdf</groupId>…