当前位置:以往代写 > JAVA 教程 >
2019-06-14

措施生存在什么处所

措施运行时,我们最好对数据生存到什么处所做到心中有数。出格要留意的是内存的分派。有六个处所都可以生存数据:
(1) 寄存器。这是最快的生存区域,因为它位于和其他所有生存方法差异的处所:处理惩罚器内部。然而,寄存器的数量十分有限,所以寄存器是按照需要由编译器分派。我们对此没有直接的节制权,也不行能在本身的措施里找到寄存器存在的任何踪迹。
(2) 仓库。驻留于通例RAM(随时机见存储器)区域,但可通过它的“仓库指针”得到处理惩罚的直接支持。仓库指针若向下移,会建设新的内存;若向上移,则会释放那些内存。这是一种出格快、出格有效的数据生存方法,仅次于寄存器。建设措施时,Java编译器必需精确地知道仓库内生存的所有数据的“长度”以及“存在时间”。这是由于它必需生成相应的代码,以便向上和向下移动指针。这一限制无疑影响了措施的机动性,所以尽量有些Java数据要生存在仓库里——出格是工具句柄,但Java工具并不放到个中。
(3) 堆。一种通例用途的内存池(也在RAM区域),个中生存了Java工具。和仓库差异,“内存堆”或“堆”(Heap)最吸引人的处地址于编译器不必知道要从堆里分派几多存储空间,也不必知道存储的数据要在堆里逗留多长的时间。因此,用堆生存数据时会获得更大的机动性。要求建设一个工具时,只需用new呼吁体例相关的代码即可。执行这些代码时,会在堆里自动举办数据的生存。虽然,为到达这种机动性,一定会支付必然的价钱:在堆里分派存储空间时会花掉更长的时间!
(4) 静态存储。这儿的“静态”(Static)是指“位于牢靠位置”(尽量也在RAM里)。措施运行期间,静态存储的数据将随时等待挪用。可用static要害字指出一个工具的特定元素是静态的。但Java工具自己永远都不会置入静态存储空间。
(5) 常数存储。常数值凡是直接置于措施代码内部。这样做是安详的,因为它们永远都不会改变。有的常数需要严格地掩护,所以可思量将它们置入只读存储器(ROM)。
(6) 非RAM存储。若数据完全独立于一个措施之外,则措施不运行时仍可存在,并在措施的节制范畴之外。个中两个最主要的例子即是“流式工具”和“牢靠工具”。对付流式工具,工具会酿成字节约,凡是会发给另一台呆板。而对付牢靠工具,工具生存在磁盘中。纵然措施中止运行,它们仍可保持本身的状态稳定。对付这些范例的数据存储,一个出格有用的能力就是它们能存在于其他媒体中。一旦需要,甚至能将它们规复成普通的、基于RAM的工具。Java 1.1提供了对Lightweight persistence的支持。将来的版本甚至大概提供更完整的方案。

    关键字:

在线提交作业