数据存在哪里Java

来源:互联网 发布:冯德伦 知乎 编辑:程序博客网 时间:2024/04/29 20:00

计算机中可以存放数据的地方有:内存,硬盘,寄存器。

 

Registers:速度最快的存储场所。因为寄存器位于处理器内部,这一点和其他类的存储媒介都不一样。由于寄存器数量有限,所以编译器会根据本身需求适当的分配寄存器来使用。

 

内存上的数据区域:

Stack:堆栈位于一般的RAM中。处理器器经由其指针(stack pointer)提供直接支持。当程序分配一块新的内存时,statck指针便往后移;释放内存时,指针则往前移回。这种方式不仅很快,效率也高,速度仅次于寄存器。对象的引用存放在stack内,但不能将一般的Java对象也置于其上。

 

Heap:heap是一种通用性质的内存存储空间,用来放置所有的Java对象。Heap胜于Stack之处在于,编译器不需要知道究竟得从heap中分配多少空间,不不要知道从heap上分配的空间究竟需要存在多久。因此,从heap分配存储空间可以获得高度的弹性。从heap分配空间,比从stack分配所耗得时间多了不少。

 

static storage:静态存储空间。静态,指的是在固定位置上。静态存储空间存放着“程序执行期间”一直存在的数据。

 

Constant storage:常量会被置于程序代码里头。因为常量是不会改变的,所以也是安全的。有时常量会和外界隔离开来,所以也可以放到只读内存中。

 

硬盘:

如果数据完全存活于程序之外,那么即使程序不执行,数据也能够继续存在,脱离程序的控制。streamed objects(串流化对象)和persistent objects(持久性对象)便是主要的两个例子。在streamed objects形式中,对象被转换为一连串的bytes。这些bytes通常用来传送到另一部机器。在persistent objects的形式中,对象被存储于磁盘,所以即使程序结束了,这些对象的状态还能够继续保有。此类存储空间的特点在于,他们能够将对象转换为可存储于其他媒介的形式,并在必要的时候将所存储的数据还原成可以存储于RAM中的一般对象。Java提供了所谓“轻量级持久性”。

原创粉丝点击