1、 寄存器 这是最快的存储区,它位于处理器的内部,不能人为控制。



2、 堆栈     位于RAM,但可以通过堆栈指针从处理器那里获取直接支持。堆栈指针向下移动,就分配新的内存,向上移动,则释放那些内存。这种方式分配内存快速有效,仅次于寄存器。



                  所以java必须知道存储在堆栈内所有对象的确切生命周期。对象引用 和 基本数据类型会放到堆栈中。



3、 堆         一种通过的内存池,也位于RAM。用于存放所有的java对象。堆和堆栈的区别就在于编译器不需要知道数据在堆中存活的时间,但这使得存储分配和清理需要更多的时间。



4、 常量存储  常量值通常可以直接放在程序代码内部,这样是安全的。有时,在嵌入式系统中,常量本身会放到ROM(只读存储器中)。



5、 非RAM存储  数据可以完全存活与程序之外。基本的例子就是流对象和持久化对象。 其中基于RAM的对象,Java提供了对轻量级持久化的支持,JDBC和Hibernate提供了更加复杂的对在数据库中的对象信息的支持。