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 的对象。
1、Register(寄存器)
存在与CPU中,存取速度最快,但数量有限2、Stack(栈、堆栈)
存在与内存中,存取的速度和效率仅次于Register,在程序加载的时候编译器必须准确知道所需的所有空间大小,通过指针来操作
3、Heap(堆中)
存在与内存中,存取方式灵活,无需编译器关心,速度比不上Stack4、Static (静态类型)
整个程序都可以访问,对象的属性可以是静态的,但JAVA对象不会是静态的.5、Constant(常量)
存在于程序代码中,不能改变6、非易失性数据
a、流类型数据
b 、持久性数据
java存储数据_Java中六种数据存储方式相关推荐
- java变量存储位置_java 中变量存储位置的区别
[原文] 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量 ...
- 使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作
https://www.zybuluo.com/aitanjupt/note/209941 使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作 〇.摘要 一.基础环境 二.数据存 ...
- 存储在Redis中的数据多大比较合适
存储在Redis中的数据多大比较合适 背景 过大的数据对 Redis 的影响 『过大』的定义是什么 结论 背景 本文是工作中应对一个实际业务场景的调研总结过程.在使用 redis 作为数据缓存的时候, ...
- java筛选表格,java怎么获取excel中的数据_java筛选excel数据
你好! 请教你个问题 java web程序如何将读取的excel表格里的数据插入到数据库,并显示在JSP页面上? 主要用poi.jar 包.包含两jar就可以了:poi-3.16.jar.poi-oo ...
- java如何向数据库中插入数据_如何控制Java代码向数据库中插入数据
慕哥6287543 Java程序向数据库中插入数据,代码如下:123456789101112131415161718192021222324252627282930313233343536373839 ...
- java file 方法_JAVA中File的常用方法
一.File类中包含了很多获得文件或文件夹属性的方法,使用起来比较方便,下面将常见的方法介绍如下: a.createNewFile方法 public boolean createNewFile() t ...
- 如何在data visualization 中update svg_如何操作小程序页面中data数据区中的数据
前言 在微信小程序中,每一个页面都有一个独立的js文件,用来实现该页面的业务逻辑.这个js文件通常采用Page()方法来对页面进行注册.其中系统为页面设置了一个名为data的区域,用来存储页面的初始数 ...
- 快用云科阎志涛:现代数据栈中的数据建模
嘉宾 | 阎志涛 整理 | 黄引红 出品 | CSDN云原生 现代数据栈作为与数据分析相关的技术栈,具有云原生的特性,它与传统的数据平台相比较,降低了数据使用的技术门槛,也能满足用户日益扩大的数据 ...
- java 字符串总结_Java中字符串(String)总结
先说说JDK API: JDK中包含大量的API类库,所谓API(Application Programming Interface,应用程序编程接口,这些功能以类的形式封装). JDK API包含的 ...
最新文章
- jstree中文api文档_开发中文 API 的一些策略
- Centos7安装go-1.9.2
- Dlib模型人脸特征检测原理及demo
- linux 禁ping设置
- 表单提交,以及标注。
- CF981E Addition on Segments 线段树分治 + bitset优化
- 运用Appium 实现添加微信好友自动化
- 红帽 安装oracle11g,64位RedHat 5.6下安装Oracle 11g
- java怎么安装_Java怎么安装?Java运行环境安装教程
- 计算机网络—体系结构相关真题练习(二)
- C++ 实数和二进制操作入门
- python支持按指定字符串分割成数组_按固定元素数目分割数组- perl,python
- win10主题美化(单)
- MySQL 8.0.27 下载、安装与配置 超详细教程(Windows64位)
- Hi3519av100 编译kernel
- linux分区表导出与恢复,linux下磁盘分区表的备份和恢复
- 数据有效性跨表引用的解决
- 用相关法辨识系统的脉冲响应 matlab,利用相关分析法辨识脉冲响应
- Selenium-Chrome环境配置
- 修改自带input样式input:-internal-autofill-selected为透明色