java基础--内存

一、计算机的位数代表什么以及cpu的计算时间

cpu一次处理数据的量决定了我们操作系统的位数,我们的计算机当前有32位的和64位的,也就意味着我们cpu一次只能计算64bit的数据,那么也就意味着我们的总线一次只能传输64位的数据。

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

二、内存和磁盘的速度分析

1.磁盘

我们在磁盘上找数据的时候,首先涉及到机械臂的移动,以及盘面的转动 共需要 5ms

 

上边我们看到cpu的的计算速度和每次只能计算的量,那么我们可以看到我们磁盘和cpu的速度差是25000000倍

那如何解决这个问题呢?------内存

三、内存的物理特征

https://www.bilibili.com/video/BV1ZW411T7HN

内存最小单位是一些类似于二极管这样的东西,它能存储一个电状态,高或低,可表示1或0;

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

 

我们知道电容和电池一样,充满电的电池我们用0来代表,没有电的我们用1来代表。

 

内存的存取速度在20ns左右,如何由内存给我们的cpu提供数据,那么cpu的效率基本上能达到1%

四、内存的叶块和磁盘的扇区

有了内存以后:我们在以前没有内存的时候我们每次都只能给cpu传输64bit的数据。在我们编程当中每个数据类型都有基本单位,比如int类型的数据就是32bit,那么每次我们都只能传输两个int类型的数据。如果我们要传一个大的字符串1wbit的话需要传输5000次。有了内存以后我们一个扇区(4kb) 的数据传输到内存,大大减少磁盘的读取次数,提示效率。

内存的基本存储单元是也1字节或两字节(根据内存的不同而不同)。但是操作系统为其划分了叶块。一个叶块单元也是4Kb。这样当cpu发来一个地址信息,磁盘就马上将一整个叶块的数据全部发送到内存。这样做当读取大量数据的时候就会非常快,但是读取少量数据的时候就会造成浪费。所以我们才设计磁盘当中存储文件,在内存当中去存储变量

操作系统重现划分扇区的目的:

我们的磁盘只能提供磁道和基本的存储单元,扇区是操作系统默认划分的。在最开始的时候我们数据的读取类似于数据的当时一个数据单元代表一个数据,只需要做好分割就行。

当我们更改了默认的存储单元我们就要用地址进行记录。这就意味着我们每一个4kb的存储单元,只要用了1Kb,剩下的3Kb就不能存储数据了,一个存储单元只能存一份数据。这也就意味着我们的磁盘上只能存储文件,而无法存储其他类型的数据。

 

当我们在定义一个int类型的数据的时候,每个数据都会占据一个叶块单元。原因也是因为定位不到。那么假如我们现在有10个int类型的变量那就意味着需要占据10个4kb,也就是40kb,但是如果我们将一个int类型的数据,那么这些数据将全部放到一个叶块当中。内存的逻辑是有多少个数据就要分配多少叶块,假如我们将这些数据都封装到一个数组当中,那么就会大大减少我们的内存损耗,这种逻辑叫做--buffer

举例

假如我们现在有10个int类型的变量那就意味着需要占据10个叶块。

但是如果我们用一个数据去存储,他就会存储在一个叶块当中,由于每个int类型的数据都只会占据大小相同的内存空间,我们计算机只会记录每个变量的开头的地址,根据数组当中每个基本类型数据的大小进行计算,取出相应的bit数据。在这个地方我们可以看到数组类型的存储可以100%的打败链式存储。这也就是为什么操作系统的实现栈或队列全是数组类型的存储

 

ps:这里边有两个地址的概念,一个是操作系统分配的内存地址还有一个是内存还以一个是自带的内存地址。所以我们在输出的时候输出的是操作系统分配到内存地址。

我们在学习链表的时候有的时候会发现:链表的内存空间是连续的,但是这里的空间连续指定是我们叶块的地址连续,这是因为我们的操作系统内存分配在内存空间足够的情况下回尽量分配连续的内存空间。所以在空间足够的情况下链表的空间也是连续的,但是链表和数组不一样,数组是消耗的连续的内存空间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值