堆与栈

来源:互联网 发布:财务报表数据分析方法 编辑:程序博客网 时间:2024/06/04 18:27

研究问题

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

要点

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