有5个地方可以存储数据
1.寄存器
因为寄存器位于不同于其他存储区的地方—处理器内部,所以这是最快的存储区。正因为它的大小极其有限,所以它会按照需求分配,在程序中,你不能对它进行任何操作,甚至感受不到它的存在。
2.堆栈
堆栈位于RAM(随机访问存储器)中,通过堆栈指针来处理内存,堆栈指针向下移动,则分配新的内存,如果向上移动,则释放内存,这是一种快速有效的分配存储方式。
JAVA系统必须知道它们的确切生命周期,以便上下移动堆栈指针。所以这一个约束会限制程序的灵活性。所以一般会把对象引用放在堆栈,但是JAVA对象不会放在这里。
3.堆
位于RAM区,是一种通用的内存池,用于存放所有的JAVA对象,堆不同于堆栈的好处是:编译器不关心存储的数据会存活多长时间,你只需要new一个对象,会自动在堆中储存分配,不需要时自动销毁。但是由于动态分配内存都是在程序运行时进行的操作,所以牺牲了一定的时间效率。
4.常量储存
常量值会通常放在程序内部,不可改变,保证其封装性,通常他会被放在jvm的方法区中。
5.非RAM存储
一种是流,用于与设备和另一台机器的交互。
还有一种是持久化对象,放在磁盘上,不需要时将这种对象以某种方式转化为磁盘上的事物,需要用试再转化成对象。例如JDBC,Hibernete都提供了这样的支持,它们还进一步扩展,实现了更佳复杂的功能