`
xs.cctv
  • 浏览: 21997 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

程序运行时,数据保存到什么地方

 
阅读更多

程序运行时,我们最好对数据保存到什么地方做到心中有数。特别要注意的是内存的分配。有六个地方都可以保存数据:
(1) 寄存器。这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部。然而,寄存器的数量十分有限,所以寄存器是根据需要由编译器分配。我们对此没有直接的控制权,也不可能在自己的程序里找到寄存器存在的任何踪迹。
(2) 堆栈。驻留于常规RAM(随机访问存储器)区域,但可通过它的“堆栈指针”获得处理的直接支持。堆栈指针若向下移,会创建新的内存;若向上移,则会释放那些内存。这是一种特别快、特别有效的数据保存方式,仅次于寄存器。创建程序时,Java编译器必须准确地知道堆栈内保存的所有数据的“长度”以及“存在时间”。这是由于它必须生成相应的代码,以便向上和向下移动指针。这一限制无疑影响了程序的灵活性,所以尽管有些Java数据要保存在堆栈里——特别是对象句柄,但Java对象并不放到其中。
(3) 堆。一种常规用途的内存池(也在RAM区域),其中保存了Java对象。和堆栈不同,“内存堆”或“堆”(Heap)最吸引人的地方在于编译器不必知道要从堆里分配多少存储空间,也不必知道存储的数据要在堆里停留多长的时间。因此,用堆保存数据时会得到更大的灵活性。要求创建一个对象时,只需用new命令编制相关的代码即可。执行这些代码时,会在堆里自动进行数据的保存。当然,为达到这种灵活性,必然会付出一定的代价:在堆里分配存储空间时会花掉更长的时间!
(4) 静态存储。这儿的“静态”(Static)是指“位于固定位置”(尽管也在RAM里)。程序运行期间,静态存储的数据将随时等候调用。可用static关键字指出一个对象的特定元素是静态的。但Java对象本身永远都不会置入静态存储空间。
(5) 常数存储。常数值通常直接置于程序代码内部。这样做是安全的,因为它们永远都不会改变。有的常数需要严格地保护,所以可考虑将它们置入只读存储器(ROM)。
(6) 非RAM存储。若数据完全独立于一个程序之外,则程序不运行时仍可存在,并在程序的控制范围之外。其中两个最主要的例子便是“流式对象”和“固定对象”。对于流式对象,对象会变成字节流,通常会发给另一台机器。而对于固定对象,对象保存在磁盘中。即使程序中止运行,它们仍可保持自己的状态不变。对于这些类型的数据存储,一个特别有用的技巧就是它们能存在于其他媒体中。一旦需要,甚至能将它们恢复成普通的、基于RAM的对象。Java 1.1提供了对Lightweight persistence的支持。未来的版本甚至可能提供更完整的方案。

分享到:
评论

相关推荐

    易语言程序自身保存数据

    配置数据是指程序运行时需要的一些设置或状态信息,比如用户偏好、窗口大小位置、默认选项等。这些数据通常需要在程序启动时读取并在关闭时保存,以便下次启动时能够恢复到用户设定的状态。 2. 自身保存数据的方法...

    STC89C52单片机掉电数据保存程序

    - 中断服务程序:如果单片机检测到掉电事件,中断服务程序会被触发,快速执行数据保存操作。 学习和理解这个程序可以帮助我们掌握如何在STC89C52单片机中实现数据的持久化存储,这对于开发各种需要保存状态的嵌入式...

    dream4,程序运行期可动态设计、载入、保存窗体及控件界面的控件

    标题中的“dream4”可能指的是一个特定的软件开发框架或者库,它允许程序员在程序运行时动态地设计、加载和保存用户界面(UI)的窗体和控件。这种功能对于那些需要高度自定义和灵活性的应用程序来说尤其有用,比如...

    易语言自定义数据类型变量保存

    5. **数据反序列化**:当程序运行时,需要读取文件并恢复数据到内存中的自定义数据类型变量。这通常涉及读取文件内容,然后解析成相应的数据结构。 6. **错误处理**:在整个过程中,良好的错误处理机制至关重要。...

    将MATLAB数据保存到Excel中的程序

    MATLAB数据保存到Excel中的程序 MATLAB是一款强大的数学计算和数据分析软件,而Excel是最常用的电子表格软件。在科学研究、数据分析和工程应用中,我们常常需要将MATLAB中的数据保存到Excel中,以便于进一步的数据...

    完整版程序意外退出自动保存恢复文件例程.rar

    1. **定时保存**:程序运行时,会在设定的时间间隔(如5分钟或10分钟)自动保存当前的工作状态,将用户的数据以临时文件的形式存储起来。这可以确保即使程序意外退出,也能找回最近的操作成果。 2. **事务日志**:...

    程序运行时内存分配.doc

    程序运行时内存分配是计算机科学中的重要概念,它关乎到程序的执行效率和资源管理。在深入了解这个主题之前,我们要明确内存的五个主要区域: 1. **程序代码区**:这是存储程序执行指令的地方,包括编译后的机器码...

    stm32保存内存数据的方法

    除了将数据保存到RAM中并通过调试工具导出外,还可以考虑将重要数据保存到非易失性存储器中,确保数据的安全性和持久性。 ##### 5.1 内置EEPROM STM32部分型号内置了EEPROM(电可擦可编程只读存储器),可以用来...

    C++ 保存数据到excel文件

    当我们需要在C++程序中将数据保存到Excel文件时,通常会涉及到文件I/O操作以及对Excel文件格式的理解。 在C++中实现数据保存到Excel文件,主要有两种方法:一是使用Microsoft的COM接口(Component Object Model),...

    程序进入后台保存用户数据

    开发者需要处理这种情况,确保用户的数据得以安全保存,并且在用户返回应用时能够恢复状态。本文将深入探讨iOS中的“程序进入后台”这一主题,以及如何在这一过程中保存用户数据。 首先,我们需要理解iOS的生命周期...

    串口数据保存至TXT文件.rar

    确保在程序运行前串口没有被其他程序占用。 3. **读取串口数据**:使用“Read from Serial Port”函数持续或定时读取串口接收到的数据。数据通常以字符串形式返回,可以是ASCII编码的字符或十六进制数值。 4. **...

    关于单片机flash数据保存和读取的方法

    关于单片机flash数据保存和读取的方法 在单片机系统中,FLASH 数据读取和保存是实现系统参数和数据的存储和读取的重要方法。其目的是在单片机的程序存储区开辟一块空间专门用来保存系统需要记忆的参数和数据,从而...

    程序自身保存数据易语言源码

    在易语言中,数据保存的常见场景可能包括用户设置的存储、游戏进度的保存、应用程序状态的记录等。通过学习和理解这段源码,开发者不仅可以掌握易语言的文件操作技术,还能了解到数据序列化、错误处理和文件路径管理...

    S7-200程序数据的断电保存方法.doc

    RAM 存储器主要用作 PLC 程序运行时程序、组态参数、程序数据的实时存取空间。EEPROM 存储器为带电可擦写存储器,其数据写入后可在完全断电情况下长期保存。在 PLC 的使用过程中,每次上电时 PLC 会从 EEPROM 存储区...

    易语言程序意外退出自动保存恢复文件

    自动保存恢复文件的核心思想是,在程序运行过程中定期或在关键操作后保存用户的当前工作状态。当程序意外退出时,可以根据之前保存的文件状态进行恢复,从而保护用户的数据不丢失。下面我们将详细讲解这个功能的实现...

    - 程序意外退出自动保存恢复文件例程.rar

    3. **内存镜像**:程序运行时,可以定期将内存中的关键数据结构复制到硬盘,形成一个内存镜像。如果程序意外退出,可以从镜像中恢复。 4. **异常处理**:设置异常处理函数,当程序出现错误时,异常处理函数可以尝试...

    程序只能运行一次,防止程序重复执行。

    7. **数据库记录**:在分布式系统中,可以使用数据库来记录程序运行状态,每个实例在启动时检查数据库中的状态,如果发现已有运行记录,就不允许再启动。 以上方法可以根据实际需求和开发环境选择合适的实现方式。...

    mfc中读取编辑框数据并保存

    - **路径问题**:确保指定的文件路径正确无误,且程序运行时有权限访问该路径。 - **编码问题**:如果编辑框中包含非英文字符,请确保使用的编码方式与文件保存时一致,以免出现乱码。 - **文件权限**:检查目标文件...

    labview 保持上次数据

    当VI关闭时,可以将实例数据保存到文件,然后在下次打开时恢复。 8. **LabVIEW项目和配置**: 在LabVIEW项目中,可以为整个项目或特定VI设置默认值和配置。这些设置可以在用户重启应用程序时自动应用。 9. **状态...

    使用JS将内存中的数据保存到文件中

    在IE浏览器下,运行该程序,在文本框中编辑文字,点击保存按钮,可以将文本框中的内容保存到文件中。

Global site tag (gtag.js) - Google Analytics