栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA基础-内存

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA基础-内存

1.计算机位数代表什么?

cpu一次处理数据的量代表操作系统的位数,32位系统,cpu一次只能计算32bit数据,总线一次只能传输32bit数据

当代cpu计算时间在0.2ns左右

 2.内存的物理特性

内存最小的存储单位类似与二极管,它能存储一个电状态,高或低,可表示1或0

内存断电之后数据就会消失是因为内存条用的是电容存储的电荷

内存的存取速度在20ns左右,由内存给cpu提供数据,cpu效率可达1%

3.内存叶块和磁盘扇区

原先由磁盘向cpu传输数据,每次只能给cpu传输64bit的数据,如果传输一个大的字符串(10000bit),就需要传输5000次。有了内存之后我们一个扇区(4kb)的数据传输到内存,大大减少磁盘的读取次数,提高效率

 内存的基本存储单元也是1字节或2字节(根据内存的不同而不同),但是操作系统为其划分了叶块,一个叶块是4kb,这样cpu发来一个地址信息,磁盘就立即将一整个叶块的数据发送到内存。这样读取大量数据会很快,但读取少量数据会造成浪费

4.操作系统分扇区的目的

更改默认的存储单元之后,存储单元就要用地址进行记录(每4kb记录一个地址),也就意味着,只要用了1kb,剩下的3kb就没办法用了,一个存储单元只能存储一份数据。

我们在定义int类型数据的时候,每个int类型数据都要占据4kb(一个叶块单元)。假如我们有10个int类型的数据,就要占用40kb的。内存的逻辑是多少个数据就占据多少个叶块单元,把这10个数据都封装到一个数组中,就变成了一个数据,大大减少内存消耗,这种逻辑叫buffer

例子:原来10个int类型数据要占据10个叶块

用一个数据去存储,它就会在一个叶块中,由于每个int类型数据都只会占据大小相同的内存空间,计算机就会计算出每个变量的开头地址,根据每个基本数据类型的大小进行计算,取出相应的bit数据。这就是为什么栈和队列全是数组类型的存储

?ps:这里有两个地址概念,一个是操作系统分配的内存地址,还有一个是自带的内存地址,输出的时候输出的操作系统分配到的地址

在内存充足的情况下,链表尽量分配连续的内存空间,而数组和链表不一样,数组是消耗连续的内存空间

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/749577.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号