Java 的数据有六种存储位置:寄存器区、栈区、堆区、静态存储区、常量存储区、非RAM存储区
为什么 Java 数据存储有这么多种方式?统一用一种方式不更简单吗?
大家应该都去过书店或图书馆,里面的书都是按照一定的类别摆放的,相同类别的书放在一起,目的是便于查找。Java 的数据存储也是这样的,将相同类别的数据存放在同一个区中,这样就提高了数据的存储效率。
寄存器区
这是最快的存储区,因为它是直接放在处理器(CPU)内部。但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象
栈区
简称栈,位于内存中,速度仅次于寄存器区,用于存放局部变量、函数参数、当前状态和函数调用信息等
堆区
位于内存中,用于存放所有用 new 创建的 Java 对象
静态存储区
位于内存中,用于永久存放所有用 static 关键字标识的变量
常量存储区
位于内存中,用于存放常量
非RAM存储区
位于硬盘中,用于保存和传送数据,如 Java 的流对象或持久化对象