首页 技术 正文
技术 2022年11月10日
0 收藏 413 点赞 2,178 浏览 920 个字

下面的内容主要来源于《Thinging in Java》

这本书的第22页讲到的,有5个不同的地方可以存储数据:

1)、寄存器

  这是最快的存储区,因为它位于处理器内部(没错,如果学过计算机组成原理的同学应该知道这个比较接近于cpu),但是寄存器的数量极其有限,所以寄存器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器的存在的任何迹象。

2)、堆栈(通常也简称栈内存)

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

注意:对象引用  和  对象的存储的不同了。

3)、堆(通常称堆内存

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

注意:结合 2),应该知道    对象引用—>堆栈; 对象—>堆

4)、常量存储

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

5)、非RAM存储  如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。其中两个基本的例子就是流对象持久化对象。在流对象中,对象转化成字节流,通常被发送给另一台机器。在“持久化对象”中,对象被存放于磁盘中,因此,即使程序终止,它们仍可以保持自己的状态。

日后会扩展一下:流对象

 

Java把常用的内存划分成两种:一种是栈内存,另一种是堆内存 
在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配 
而实际的对象是在存储堆内存中

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,488
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,903
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,736
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,487
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,127
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,289