`
如沐春风的小妮
  • 浏览: 69757 次
  • 性别: Icon_minigender_2
  • 来自: 西安
社区版块
存档分类
最新评论

java中数据保存的位置

阅读更多

以前学习C的时候,知道C的内存的分配方式有3种:堆,栈,静态存储区。因为面试的时候经常会被问道变量是以何种方式在内存中存放的,所以习惯性的,在开始一门新的技术(语言)学习时,会好奇,它的数据是怎么存放的呢?

 

我学习java是听从同事的建议,阅读《Thinking in java》,翻译过来就是《java编程思想》,是不是看起来亲切多了~

 

有六个地方可以保存数据

(1) 寄存器。这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部。然而,寄存
器的数量十分有限,所以寄存器是根据需要由编译器分配。我们对此没有直接的控制权,也不可能在自己的
程序里找到寄存器存在的任何踪迹。


(2) 堆栈。驻留于常规RAM(随机访问存储器)区域,但可通过它的“堆栈指针”获得处理的直接支持。堆
栈指针若向下移,会创建新的内存;若向上移,则会释放那些内存。这是一种特别快、特别有效的数据保存
方式,仅次于寄存器。创建程序时,Java 编译器必须准确地知道堆栈内保存的所有数据的“长度”以及“存
在时间”。这是由于它必须生成相应的代码,以便向上和向下移动指针。这一限制无疑影响了程序的灵活
性,所以尽管有些Java 数据要保存在堆栈里——特别是对象句柄,但Java 对象并不放到其中。

 

---》所谓句柄呢,就举个例子吧,String c;c此时就被称之为句柄。对象是要被创建的,c = new String("abc");此时句柄c就指向了创建的String类型的对象。


(3) 堆。一种常规用途的内存池(也在RAM 区域),其中保存了Java 对象。 和堆栈不同,“内存堆”或
“堆”(Heap)最吸引人的地方在于编译器不必知道要从堆里分配多少存储空间,也不必知道存储的数据要
在堆里停留多长的时间。因此,用堆保存数据时会得到更大的灵活性。要求创建一个对象时,只需用new 命
令编制相关的代码即可。执行这些代码时,会在堆里自动进行数据的保存。当然,为达到这种灵活性,必然
会付出一定的代价:在堆里分配存储空间时会花掉更长的时间!

 


(4) 静态存储。这儿的“静态”(Static)是指“位于固定位置”(尽管也在RAM 里)。程序运行期间,静
态存储的数据将随时等候调用。可用static 关键字指出一个对象的特定元素是静态的。但Java 对象本身永
远都不会置入静态存储空间。

 

---》不得不说,java的static定义与C++太不一样。C++文件内部被定义为static的函数只能用于该文件内部;而java不一样。java定义为static的全局变量和函数,即可以被本文件内部使用,也可以被外部使用。甚至在使用的时候,不需要重新创建对象。真怕时间久了,我就忘记C++static的使用,还是在这里再提醒一下自己吧。。


(5) 常数存储。常数值通常直接置于程序代码内部。这样做是安全的,因为它们永远都不会改变。有的常数
需要严格地保护,所以可考虑将它们置入只读存储器(ROM)。


(6) 非RAM 存储。若数据完全独立于一个程序之外,则程序不运行时仍可存在,并在程序的控制范围之外。
其中两个最主要的例子便是“流式对象”和“固定对象”。对于流式对象,对象会变成字节流,通常会发给
另一台机器。而对于固定对象,对象保存在磁盘中。即使程序中止运行,它们仍可保持自己的状态不变。对
于这些类型的数据存储,一个特别有用的技巧就是它们能存在于其他媒体中。一旦需要,甚至能将它们恢复
成普通的、基于RAM 的对象。Java 1.1 提供了对Lightweight persistence 的支持

分享到:
评论
2 楼 nanapoleon 2012-07-22  
 
1 楼 liuy2012 2012-07-20  

相关推荐

    Java爬虫获取网页表格数据保存到MySQL

    Java爬虫获取网页表格数据并保存到MySQL数据库,包含完整代码

    java 将数据保存到指定的文件中

    在Java编程语言中,将数据保存到指定的文件是一项常见的任务,这涉及到文件I/O(输入/输出)操作。在本篇文章中,我们将深入探讨如何使用Java实现这一功能,包括基本概念、常用类以及具体的操作步骤。 首先,了解...

    用Java代码把数据导入Word的指定位置

    本文将深入探讨如何利用Java代码将数据插入到Word的指定位置。 首先,我们需要了解Java中用于处理Word文档的主要库。Apache POI是一个流行的开源库,专门用于处理Microsoft Office格式的文件,包括Word(.doc, ....

    java 将由键盘中录入的信息保存到文件中

    在Java编程语言中,将由键盘输入的数据保存到文件中是一项基本操作,这对于数据存储、日志记录等应用场景至关重要。本篇文章将详细讲解如何在Java中实现这一功能,主要涉及IO流(Input/Output Stream)的使用。 ...

    java 读取txt数据并保存到数据库中源代码

    java 读取txt文本文件中的数据并保存到数据库中源代码,假设txt已有格式,并以","分隔。其中的sql包需要自己去微软官网下载。

    java采集数据并分类保存

    在考勤数据的分类保存中,`Map`起到了关键作用。例如,可以使用员工ID作为键,对应值为一个`List`,该`List`包含了该员工的所有打卡记录。这样,通过键值对的方式,我们可以快速定位到某个员工的所有打卡数据,便于...

    SuperMap Objects Java 创建栅格数据集

    最后,**数据保存** 是必要的,将创建的栅格数据集保存为SuperMap支持的栅格文件格式,如GRID或DTED,以便于后续的查看和分析。在SuperMap Objects中,可以使用`IFeatureDataset`接口的`SaveAs`方法完成这个任务。 ...

    java_rtp 实现视频播放与保存

    对于保存,可以将接收到的RTP包中的数据保存到本地文件,然后使用合适的工具进行重新编码和封装。 **音频播放与保存** 音频的处理与视频类似,只是数据类型和处理方式不同。音频数据通常是以PCM格式存储,可以使用...

    JAVA串口助手接收数据并解析数据存入MySQL数据库中

    在本文中,我们将深入探讨如何使用Java开发一个串口助手应用程序,该程序能接收来自串行端口的数据并将其解析后存储到MySQL数据库中。首先,我们需要了解串口通信的基本概念,然后学习Java如何处理串口输入,接着是...

    java在线编辑保存Word文件(支持跨浏览器)

    Java在线编辑保存Word文件是一项常见的需求,特别是在Web应用中,用户可能需要在浏览器环境中直接对文档进行编辑操作。PageOffice是一款强大的Java组件,它能够帮助开发者实现这一功能,特别是其V4.4版本,提供了跨...

    JAVA画板中的保存程序

    总之,"JAVA画板中的保存程序"这个项目涉及了Java GUI编程、图形绘制、文件I/O操作以及数据结构的应用。通过掌握这些知识点,开发者可以构建出功能强大的画图工具,满足用户保存和分享自己作品的需求。

    java保存文件到数据库

    在Java编程中,将文件保存到数据库是一种常见的需求,特别是在处理图像、文档和其他非结构化数据时。这个过程涉及到将文件转换为二进制数据,然后将这些数据存储到数据库的特定字段中,通常是一个BLOB(Binary Large...

    Java 小例子:数据持久化(保存数据到文件)

    在这个Java小例子中,我们主要关注的是将数据保存到文件这一常见方式。 文件作为数据持久化的载体,是因为文件系统是操作系统提供的一种基础存储服务,易于理解和操作。在Java中,可以使用I/O流进行文件操作,包括...

    java editor 保存文件

    在Java编程环境中,编辑器是开发人员日常工作中不可或缺的一部分,用于编写、修改和保存源代码。本主题将深入探讨“Java编辑器保存文件”的过程,结合提供的标签“源码”和“工具”,我们将讨论如何在Java应用中实现...

    Java数据生成统计图表程序

    Java数据生成统计图表程序是一种利用Java编程语言来创建可视化数据表示的方法,特别是在处理温度等科学或工程数据时非常有用。这个程序可能包含了对输入数据进行分析、处理和展示的完整流程,通过Java的数据结构和...

    接收串口数据并将数据保存

    本项目"接收串口数据并将数据保存"是针对数据采集卡的一种实践应用,其目标是实时接收并记录从串口接收到的数据。 1. **串口通信基础** - **串口类型**:常见的串口有RS-232、RS-485和USB转串口等,其中RS-232是最...

    java实现Excel数据导入到mysql数据库.zip

    本项目"java实现Excel数据导入到mysql数据库"旨在利用Java技术将Excel表格中的数据高效地导入到MySQL数据库,并且在数据库中存在相同数据时进行更新,同时也支持将数据库中的数据导出到Excel表中。这个过程涉及到多...

    学生信息管理系统(java版本+文件保存).zip

    在这个项目中,我们关注的是一个使用Java语言实现的学生信息管理系统,它包含了图形用户界面(GUI)以及文件保存功能。下面我们将详细探讨这个系统的核心知识点。 1. **Java语言基础**: Java是一种跨平台的、面向...

    mqtt接收数据并保存

    // 实现数据保存逻辑 } } // 设置回调并在连接时使用 client.setCallback(new MqttReceiverCallback()); ``` 6. **断开连接**: 当不再需要接收数据时,记得调用`MqttClient`的`disconnect()`方法断开连接: `...

    java将网页保存成mht格式程序

    ### Java将网页保存成MHT格式程序:详细解析与实现 在互联网开发中,有时我们需要将整个网页(包括其所有资源如图片、样式表、脚本等)保存为一个单一的文件,以便于离线浏览或备份。MHT(MIME HTML)格式是一种将...

Global site tag (gtag.js) - Google Analytics