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

JVM的内存区域划分

JVM即Java虚拟机,是Java实现跨平台交互能力的核心,Java编译后的.class文件,就是通过虚拟机和操作系统进行交互的;

常见的虚拟机有:JVM、VMwave、Virtual Box,目前最主流使用的JVM是HotSpot VM;

JVM 的内存区域划分,主要分为这几个部分:本地方法栈,程序计数器,虚拟机栈,堆区,元数据区;

(此处的 "栈" 与数据结构的栈是不一样的概念,此处的栈,指的是 JVM 中的一个特定存储空间;)

一个 JVM 对应一个 Java进程,这也是为了进程之间保持一定的隔离性;

本地方法栈:native 表示 JVM 内部的 C++ 代码,就是给调用 JVM 内部方法准备的栈空间,存储的是 native 方法之间的调用关系,是线程私有的,即一个线程对应一个本地方法栈;

程序计数器:记录当前的线程执行到了哪一个指令,每一个线程会有对应的一个程序计数器; 

虚拟机栈:此处就是个 Java程序代码 使用的栈,存储的是代码方法之间的调用关系;在栈空间内,是包含有很多个元素的,每个元素表示一个方法,也称为一个栈帧,且每个栈帧会包含方法的入口地址,方法的参数,方法的返回地址和局部变量等;同时这一块空间内,并不是只包含一个虚拟机栈,而是包含多个的,每一个线程对应一个虚拟机栈,此处可以通过 jconsole 来对某一个线程进行查看,查看线程里的栈调用关系;

栈上的内存空间是跟着方法走的,也就是调用一个方法,就会创建一个栈帧,方法执行结束了,栈帧也就销毁了;

虽说一个线程对应一个虚拟机栈,但实际上一个线程栈上的内容,比如局部变量,另外一个线程也是可以进行使用的;

堆:堆是 JVM 中空间最大的区域。new 出来的对象,都是存放在堆上的,类的成员变量,也是存放在堆上的。与虚拟机栈和程序计数器不同的是,堆是一个进程对应一个,即多个线程共用的;

元数据区(方法区)(永久代): 这一块空间主要存储常量池,静态成员变量和类对象,一个进程对应一个元数据区,是多个线程共用的;

对于 public final 修饰的话,就需要去分析是否被优化成字面值常量,如果是的话,那么就在元数据区的常量池里;如果没被优化,且没加 static 就是作为成员变量在堆上,加了 static的话就是作为静态变量,也是在元数据区里;

类对象:类对象其实可以理解为对应的 .class,里面主要存的就是这个类的名称,父类,方法和属性这些东西,一个类只有一个类对象,JVM在加载类的时候,就会创建一个这个类的class示例;  

类的初始化和实例化:此处与Spring的Bean对象是相反的,先进行初始化,在进行实例化;

1. 在使用一个对象时,JVM会先检查当前的类是否完成初始化(在元数据区中给静态数据分配内存,并给类的属性值赋予初始值),如果还没有,JVM就需要调用类的构造器来完成初始化;

2. 完成初始化之后,开始进行实例化,在堆中开辟内存空间来存储一些非静态数据;

所以说,根据上述 JVM 内存区域划分的讲解,我们可以得知:

  • 局部变量是存放在虚拟机栈上的;
  • 普通成员变量是存放在堆上的;
  • 静态成员变量是存放在元数据区上的;

相关文章:

JVM的内存区域划分

JVM即Java虚拟机,是Java实现跨平台交互能力的核心,Java编译后的.class文件,就是通过虚拟机和操作系统进行交互的; 常见的虚拟机有:JVM、VMwave、Virtual Box,目前最主流使用的JVM是HotSpot VM;…...

YOLOv9有效改进|使用动态蛇形卷积Dynamic Snake Convolution

专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,主力高效涨点!!! 一、改进点介绍 使用ICCV2023中的动态蛇形卷积替换YOLOv9网络中的Conv模块。 二、Dynamic Snake Convolution模块详解 2.1 模块简介 应用场景&#x…...

