java程序运行中数据保存的位置

     java程序运行时,我们最好对数据保存到什么地方做到心中有数,特别要注意内存的分配。有六个地方可以保存数据:
1.寄存器:寄存器是根据编译器需要自动分配的,用户对它没有直接控制权。

2.堆栈:驻留于常规RAM(随机访问存储器)区域,但它可以通过“堆栈指针”获得处理的直接支持。堆栈指针向下移,会窜货创建新的内存;向上移,则会释放那些内存。其处理速度仅次于寄存器的处理速度。但创建程序时,java编译器必须准确的知道堆栈内保存的所有数据的“长度”和“存在时间 ”。这种保存数据的方式影响了程序的灵活性,所以尽管有些java数据要保存在堆栈中——特别是对象句柄,但java对象并不放到其中。

3.堆:一种常规用途的内存池,保存了java的对象。最大的有点是在分配内存时不需要知道程序存在的时间和长度,创建一个对象时,只需要用new命令编译出相关的代码即可,在堆里自动进行数据保存。但是为了达到这种灵活性必须付出一些代价: 在堆里分配内存空间的时间将会更长!

4.静态存储:这里的”静态“指的是“位于固定位置”,尽管也在RAM里面。可用static关键字指出一个对象的特定元素时静态的,但java对象本身永远不会置入静态内存中。

5.常数存储:常数一般直接置于代码内部,但有些常数需要非常严格的保护,可以考虑将他们置于只读存储器(ROM)中。

6.非RAM存储:若数据完全独立于一个程序之外,则程序不运行时仍可存在,并在程序的控制范围之外。其中两个最主要的例子时“流式对象”和“固定对象”。

猜你喜欢

转载自blog.csdn.net/qq_37003223/article/details/81026097