栈STACK 是严格按照先进后出原则分配,
而堆HEAP可以按照任意顺序分配和释放。

解决方案 »

  1.   

    是内存中两块不同的区域
    stack 主要用来执行程序
    heep  主要用来存放对象
      

  2.   

    堆栈驻留于常规RAM区域,但可通过它的“堆栈指针”获得处理的直接支持。和堆栈不同,“内存堆”或“堆”(Heap)最吸引人的地方在于编译器不必知道要从堆里分配多少存储空间,也不必知道存储的数据要在堆里停留多长的时间。因此,用堆保存数据时会得到更大的灵活性。要求创建一个对象时,只需用new命令编制相关的代码即可。执行这些代码时,会在堆里自动进行数据的保存。当然,为达到这种灵活性,必然会付出一定的代价:在堆里分配存储空间时会花掉更长的时间!java中,一般的,句柄存放在堆栈中,对象存放在堆中。
      

  3.   

    是内存中两块不同的区域
    stack 主要用来执行程序
    heep  主要用来存放对象
      

  4.   

    楼上的各位都说的很清楚了!在stack里面分配空间必须知道要分配多少空间,要知道它的scope,这就像C语言中的ziseof来确定大小分配。而在heap中分配空间,complier并不需要了解要分配多少空间,比如用new,当你的程序执行的时候,这个空间就会自动的在heap中分配,虽然更有flexibility,但是更耗时!
      

  5.   

    栈STACK 是严格按照先进后出原则分配,
    而堆HEAP可以按照任意顺序分配和释放。