当计算机中的程序运行的时候,数据是怎么存放的:
1.寄存器(register) 这是最快的存储区,它位于CPU(处理器)的内部。寄存器是由编译器根据需求进行分配。 程序员不能直接控制,也不会在程序中感觉到寄存器存在的迹象。
2.堆栈(stack) 位于通用RAM(random-access memory)中,他的堆栈指针可以从处理器那里获得支持。 堆栈指针下移,则分配新的内存,若上移,则释放内存。速度仅次于寄存器。也是由编译器分配和释放,程序员不能控制。 存放的主要是局部变量等。
3.堆(heap) 一种通用型的内存池(位于RAM中,用于存放所有的java对象),当你需要创建一个新的对象时,只需要用new写一行简单的代码,当执行这个代码的时候,会自动在堆里进行存储分配。用堆进行存储分配比用堆栈进行存储分配需要更长的时间。
4.全局区(静态区) 这里的静态是指在固定的位置(也在RAM里),静态存储区里存放的是程序运行时一直存在的数据。
5.常量存储区 常量值经常存放在程序代码内部,因为它们永远不会被改变。
6.非RAM存储