存储数据的五个地方:
一、寄存器
最快的存储区,位于处理器内部,数量极其有限,所以按需进行分配。
二、堆栈(栈)
速度仅次于寄存器,位于RAM(随机访问存储器)。通过堆栈指针从处理器中获得直接支持。堆栈指针向下移动,分配新的内存;向上移动,释放那些内存。JAVA系统必须知道存储在堆栈内所有项的确切生命周期,以便上下移动堆栈指针。
对象引用(以及某些数据类型)存储在堆栈中。
Java对象不存储在堆栈中。
三、堆
一种通用的内存池(也位于RAM),用于存放所有JAVA对象。堆不同于堆栈:
优势:编译器不需要知道存储的数据在堆里存活多久,分配存储有较大灵活性。
劣势:存储分配和清理的时间要比在堆栈中长。
四、常量存储
直接存放在程序代码内部。
五、非RAM存储
存活于程序之外,基本例子:流对象和持久化对象。即把对象转化成可以存放在其他媒介(磁盘等)上的事物。
————摘于《JAVA编程思想》