JAVA中的数据存储
1、寄存器
这是最快的存储区域,因为它位于处理器内部。但是寄存器的数目很有限,会根据需求分配。你不能在程序里直接控制,也不能感受到寄存器的存在。
2、堆栈
位于通用RAM(随机访问存储器),通过堆栈指针可以直接操作堆栈。堆栈指针若向下移动,则分配新的内存;若向上移动,则释放那些内存。某些JAVA数据存储在堆栈中—特别是对象引用,但JAVA对象并不存储在其中。
3、堆
一种通用的内存池(也位于RAM),堆不同于堆栈的好处是,编译器不需要知道存储的数据在堆里存活了多长时间。因此,在堆里分配内存有很大的灵活性。当需要一个对象时,只需用new写一行简单的代码,当执行这段代码时,会自动在堆里进行内存分配。
4、常量存储
常量值直接放在程序代码内部
5、非RAM存储
如流对象和持久化对象
在JAVA程序设计中,对于经常遇到的一系列类型,如int等,它们需要被特殊对待,可以把它们想象成 “基本类型”。之所以要特殊对待,是因为,new将对象存储在堆里,故而用new创建一个对象,其实开销挺大的。因此,对于这种类型的变量,JAVA采用了与C和C++相同的方法,也就是说,不用new来创建对象,而是创建一个并非是引用的“自动”变量,这个变量直接存储“值”,并置于堆栈中,因此更加高效。