首页 > 编程语言 >java(15)java数据保存

java(15)java数据保存

时间:2023-02-01 22:34:52浏览次数:33  
标签:存储 15 对象 RAM 保存 Java 寄存器 堆栈 java

存储数据
1.寄存器(register)。

这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。


2. 堆栈(stack)。

位于通用 RAM(random-access memory,随机访问存储器)中,但通过它的“堆栈指针”可以从处理器那里获得直接支持。堆栈指针若向下移动,则分配新的内存;若向上移动,则释放那些内存。这是一种快速有效的分配存储方法,仅次于寄存器。创建程序时,Java 编译器必须知道存储在堆栈内所有数据的确切大小和生命周期,因为它必须生成相应的代码,以便上下移动堆栈指针。这一约束限制了程序的灵活性,所以虽然某些 Java 数据存储于堆栈中——特别是对象引用,但是 Java 对象并不存储于其中。


3. 堆(heap)。

一种通用性的内存池(也存在于 RAM 区),用于存放所有的 Java 对象。堆不同于堆栈的好处是:编译器不需要知道要从堆里分配多少存储区域,也不必知道存储的数据在堆里存活多长时间。因此,在堆里分配存储有很大的灵活性。当你需要创建一个对象时,只需用 new 写一行简单的代码,当执行这行代码时,会自动在堆里进行存储分配。当然,为这种灵活性必须要付出相应的代价。用堆进行存储分配比用堆栈进行存储存储需要更多的时间(如果确实可以在 Java 中像在 C++中一样用栈保存对象)。


4. 静态存储(static storage)。

这里的“静态”是指“在固定的位置”(尽管也在 RAM 里)。静态存储里存放程序运行时一直存在的数据。你可用关键字 Static 来标识一个对象的特定元素是静态的,但 Java 对象本身从来不会存放在静态存储空间里。


5. 常量存储(constant storage)。

常量值通常直接存放在程序代码内部,这样做是安全的,因为它们永远不会被改变。有时,在嵌入式系统中,常量本身会和其它部分隔离开,所以在这种情况下,可以选择将其存放在 ROM(read-only memory,只读存储器)中。


6. 非 RAM 存储(non-RAM storage)。

如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。其中两个基本的例子是“流对象(streamed object)”和“持久化对(persistent object)”。在“流对象”中,对象转化成字节流,通常被发送给另一台机器。在“持久化对象”中,对象被存放于磁盘上,因此,即使程序终止,它们仍可以保持自己的状态。这种存储方式的技巧在于:把对象转化成可以存放在其它媒介上的事物,在需要时,可恢复成常规的、基于 RAM 的对象。

标签:存储,15,对象,RAM,保存,Java,寄存器,堆栈,java
From: https://www.cnblogs.com/zhbx/p/17084322.html

相关文章

  • Java(14)数组
    一、数组的基本概念1、什么是数组数组是相同类型元素的集合。创建数组的时候,Java就会再内存中分配一段连续的空间来存放数组的内容。每一个数组内容都有自己的编号,这......
  • leetcode 中等(设计):[146, 155, 208, 211, 284, 304, 307, 341, 355, 380]
    目录146.LRU缓存155.最小栈208.实现Trie(前缀树)211.添加与搜索单词-数据结构设计284.顶端迭代器304.二维区域和检索-矩阵不可变307.区域和检索-数组可修......
  • 【简单版】【Java语言刷Leetcode一5道题】Day2
    ......
  • 在 JavaScript 中编写Go式错误处理的async/await
    ES7引入​​async/await​​​允许开发人员编写看起来像同步的异步JavaScript代码。在当前的JavaScript版本中,还可以使用​​Promises​​,这些功能都是为了简化异步......
  • JavaWeb
    1.基本概念1.1前言web开发:web,网页的意思:www.baidu.com静态web   html,css  提供给所有人看的数据始终不会变化!动态web  几乎所有的网站  提供给所有......
  • JAVA(13)java character
    Character类概述Character类用于对单个字符进行操作,Character类在对象中包装一个基本类型char的值,在实际开发中,我们经常会遇到需要使用对象,而不是内置数据类型的情况,为了解......
  • java遍历文件夹文件
      遍历  D:\\书籍目录下所有的文件。含子目录文件 packagecn.shuishandt.date;importjava.io.File;publicclassTestFileTree{ publicstaticvoid......
  • Ubuntu & CentOS配置JAVA JDK环境
    Linux配置JavaJDK环境下载地址:​​https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html​​根据系统相应版本进行下载。安装配置解......
  • Java—成员变量与局部变量、封装
    一、成员变量与局部变量1.定义的位置不同成员变量:成员变量定义在方法外,类中;局部变量:局部变量定义在方法中。2.生命周期不同成员变......
  • Java使用Scanner实现循环输入
    1publicstaticvoidmain(String[]args){2Scannersc=newScanner(System.in);3List<Integer>list=newArrayList<>();4Stringinput=......