当前位置:   article > 正文

【JAVA】数据存储位置

【JAVA】数据存储位置

Java中数据存储的5个位置

寄存器

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

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

String s = new String("hello");
  • 1

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

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

常量存储

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

非Ram存储

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/265547
推荐阅读
相关标签
  

闽ICP备14008679号