java中的数据和对象的存储机制的一点理解

《think in java》讲到我们的java中创建的数据和对象存放的位置,具体如下:

(1) 寄存器。 即cpu内部,无法控制。CPU对存储器中的数据进行处理时,往往先把数据取到内部寄存器中,而后再作处理。

(2) 堆栈。(RAM)这个应该类似与数据结构的栈,可以实现快速存取,这里存放对象实例的句柄,以及基本类型的变量(,int, short, long, byte, float, double, boolean, char),且栈数据可以共享。

(3) 堆。(RAM)运行时数据区,动态分配内存空间,用于存放new 创建的java对象实例。

(4) 静态存储。这儿的“静态”(Static)静态变量必定存放在此区域,且在程序运行结束,由java自动回收(其在类加载时进行初始化,且所有对象实例进 行共享使用)。另一个是全局变量,C/C++中似乎它们在同一个内存区域,但java中全局变量似乎在堆栈中,具体待求证?

(5) 常数存储。常数值通常直接置于程序代码内部。(ROM)。程序结束后由系统释放 ?

(6) 非RAM存储。书中讲到的“流式对象”和“固定对象”。前者是服务器之间数据传递,后者属于将数据对象存储到硬盘中。
示例:
public class Test {

//–栈–栈
//这里的3在栈里面被共享
int a = 3;

//–栈–栈
int b = 3;

//——栈——栈
String hello = “hello”;

//—-栈–堆
Pager p = new Pager();

//堆(静态存储空间?)
static int c;

//ROM
static final int NUMBER = 0;
}