程序运行时,内存中有六个地方可以保存数据 1、寄存器。这是最快的保存区域,寄存器位于处理器内部。然而寄存器的数量很有限,所以寄存器是根据需要由编译器的分配的。我们对此没有直接的控制权限。也不可能在我们的程序里找到寄存器存在的任何痕迹。 2、堆栈。位于常规RAM(随机访问寄存器)区域,但是可以通过他的“堆栈指针”获得处理的直接支持。“堆栈指针”下移会创建新的内存,若上移会释放内存。这也是一种特别快的,特别有效的数据保存方式。仅次于寄存器。创建程序时,java编译器必须准确的知道堆栈内保存的数据的“长度”和“存在时间”,这是由于它必须生成相应的代码,以便向上向下移动指针。这一限制严重影响了程序的灵活性。基本数据类型(int,float。。。)保存在堆栈中。 3、堆。一种常规的内存池(也在RAM区域中),其中保存了jAVA对象,和堆栈不同的是编译器不需要知道要从堆中分配多少内存空间也不需要知道存储的数据要在堆里存在多长时间。这个优点是增加了灵活性但是在分配存储空间的时候会花掉较长的时间。 4、静态存储。这儿的静态(static)是指“位置固定”的(尽管也在RAM中)。程序运行时,静态存储的数据将随时等候调用。可以用static指出一个对象的特定元素是静态的。但是JAVA对象本身永远不会置入静态存储空间。 5、常数存储。常数值通产位于程序代码内部。这样做事安全的因为它永远不会改变。有的常熟需要严格的保护,所以考虑放到只读存储器中(ROM)。 6、非RAM存储。若数据完全独立于程序之外,则程序不运行时仍可以存在。如保存在数据库中,或文件中的数据。