Java中对象存储的5个地方及其特点
在Java程序运行时, 有5个不同的地方可以存储数据:
1.寄存器
这是最快的存储区, 因为他位于处理器内部.
特点: 它数量有限,你不能直接控制, 在程序中感觉不到寄存器的存在.
2.堆栈
位于RAM中, 这里的速度仅次于寄存器, 一般用来存放对象引用.
特点: 当程序创建时, 系统必须知道堆栈中每一项确切的生命周期, 以便上下移动堆栈指针.
3.堆
也是位于RAM中, 速度又慢于堆栈, 一般用来存放对象.
特点: 与堆栈相比, 编译器不需要知道其中每一项的生命周期, 这样一来, 在堆中分配的程序就有很大的灵活性. 当然也要为这种灵活性付出代价: 在堆内存中分配和清理存储空间比在堆栈中需要花费更多的时间.
4.常量存储
常量直接存储在代码内部, 因为他们永远不会被改变.
5.非RAM存储
如果数据需要存储在程序之外,例如 流 和 持久化对象, 流可以存储到另外一台机器, 而持久化对象则可以存储到本地磁盘.