资讯专栏INFORMATION COLUMN

栈与堆的理解

appetizerio / 2791人阅读

摘要:对于栈和堆的理解栈栈是有结构的,存储的时候按顺序存储,先存进去的在栈的最下面,遵循先进后出的原则,栈中存放的是基本数据类型变量的值,以及引用数据类型中指向堆的引用地址,占据的空间大小一般是确定的。

对于栈和堆的理解

栈(stack)

栈是有结构的,存储的时候按顺序存储,先存进去的在栈的最下面,遵循’先进后出‘的原则,栈中存放的是基本数据类型变量的值,以及引用数据类型中指向堆的引用(地址),占据的空间大小一般是确定的。可以简单理解为手机的运行内存,栈的存取速度比堆要快

堆(heap)

堆中数据的存放是没有结构的,存放的是引用数据类型,堆中存放的数据可以被反复利用,堆的存取速度比较慢,堆内存中存储的数据不会随着方法的结束而销毁,即方法结束后存储的数据还能被另一个引用变量所引用。

注意:所有方法中定义的内存都存储在栈中,随着方法的执行结束,与其对应的内存栈也会自动释放

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/116287.html

相关文章

  • js堆,栈与队列

    摘要:内存空间又被分为两种,栈内存与堆内存。今天就堆栈队列的内容就大概说到这里下一篇博客在继续说一下,有什么说的不对或者不足的地方,请大家批评指正 栈的定义 栈是计算机科学中的一种抽象数据类型,只允许在有序的线性数据集合的一端(称为堆栈顶端,英语:top)进行加入数据(英语:push)和移除数据(英语:pop)的运算。因而按照后进先出(LIFO, Last In First Out)的原理运...

    Kosmos 评论0 收藏0
  • JVM系列(一):深入详解JVM 内存区域总结!

    摘要:一内存区域虚拟机在运行时,会把内存空间分为若干个区域,根据虚拟机规范版的规定,虚拟机所管理的内存区域分为如下部分方法区堆内存虚拟机栈本地方法栈程序计数器。前言 在JVM的管控下,Java程序员不再需要管理内存的分配与释放,这和在C和C++的世界是完全不一样的。所以,在JVM的帮助下,Java程序员很少会关注内存泄露和内存溢出的问题。但是,一旦JVM发生这些情况的时候,如果你不清楚JVM内存的...

    Aldous 评论0 收藏0
  • Android内存泄漏总结

    摘要:内存泄漏总结内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。在中,内存泄漏的范围更大一些。 Android 内存泄漏总结 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏大家都不陌生了,简单粗俗的讲,就是该被释放的对象没有释放,一直被某个或某些实例所持有却不再被使用导致 GC 不能回收。最近自己阅读了大量相关的文档资料,打...

    legendaryedu 评论0 收藏0
  • 【JVM从小白学成大佬】2.Java虚拟机运行时数据区

    摘要:虚拟机在执行程序的过程中会把它所管理的内存划分为若干个不同的数据区域。栈帧栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素。栈帧的概念结构如下运行时数据区脑图高 这里我们先说句题外话,相信大家在面试中经常被问到介绍Java内存模型,我在面试别人时也会经常问这个问题。但是,往往都会令我比较尴尬,我还话音未落,面试者就会背诵一段(Java虚拟...

    shuibo 评论0 收藏0

发表评论

0条评论

appetizerio

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<