社区
Java
帖子详情
堆和栈的区别
不想读书的c某人
2019-04-11 08:45:24
JVM内存的划分有五块 1.寄存器 2.本地方法区 3.方法区 4.栈内存 5.堆内存 栈:基本数据变量和局部变量都是存放在栈中的,以及main方法等方法也是存放在栈中的,用完即消失。 堆:用于存放new出来的对象以及数组。 对于栈来说很好理解,用完即释放。 但对于堆来说,以数组来举例 int【】x=new int【3】,x【0】=20,x=null 1.首先在栈中开辟一个空间用于存放x变量。 2.在堆中开辟一个空间用于存放new int【3】。 3.将new int【3】的首地址赋值给栈中的x,这样x即指向了堆内存中的数组。此时默认x【0】,x【1】,x【2】都为0. 4.在堆内存中将x【0】赋值为20 5.接下来执行x=null,null表示空值,即x的引用地址被回收,当堆中的数组无用时,jum会启动垃圾回收机制,不定时自动删除。 注意:假设Car是一个类,new了一个car1 ,再Car car2=car1;此时car1和car2的两个内存地址一样,所以当car1的属性值改变时,car2也会改变。 栈的特点 1.数据执行完毕,会被立即释放。 2.没有默认的初始化值,需要手动设置。 堆的特点 1.所有的实体类都有内存地址值。 2.堆用来封装数据,所有的都有默认的初始化的值。 3.当实体类不再被指向时,会被JVM回收机制清除。
理解有误请改成
...全文
36
回复
打赏
收藏
堆和栈的区别
JVM内存的划分有五块 1.寄存器 2.本地方法区 3.方法区 4.栈内存 5.堆内存 栈:基本数据变量和局部变量都是存放在栈中的,以及main方法等方法也是存放在栈中的,用完即消失。 堆:用于存放new出来的对象以及数组。 对于栈来说很好理解,用完即释放。 但对于堆来说,以数组来举例 int【】x=new int【3】,x【0】=20,x=null 1.首先在栈中开辟一个空间用于存放x变量。 2.在堆中开辟一个空间用于存放new int【3】。 3.将new int【3】的首地址赋值给栈中的x
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
C++第3课:C++内存泄露检测原理及案例实战
本课程具体的内容主要包括C++内存泄露案例、VS2015内存泄露检测、野指针、VirtualAlloc/HeapAlloc/malloc/new的
区别
、C++
堆
和
栈
的内存管理、
栈
简介、
堆
简介、
堆
与
栈
区别
、
栈
的内存分配、Windows的虚拟内存技术、...
一文读懂
堆
与
栈
的
区别
堆
(Heap)与
栈
(Stack)是开发人员必须面对的两个概念,在理解这两个概念时,需要放到具体的场景下,因为不同场景下,
堆
与
栈
代表不同的含义。一般情况下,有两层含义: (1)程序内存布局场景下,
堆
与
栈
表示的是...
JVM内存结构之
堆
、
栈
、方法区以及直接内存、
堆
和
栈
区别
JVM内存结构之
堆
、
栈
、方法区以及直接内存、
堆
和
栈
区别
一、 理解JVM中
堆
与
栈
以及方法区
堆
(heap):FIFO(队列优先,先进先出);二级缓存;*JVM中只有一个
堆
区被所有线程所共享;对象和数组储存在里面;调用对象...
堆
和
栈
的
区别
(转过无数次的文章)
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、
栈
区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的
栈
。 2、
堆
区...
Java
50,527
社区成员
85,606
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章