设计模式学习笔记 - 设计原则 - 1.单一职责原则

前言 前面我们提到过 SOLID 原则,实际上 SOLID 由 5 个设计原则组成,分别是:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖反转原则。它们分别对应 SLOID 中的 S、O、L、I、D 这 5 个英文字母。 今天来学习下 SOLID 原则中的第…...

飞天使-学以致用-devops知识点4-SpringBoot项目CICD实现(实验失败,了解大概流程)

文章目录 代码准备创建jenkins 任务测试推送使用项目里面的jenkinsfile 进行升级操作 文字版本流程项目构建 代码准备 推送代码到gitlab 代码去叩叮狼教育找 k8s 创建jenkins 任务 创建一个k8s-cicd-demo 流水线任务 将jenkins 里面构建时候的地址还有token, 给到…...

使用HTML5画布(Canvas)模拟图层(Layers)效果

使用HTML5画布(Canvas)模拟图层(Layers)效果 在图形处理和计算机图形学中,图层(Layers)是指将图像分成不同的可独立编辑、组合和控制的部分的技术或概念。每个图层都可以包含不同的图形元素、效…...

违背祖训,微软骚操作强制用户更新至 Win 11 23H2

话说,大伙儿有让 Windows 操作系统一直保持最新版习惯吗? 根据以往惯例,Windows 系统更新是个比较玄学的存在,谁也不能保证随手更新后会不会出现什么奇葩 Bug。 因此对于不少同学来说,Windows 更新到一个稳定版本后&a…...

MISRA C++ 2023指南:您需要了解的一切

MISRA C 2023可以帮助使用现代C语言的组织开发安全关键型软件。使用新的MISRA标准,开发人员可以通过确保和记录其软件应用程序的MISRA合规性,满足IEC 6108或ISO 26262等功能安全标准给出的静态分析要求。 什么是MISRA C2023? 以便使用C17进行安全可靠…...

Vue:【亲测可用】父组件数组包对象,传给子组件对象,子组件修改属性(字段)后,父组件没有更新

场景&#xff1a;vue中父组件数组包对象&#xff0c;传给子组件对象&#xff0c;子组件修改属性&#xff08;字段&#xff09;后&#xff0c;父组件没有更新 代码&#xff1a; # 父组件 <div v-for"(object, name, index) in arr" :key"index"><…...

hbase学习十:客户端实现与Meta表解析

1、客户端实现 hbase社区的客户端一般是java客户端。 HBase也支持Shell交互式客户端。Shell客户端实质是用JRuby(用Java编写的Ruby解释器,方便Ruby脚本跑在JVM虚拟机上)脚本调用官方HBase客户端来实现的。因此,各种客户端的核心实现都在社区Java版本客户端上。 客户端访…...

《OpenScene: 3D Scene Understanding with Open Vocabularies》阅读笔记1

传统的3D场景理解方法依赖于带标签的3D数据集,用于训练一个模型以进行单一任务的监督学习。我们提出了OpenScene,一种替代方法,其中模型在CLIP特征空间中预测与文本和图像像素共同嵌入的3D场景点的密集特征。这种零样本方法实现了与任务无关的训练和开放词汇查询。例如,为了…...

数据结构 - Trie树(字符串统计、最大异或对)

文章目录 前言Part 1&#xff1a;Trie字符串统计1.题目描述输入格式输出格式数据范围输入样例输出样例 2.算法 Part 2&#xff1a;最大异或对1.题目描述输入格式输出格式数据范围输入样例输出样例 2.算法 前言 本篇博客将介绍Trie树的常见应用&#xff0c;包括&#xff1a;Trie…...

2. vue 工程创建

1. 基于 vite创建 官方文档: https://v3.cn.vuejs.org/guide/installation.html#vite vite官网: https://vitejs.cn 使用vite创建的优势&#xff1a; 开发环境中&#xff0c;无需打包操作&#xff0c;可快速的冷启动。轻量快速的热重载(HMR)。真正的按需编译&#xff0c;不再…...

