1、解释 栈(Stack)是编译期间就分配好的内存空间 堆(Heap)是程序运行期间动态分配的内存空间 2、区别 栈一般保存着咱们代码执行的步骤:如AddFive()方法,int pValue变量 堆上存放的则可能是对象,数据等。 栈不用本身管理,也不归GC管理,当顶元素使用完毕后,自动释放 堆受GC管理,被GC清理 值类型的数据存储在内存的栈中;引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的 内存的分配和销毁 当一个类的实例对象建立的时候,这个对象的不一样成员按类别被分配到了不一样的内存区域,值类型和引用类型的指针被分配到了栈上,引用类型的实例对象被分配到了托管堆上,静态成员被分配到了全局数据区。此时栈上的指针会指向堆上的对象。当对象使用完之后,引用和实际对象的联系就会断开,从而从而使对象冬眠。由于栈具备自我维护性,它的内存管理能够经过操做系统来完成,而此时堆上的冬眠对象就须要经过垃圾回收器(GC)使用必定的算法来进行回收,释放对象所占据的内存。