程序，或者说运行时环境，必须为每个数据对象设置内存。由于内存是有限的，为了安置每一个数据对象，当数据对象不再表示某个变量的值时，相应的内存会被回收并重新使用。在堆中分配的对象必须被释放掉，特别是当对象不再被需要时。在具有垃圾回收机制的语言（如C#、Java和Lisp）中，当变量出了其作用域再也不能被引用时运行环境会自动地回收对象。在不具有垃圾回收机制的语言当中，如C语言，程序（程序员）必须显式地分配内存，而且用完之后还要释放内存。如果没有这样做会造成内存泄漏，在这种情况下，程序运行过程中堆会逐渐消耗，最