黑豹程序员 堆和栈

简单变量及作用域

main()
  int x=1;
show ()
  int x=2

执行步骤:

第1步:main()函数是程序入口,JVM先执行,在栈内存中开辟一个空间,存放int类型变量x,同时附值1。

第2步:JVM执行show()函数,在栈内存中又开辟一个新的空间,存放int类型变量x,同时附值2。
此时main空间和show空间并存,同时运行,互不影响。

第3步:show()执行完毕,变量x立即释放,空间消失。但是main()函数空间仍存在,main中的变量x仍然存在,不受影响。

在这里插入图片描述

创建数组、赋值、置空

main()
  int[] x=new int[3];
  x[0]=20;
  x = null;

执行步骤:

第1步:执行int[] x = new int[3];
执行main()函数,在栈内存中开辟一个空间,存放x变量(x变量是局部变量)。
同时,在堆内存中也开辟一个空间,存放new int[3]数组,堆内存会自动分配内存首地址值,如0x0045。
数组在栈内存中的地址值,会赋给x,这样x也有地址值。所以,x就指向(引用)了这个数组。此时,所有元素均未赋值,但都有默认初始化值0。

第2步:执行x[0]=20
即在堆内存中将20赋给[0]这个数组元素,这样,数组的三个元素值分别为20,0,0。

第3步–执行x=null
null表示空值,即x的引用数据内存地址0x0045被删除了,则不再指向堆内存中的数组。此时,堆中的数据不再被x使用了,即被视为垃圾,JVM会启动垃圾回收机制,不定时自动删除。

在这里插入图片描述

数组复制、元素赋值

main()
  int[] x=new int[3];
  int[] y=x;
  y[1]=100
  x=null;

执行步骤:

第1步:与上例第1步一致,略。

第2步:执行int[] y=x
在栈内存定义了新的数组变量内存y,同时将x的值0x0045赋给了y。所以,y也指向了堆内存中的同一个数组。

第3步–执行y[1]=100
即在堆内存中将100赋给[1]这个数组元素。这样,数组的三个元素值分别为0,100,0

第4步–执行x=null
则变量x不再指向栈内存中的数组了。但是,变量y仍然执行,所以数组不消失。
在这里插入图片描述

创建对象、赋值

Car c=new Car;
c.color=“blue”;
Car c1=new Car;
c1.num=5;

虽然是个对象引用new Car,但是是两个不同的对象。每一次new,都产生不同的实体。
在这里插入图片描述

对象复制

在这里插入图片描述

栈和堆的特点

栈:

函数中定义的基本类型变量、对象的引用变量都在函数的栈内存中分配
栈内存特点,数据一执行完毕,变量会立即释放,节省内存空间。
栈内存中的数据,没有默认初始化值,需要手动设置。

堆:

堆内存用来存放new创建的对象和数组
堆内存所有的实体都有内存地址值
堆内存中的实体是用来封装数据的,这些数据都有默认初始化值。
堆内存中的实体不再被指向时,JVM启动垃圾回收机制,自动清除。

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

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

相关文章

c++/c中野指针和悬空指针的示例

目录 一、野指针的概念 二、野指针示例 三、悬空指针的概念 四、悬空指针示例 1.指针释放后未置空 2.返回栈内存地址的指针 一、野指针的概念 野指针是指尚未初始化的指针,它指向的地址是未知的、不确定的、随机的。这种指针在使用时可能导致程序崩溃、数据损…

Kafka性能优化策略综述:提升吞吐量与可靠性

Kafka性能优化策略综述:提升吞吐量与可靠性 优化 Kafka 的性能可以从多个方面入手,包括配置调优、架构设计和硬件资源优化。下面详细介绍一些常用的优化策略: 1. 分区设计 增加分区数量:更多的分区意味着更高的并行处理能力&am…

ZDH-智能营销-标签模块

目录 主题 项目源码 预览地址 安装包下载地址 标签模块 什么是标签 标签场景分类 标签设计 标签按照场景做了分类,但是运营人员需要感知到吗 标签按照场景做了分类,底层的计算引擎是否需要划分? 标签模块,是否需要涉及…

openresty安装并使用lua进行业务逻辑处理

OpenResty 基础教程及Lua动态脚本实现 OpenResty 简介 OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,它将 Nginx 的 C 模块和 Lua 脚本相结合,提供了一个强大的 Web 应用服务器和反向代理服务器。OpenResty 特别适合处理高并发的 Web 应用&am…

爽快,通透,自洽

那些消耗你的人和事,多看一眼都是你的不对。不必过度为他人提供情绪价值,可以理解别人的处境,但边界感很重要。让别人开心不是你的责任。控制情绪不是让我们在生活中隐藏情绪,而是允许自己有情绪,并做自己情绪的主人。…

最新thinkphp5内核全开源女神赢口红H5公众号版第五版(100%可经营)

最新thinkphp5内核全开源女神赢口红H5公众号版第五版(100%可经营) 搭建教程 1、程序为thinkPHP5开发 php版本要求5.6!不支持虚拟主机! 2、上传程序到您的根目录!导入m213.sql文件!修改数据库配置文件app…

WordPress模板推荐

