数据有6个地方可以存放:
(1)寄存器:在处理器内部,由编译器分配,开发者没有直接控制权。
(2)堆栈:在RAM(随机访问存储器)区域。堆栈指针下移回创建新的内存,堆栈指针上移会释放部分内存。
创建程序时,java编译器必须准确知道堆栈内保存的所有数据的长度以及存在时间。
java对象句柄和主要数据类型(e.g.int ,float)的变量存在在该区域。。c++对象一般存在此区域。
(3)堆:在RAM(随机访问存储器)区域。在堆里分配存储空间会花掉更长时间。
编译器不必知道要从堆里分配多少存储空间,也不必知道要存多少时间。可以用垃圾收集器销毁。
java对象存在此区域。
(4)静态存储:在RAM(随机访问存储器)区域。存储static修饰的变量。
程序运行期间,静态存储的数据将随时等待调用。
(5)常数存储:常数值通常直接置于程序代码内部。
(6)非RAM存储:若数据完全独立于一个程序之外,则程序不运行时仍可存在,并在程序的控制范围之外。
主要是流式对象和固定对象。