存储数据

news/2024/5/18 22:43:11 标签: 存储, java, hibernate, 编译器, jdbc, 嵌入式

        程序运行时,对象是怎么进行放置安排的呢?特别是内存是怎样分配的呢?有五个不同的地方可以存储数据:

        1)寄存器。这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极其有限,所以寄存器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象(另一方面,C和C++允许您想编译器建议寄存器的分配方式)。

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

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

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

         5)非RAM存储。如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。其中两个基本的例子是流对象和持久化对象。在流对象中,对象转化成字节流,通常被发送给另一台机器。在“持久化对象”中,对象被存放于磁盘上,因此,即使程序中止,它们仍可以保持自己的状态。这种存储方式的技巧在于:把对象装化成可以存放在其他媒介上的事物,在需要时,可恢复成常规的、基于RAM的对象。Java提供了对轻量级持久化的支持,而诸如JDBC和Hibernate这样的机制提供了更加复杂的对在数据库中存储和读取对象信息的支持。


http://www.niftyadmin.cn/n/1760067.html

相关文章

python打包成exe (pyinstaller)

:python 转 exe 再也不用记一堆参数了,这个包真香!!! 具体应用移步

Ubuntu安装teamviewer注意事项。

Ubuntu安装teamviewer注意事项。    首先通过浏览器到官方下载ubuntu对应teamviewer的安装包    但是通过dpkg –i安装之后发现安装过程出问题,安装好的包打开之后也闪退。    这个时候需要    使用如下命令处理依赖问题    sudo apt-get insta…

关于selenium, 你还在因为chromedriver的版本与Chrome的版本不一致,需要手动更新chromedriver而烦恼吗?

前言 平时做爬虫我比较喜欢用selenium chrome ,一直困扰我一个问题,就是只要谷歌浏览器更新了,就要重新去下载对应版本的chromedriver_win32,这让我十分烦恼 比如我的谷歌浏览器已经94版本了,但是 chromedriver_win32还停留在92版…

搜索的基本步骤

1998年的基本步骤与现在没有什么区别,现在只是提高了每一步的效率和计算性能。 传统搜索的基本步骤: 1、爬取:收集要搜索的文档。 2、解析:将各种文档(XML、HTML、Word、PDF)转换成统一的结构,即…

算法--------删除重复元素,但保留两个

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums [1,1,1,2,2,3],…

基于CAPL脚本,造一个分割字符串的轮子

在python 中 用split函数,可以很方便的将一个字符串根据特定符号进行分割,很方便, capl 中没有相关的函数的,那咱就自己造一个,方便使用 以下代码 可以将 字符串列表 [A,B,C,D,E,F] 转成 arrary[5][10]{"A"…

为什么索引只是搜索的一个重要步骤?

Lucene能够快速地索引文档,并对索引进行搜索,Lucene的使用非常方便,效果也很好。由此,Lucene已经如此灵活高效,还有什么可担心的?原因就是垃圾网页的存在。垃圾网页可能会被排名到前面,真正的相…

CANoe DLL编程(一)—— Visual Studio 创建DLL以及动态调用

📙 相关文章 🚩CANoe DLL编程(二)—— 创建CANoe适用的DLL以及调用 🚩CANoe DLL编程(三)——DLL和回调函数 🚩CANoe DLL编程(四)——SendKey DLL的CANoe应用…