WordPress外贸主题 wordpress跨境电商独立站主题,wordpress外贸建站模板。 手机配件wordpress外贸网站模板 充电器、移动电源、手机膜、手机电池、手机壳、手机转接头等手机配件wordpress外贸网站模板。 毛巾WordPress外贸主题 毛巾、面巾、婴童毛巾、浴巾、方巾、…

【深度学习】【NLP】Bert理论,代码

论文 : https://arxiv.org/abs/1810.04805 文章目录 一、Bert理论BERT 模型公式1. 输入表示 (Input Representation)2. 自注意力机制 (Self-Attention Mechanism)3. Transformer 层 (Transformer Layer) 二、便于理解Bert的代码1. 自注意力机制2. Transformer 层3. …

2024 AEE | 风丘科技将亮相日本爱知国际会展中心——共同创造!

2024年名古屋汽车工程博览会(Automotive Engineering Exposition 2024 NAGOYA)将于7月17-19日在日本爱知县国际展示场(Aichi Sky Expo)开展。本展会是专门为活跃在汽车行业的工程师和研究人员举办的汽车技术展览,汇聚了…

Python办公MySQL(一):安装MySQL以及Navicat可视化工具(附送Navicat到期解决方法)

目录 专栏导读1、下载 MySQL Community Server2、安装3、安装Navicat4、连接刚刚安装的MySQL5、创建一个数据库方法1方法2 6、创建一张表方法1:准备一个test文件方法2: Navicat到期解决总结 专栏导读 🌸 欢迎来到Python办公自动化专栏—Pytho…

干货 | 2024元宇宙技术融合与新质生产力的创新实践(免费下载)

【1】关注本公众号,转发当前文章到微信朋友圈 【2】私信发送 【3】获取本方案PDF下载链接,直接下载即可。 如需下载本方案PPT/WORD原格式,请加入微信扫描以下方案驿站知识星球,获取上万份PPT/WORD解决方案!&#xff…

Craig Federighi 和 John Giannandrea 在 WWDC 上谈论苹果智能技术

WWDC 主题演讲结束后,苹果公司的克雷格-费德里吉(Craig Federighi)和约翰-吉安南德雷亚(John Giannandrea)坐下来,更深入地讨论了苹果智能公司在人工智能方面所做的努力,包括该公司是如何训练模…

三高系统的架构设计方案:高并发、高可用、高性能

文章目录 一、互联网系统三高概述1、互联网的三高2、高并发3、高可用4、高性能 二、高并发、高性能技术解决方案1、多高的并发才算高并发?2、水平扩展3、负载均衡思想4、缓存思想5、池化复用思想6、异步思想7、预处理-惰性更新思想8、分而治之思想 三、高可用技术解…

【OS】AUTOSAR OS调度器实现原理

目录 前言 正文 1.Scheduler逻辑原理概览 2.Scheduler配置 3.Scheduler具体实现原理 4.Scheduler初始化 5. Scheduler任务的插入 6.Scheduler任务的弹出 7.总结 前言 在<<【OS】AUTOSAR Os是如何启动第一个Task的>>一文中我们介绍了AUTOSAR Os是如何启动…

BCZYYb(钡铈锆钇镱)主要用作电解质 我国技术研究与生产步伐正在加快

BCZYYb&#xff08;钡铈锆钇镱&#xff09;主要用作电解质 我国技术研究与生产步伐正在加快 BCZYYb&#xff0c;钡铈锆钇镱氧化物&#xff0c;钙钛矿结构&#xff0c;外观为白色至浅黄色粉末状&#xff0c;主要用作电解质&#xff0c;功能是传输离子&#xff0c;具有化学稳定性…

硬核新品!M4E EDU民航考培一体无人机

天途上新啦&#xff01; 应我国民用无人机首项强制性国家标准《民用无人驾驶航空器系统安全要求》&#xff0c;天途对现有小型无人机训练机的飞控、电池、感知避障和电子围栏等软硬件全面升级设计&#xff0c;严格按国标GB42590-2023规范生产。 M4E EDU四轴多旋翼无人机是天途…

LabVIEW处理大量数据时,怎样确保数据的准确性和完整性?

在LabVIEW处理中&#xff0c;确保大量数据的准确性和完整性至关重要。以下是详细的多角度分析和建议&#xff0c;以确保在LabVIEW中处理大量数据时&#xff0c;数据的准确性和完整性&#xff1a; 1. 数据采集阶段 1.1 高精度硬件选择 选择高精度的数据采集硬件&#xff0c;如…

[数据集][目标检测]变电站火灾检测电力场景烟雾明火检测数据集VOC+YOLO格式140张2类别真实场景非PS合成

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;140 标注数量(xml文件个数)&#xff1a;140 标注数量(txt文件个数)&#xff1a;140 标注类别…

Hive的存储格式和压缩算法的特点和选择

1、数据存储格式&#xff1a; ①TEXTFILE HIVE 中默认的存储格式&#xff1b; 一般使用在数据贴源层(ODS 或 STG) &#xff0c;针对需要使用脚本 LOAD 加载数据到 HIVE 数仓表中的情况&#xff1b;需要把表里数据导出或直接可以查看等场景&#xff0c;作为BI供数 易读性…

服务部署:使用docker部署开源Xxl-Job任务调度平台项目

一、项目构建 1、从gitee上下载源码&#xff1a;xxl-job: 一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。https://gitee.com/xuxueli0323/xxl-job 2、本地使用…