2024绿色能源、城市规划与环境国际会议(ICGESCE 2024)

2024绿色能源、城市规划与环境国际会议(ICGESCE 2024) 一、【会议简介】 随着全球气候变化和环境问题日益严重&#xff0c;绿色能源和可持续发展已成为全球关注的焦点。本次会议旨在汇聚全球在绿色能源、城市规划与环境领域的专家、学者和实践者&#xff0c;共同探讨和分享关于…...

0门槛电子画册制作

​电子画册制作&#xff0c;门槛低至零&#xff0c;也可以制作出如此精美的电子画册吗&#xff1f;别担心&#xff0c;这个问题早已解决&#xff0c;今天就教你如何0门槛制作电子画册。 选择合适的企业宣传册制作软件&#xff0c;如FLBOOK在线制作电子杂志平台等。这个工具提供…...

C语言----冒泡排序进阶

冒泡排序大家应该到写过吧。但大家可能知道到的冒泡排序有两种方法。而我呢&#xff0c;最近学习到了另外一种方法&#xff0c;现在知道三种方法了。所以想与大家分享一下。但是缺点是第三种是第二种的自实现版。第一种就是我们平常写的普通冒泡排序。第二种就是qsort。第三种就…...

【机器学习】实验5,AAAI 会议论文聚类分析

本次实验以AAAI 2014会议论文数据为基础&#xff0c;要求实现或调用无监督聚类算法&#xff0c;了解聚类方法。 任务介绍 每年国际上召开的大大小小学术会议不计其数&#xff0c;发表了非常多的论文。在计算机领域的一些大型学术会议上&#xff0c;一次就可以发表涉及各个方向…...

安卓虚拟机ART和Dalvik

目录 一、JVM和Dalvik1.1 基于栈的虚拟机字节码指令执行过程 1.2 基于寄存器的虚拟机 二、ART与Dalvikdex2aotAndroid N的运作方式 三、总结 一、JVM和Dalvik Android应用程序运行在Dalvik/ART虚拟机&#xff0c;并且每一个应用程序对应有一个单独的Dalvik虚拟机实例。 Dalvik…...

OPENWRT本地局域网模拟域名多IP

本地配置MINIO服务时&#xff0c;会遇到域名多IP的需求。当某一个节点失效时&#xff0c;可以通过域名访问平滑过渡到其它的节点继续服务。 【MINIO搭建过程略】 搭建完毕后&#xff0c;有4个节点&#xff0c;对应的docker搭建命令&#xff1a; docker run --nethost --rest…...

今日学习总结2024.3.2

最近的学习状态比较好&#xff0c;感觉非常享受知识进入脑子的过程&#xff0c;有点上头。 实验室一个星期唯一一天的假期周六&#xff0c;也就是今天&#xff0c;也完全不想放假出去玩啊&#xff0c;在实验室泡了一天。 很后悔之前胆小&#xff0c;没有提前投简历找实习&…...

Java虚拟机(JVM)从入门到实战【上】

Java虚拟机&#xff08;JVM&#xff09;从入门到实战【上】&#xff0c;涵盖类加载&#xff0c;双亲委派机制&#xff0c;垃圾回收器及算法等知识点&#xff0c;全系列6万字。 一、基础篇 P1 Java虚拟机导学课程 P2 初识JVM 什么是JVM Java Virtual Machine 是Java虚拟机。…...

AI给组内同事的脚本能力价值打了1折!

以前一个做了七八年前端设计的工程师&#xff0c;遇到一个简单的VCD波形解析需求&#xff0c;第一反应可能是是找工具组的人或者脚本能力强的人帮忙。这个场景挺普遍的&#xff0c;只是大家都不太好意思说出来。现在有个概念叫 Vibe Coding&#xff0c;核心是借助AI工具&#x…...

传奇 3 光通版手游官网下载:传奇 3 光通版最新官方下载渠道

