操作系统和“运行时”通常将用于容纳数据的内存划分为两个独立的区域,每个区域都采取不同的方式进行管理。通常称为“栈”和“堆” 栈跟堆的设计跟目标是完全不同的。
--调用一个方法时,它的参数以及它的局部变量需要的内存总是从栈中获取。方法结束后(要么正常返回,要么抛出异常),为参数和局部变量分配的内存将自动归还给栈,并可以再另外一个方法调用时重新使用。
--使用new关键字来创建一个对象(类的一个实例)时,构造对象所需要的内存总是从堆中获取的,使用引用变量可以从多个地方引用同一个对象。对象的最后一个引用消失后,对象占用的内存就可以提供重用(虽然不一定立即回收)。
栈内存就像一系列堆的越来越高的箱子。堆内存则像散布在房间里的一大堆箱子。
|