计算机使用内存来容纳要执行的程序以及这些程序使用的数据。
操作系统和“运行时”通常将用于容纳数据的内存划分为两个独立的区域,每个区域都一不同的方式管理,这两个区域通常称为栈和堆。栈和堆的设计目标完全不同。
调用方法时,它的参数和局部变量所需的内存总是从栈中获取。方法结束后,要不正常返回,要不就抛出异常,所以为参数和局部变量分配的内存将自动归还给栈,并可在另一个方法调用时重新使用。栈上的方法参数和局部变量都具有良好的定义的生存期,方法开始时进入生存期,方法结束时结束生存期。
使用new关键字创建对象时,构造对象所需要的内存总是从堆中获取,使用引用变量,可以从多个地方引用同一个对象。使用new关键字将创建对象,但只有在删除了最后一个对象应用之后的某个不确定时刻,它才会消失。
栈(stack)内存就像一系列堆得越来越高的箱子,调用方法时,它的每个参数都是被放入一个箱子,并将这个箱子放到栈的顶部。每个局部变量也同样分配到一个箱子,并同样放到栈顶。
堆(heap)内存则像散布在房间里的一大堆箱子。
|