堆与栈

研究问题

  1. 为什么堆上地址是自下而上递增,而栈上地址是自上而下递增?
  2. 堆与栈的区别

要点
  • 栈是调用子程序安排函数参数和子程序临时变量用的,堆是子程序申请的内存。栈和堆的大小是动态的,在程序还没有运行的时候不知道大小。程序运行起来以后也是不确定的。栈和子程序的调用嵌套层次有关,堆和子程序的申请内存有关。所以一个从顶向下,一个从底向上。如果运行到两个重叠,表示内存不够。这样安排比较合理。
    这里写图片描述
  • 堆和栈有什么区别:
    1. 栈具有数据结构中栈的特点,后进先出,所有存放在它里面的数据都是生命周期很明确(当然要求它不能存放太久,占有的空间确定而且占用空间小),能够快速反应的!所有在Java中它存放的是8个基本数据类型和引用变量的,用完就马上销毁。
    2. 堆可以理解它就是个一个可大可小,任你分配的听话的内存操作单元;因此它的特点就是动态的分配内存,适合存放大的数据量!比如一个对象的所有信息,虽然它的引用指向栈中的某个引用变量;所有Java中堆是存放new出来的对象的。堆和栈因为不同的特性,所有在计算机中应用甚广!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值