《传奇 3 光通版》别称传奇 3 怀旧服、传奇 3 经典 1.45 版、传奇 3 单职业&#xff0c;由安徽游昕携手忆往游戏联合运营的正版传奇 MMORPG 手游。一比一复刻经典玛法大陆场景&#xff0c;比奇城、盟重要塞、祖玛神殿、神秘神舰悉数还原&#xff0c;保留战法道经典三职业构架&a…...

Unity版本选择避坑指南:LTS稳定幻觉与个人版合规雷区

1. 为什么Unity版本选择不是“装最新版就完事”&#xff1f;刚接触Unity的新手&#xff0c;十有八九会直接去官网下载那个醒目的“Download Latest Version”按钮——毕竟谁不想用上最酷的HDRP、最顺的DOTS、最全的AI工具链&#xff1f;我带过三届Unity训练营&#xff0c;每届都…...

反向散射通信:无电池物联网的低功耗革命

1. 反向散射通信技术演进概述十年前&#xff0c;当我第一次在实验室接触到RFID技术时&#xff0c;完全没想到这种简单的无线识别技术会演变成今天这样复杂的通信范式。反向散射通信&#xff08;Backscatter Communication&#xff09;已经从最初的射频识别工具&#xff0c;发展…...

告别卡顿:用微PE给旧电脑无损重装Win11,顺便教你用分区工具合理分配C盘空间

旧电脑焕新指南&#xff1a;用微PE无损重装Win11与智能分区实战 当你的旧电脑开始频繁卡顿、开机时间超过两分钟&#xff0c;甚至打开浏览器都要等待十几秒时&#xff0c;先别急着换新机。很多情况下&#xff0c;这只是系统长期使用积累的"垃圾"和不当分区导致的性能…...

GORM 标签详解(数据库字段映射核心)

很多人刚学 GORM&#xff1a; 会觉得&#xff1a; gorm:"primaryKey" gorm:"index" gorm:"not null"这些东西&#xff1a; 像“魔法字符串”。 其实&#xff1a; 它本质上是在告诉 GORM&#xff1a; 数据库这一列应该怎么创建也就是&#xff1a;…...

机器学习驱动热光伏电池设计:从材料筛选到器件优化

1. 项目概述&#xff1a;当机器学习遇见热光伏电池设计在能源技术领域&#xff0c;热光伏&#xff08;TPV&#xff09;技术一直是一个充满魅力但又颇具挑战的方向。简单来说&#xff0c;它就像一个“热能收割机”&#xff0c;能将高温热源&#xff08;比如工业废热、聚光太阳能…...

Kali365 设备代码钓鱼攻击机理、危害及防御体系研究

摘要 2026 年 5 月 FBI 发布预警&#xff0c;新型钓鱼即服务平台 Kali365 通过滥用 Microsoft 365 OAuth 2.0 设备代码授权流程&#xff0c;可在不窃取密码、不伪造登录页面的前提下绕过多因素认证&#xff0c;获取长期有效访问令牌&#xff0c;实现账户持久化控制。该平台依托…...

不变性假设下的PAC学习:从VC维到不变性VC维的样本效率提升

1. 项目概述&#xff1a;不变性假设下的PAC学习理论在机器学习领域&#xff0c;我们经常希望模型不仅能拟合训练数据&#xff0c;更能捕捉数据背后的本质规律&#xff0c;从而对未见过的数据做出可靠预测。PAC&#xff08;Probably Approximately Correct&#xff09;学习理论为…...

Real-ESRGAN-GUI完整教程:如何免费使用AI图像增强工具实现高清修复

Real-ESRGAN-GUI完整教程&#xff1a;如何免费使用AI图像增强工具实现高清修复 【免费下载链接】Real-ESRGAN-GUI Lovely Real-ESRGAN / Real-CUGAN GUI Wrapper 项目地址: https://gitcode.com/gh_mirrors/re/Real-ESRGAN-GUI 你是否曾为模糊的老照片、低分辨率的网络图…...