【JAVA】数据存储位置

本文详细介绍了Java中数据存储的五个关键位置,包括寄存器(高速但有限),栈(灵活但受限于生命周期),堆(灵活但消耗资源),常量存储(安全且不可变),以及非RAM存储(如流对象和持久化对象)。
摘要由CSDN通过智能技术生成

Java中数据存储的5个位置

寄存器

最快的存储区,位于处理器内部。但是其数量极其有限,是根据需求进行分配的,无法进行人为控制(c或cpp允许人为向编译器建议寄存器的分配方式)。

位于通用RAM(随机访问存储器)中,可以通过堆栈指针从处理器中获得直接支持。指针向下移动则分配新的内存;若向上移动则释放内存。其速度仅次于寄存器。创建程序时Java系统必须知道存储在栈内所有项的确切生命周期,以便上下移动指针,这一约束也限制了程序的灵活性,所以常用于存储对象引用和基本数据类型,而不用于存储对象。
例如:

String s = new String("hello");

其中String类型s是存储在栈中,而new的这个对象存储在堆中。

通用内存池,也位于RAM区,用于存放所有的Java对象。堆相比于栈的好处是:编译器不需要知道存储的数据在堆里存活多久,因此在堆里分配存储有很大的灵活性。如上述代码中提到的,在执行new这行代码时,会自动在堆里分配存储空间。当然,这种灵活性也会消耗更多的存储和清理所需的时间

常量存储

常量值通常直接存放在程序代码的内部(常量池中),因为其值在初始化时已被确定,永远不会被改变,因此是安全的。

非Ram存储

如果数据完全存活与程序之外,那么它可以不受程序的控制,在程序没有运行时也存在。其中两个例子是流对象持久化对象。对于流对象而言,其本质是将内存中的对象状态通过序列化过程转化为字节流,这一转化使得对象能够脱离创建它的程序环境;而持久化对象,则直接被存放于磁盘上。

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值