2014-08-15 09:55:01 发布:zhushican
寄存器是反应最快的存储,因为它所处位置不同,在处理器里。不过寄存器的数量非常有限,所以它是由编译器分配的。你非但不能直接控制寄存器,甚至连它存在的证据也找不到。栈位于常规内存区里,处理器可以通过栈指针对它进行直接访问。栈指针向下移就创建了新的存储空间,向上移就释放内存空间。这是仅次于寄存器的最快、最有效率的分配内存的方法。由于Java编译器必须生成能控制栈指针上移和下移的代码,所以程序编译的时候,那些将被存储在栈中的数据的大小和生命周期必须是已知的。这使得程序的灵活性收到了限制,所以尽管Java把某些数据——特别是对象的reference存放在栈里,但对象本身并没有放在栈里。