做为一个程序员,内存的这些硬核知识你必须懂!

咱们以前讲过CPU,也说了CPU和内存的那点事儿,今天咱就再来讲说有关内存,做为一个程序员,你必需要懂的哪那些硬核知识!java

大白话聊一聊,很重要!

先来大白话的跟你们聊一聊,咱们这里说的内存啊,其实就是说的咱们电脑里面的内存条,因此嘞,内存就是内存条,数据要放在这上面才能被cpu读取从而作运算,还有硬盘,就是电脑中的C盘啥的,一个程序须要运行的话须要向内存申请一块独立的内存空间,这个程序自己是存放在硬盘上的,申请完内存以后会存放在内存上。程序员

若是一个程序不常用,操做系统会把这个程序的数据从内存上移动到硬盘上,若是这个程序再次被唤醒,操做系统会再次将硬盘上的数据从新交换到内存上,这个时候能够听到硬盘吱吱的响😂web

好比咱们使用移动硬盘的时候,在电脑上打开移动硬盘上的文件,会听见移动硬盘响起来,这个就是在读取硬盘上的文件,这个效率实际上是很低的​编程

内存究竟是个啥?

上面咱们说了,内存就是内存条,那么这句话准确吗?确定有人说,不对,什么内存就是内存条啊,净是瞎扯😒,那究竟是不是呢?其实还真不是,那我为啥还那样说,形象啊,有助于你理解啊😂,接下来我们就来深挖一下,事后,你就明白了!微信

先从内存条说说

前面说过了,内存条嘛,做为程序员的咱们确定都知道,就是那短短的扁扁的一个小电路板,并且还不便宜,对的,实际存在的这个内存设备也就是咱们说的内存条,它是一个电子元件,内存的实质是内存IC(后面会详细说),这个IC就是集成电路的意思。dom

内存条不会忘了长啥样吧?来个图svg

在这里插入图片描述
我以前常常买金士顿的😁学习

内存就是内存条?

不过嘞,咱们再详细的来讲,内存实际上是个比较广的概念,啥意思嘞,你说这个内存,碰到杠精就会说,你说的内存是物理内存仍是虚拟内存啊,咱们这里说的内存确定是与咱们日常写代码有密切关系的,也就是保存咱们程序数据为咱们的程序运行提供临时存储的地方,基于此,咱们这里来明确下咱们这里说的内存编码

咱们这里说的内存实际上说的是指物理内存,也就是实际存在的一个设备,一般来讲就是指咱们安装内存条而得到的存储空间,咱们使用它的主要做用就是在计算机运行的时候为操做系统和各类程序提供一种临时存储。spa

如今知道咱们这里说的内存通常是指物理内存,咱们习惯了也就直接叫内存了,这个内存更为正式的来讲是随机存取存储器,英文名称是Random Access Memory,缩写就是取首字母也就是RAM,因此啊记住了,之后再看到RAM就是指的内存,也就是随机存取存储器,另外它还叫作主存,也就是主要的存储器,是电脑中最主要的存储器,由于它是直接与CPU进行数据交换,读写速度较快,用来加载各类各样的程序和数据来供CPU直接运行与使用。

如今简单总结下,做为程序员来讲,咱们须要知道的内存指的是可以与CPU直接进行数据交换的存储器,放在电脑上就是内存条,正式的名字叫作随机存取存储器,也叫作主存,是电脑中最主要的存储器,英文缩写是RAM

内存?是否是还有外存?

内存和外存?这个咋理解?内存安装在里面,外存安装在外面?不对吧,内存条是安装在电脑内部的,硬盘也是安装在电脑内部的啊?

这里的内存和外存可不是这样理解的,简单来讲,内存就是断电的话保存的数据会丢失,对应的外存断电后里面保存的数据不会丢失。

DDR3?DDR4?

这个你们熟悉吧,咱们要是换内存条的话必定要看看咱们的电脑支持是哪种,否则就是白花钱啊,我以前就买错过一次,源于本身的太自信😂

咱们已经知道了啥是内存,也知道了咱们这里的内存也是主存,RAM,它们都是一个品种,同样的,这个RAM是通常的随机存取存储器,除此以外还有DRAM,这又是啥嘞,RAM是随机存取存储器,这个DRAM是动态随机存取存储器,对应的还有SRAM叫作静态存取存储器

DRAM结构简单,单位体积内容量高成本低,可是访问速度慢,耗电大,相应的SRAM结构复杂,成本高等。不管DRAM仍是SRAM都属于内存,也就是断电会丢失数据,综合来讲DRAM的性价比比较高,扩展性也很好,因此就成了如今广为流行的电脑主存,

而后你还要知道SDRAM,这是啥嘞,DRAM是动态随机存取存储器,SDRAM是同步动态随机存取存储器,也就是比DRAM更牛,升级版,而后还有DDR SDRAM,不用说,这确定是SDRAM的升级版,这个叫双倍数据率同步动态随机存取存储器,哈哈,这名字能够的,继续,还有DDR3 SDRAM,知道这个是啥不,对的,第三代双倍数据率同步动态随机存取存储器,哈哈,还有DDR4 SDRAM,知道了吧,那么咱们电脑中的DDR3和DDR4知道怎么回事了吧。

内存的本来模样(物理机制)

咱们以前已经说过了内存就是主存,也叫作随机存取存储器,缩写是RAM,而后还说了什么DRAM,SRAM而后还有DDR SDRAM等等,这些其实都是内存,只不过是各自的形式不一样,可是实实在在的一个电路板,就咱们能拿在手里的内存条,他们的物理机制其实都差很少,都有什么电源,地址信号,数据信号和控制信号等等,下面咱们来看一张图你就清楚了

内存引脚配置

啥是内存IC

这个内存IC其实就是内存中用来真正保存数据的地方,也就是内存提供的容量所在,所以,能够说内存的实质就是内存IC,先知道这些,咱们继续往下说,这个内存IC后面还会说的。

刚开始看这个图必定是懵的,那么咱们先来看一个问题,就是**这个图表明的内存可以存储多少数据呢?**接下来咱们就以这个图开始说,最后若是你能明白这个内存能存储多少数据,目的就达到了。

上图的各个标志已经有说明了,VCC和GND是连接电源的地方,通上电以后这玩意就带电了,咱们以前应该知道,数据都是以二进制的形式存放在内存中的,也就是0和1,这个是通识,那么这个0和1是怎么表示的呢?

看这个图,当VCC和GND通上电之后,就能够给其余引脚传递1或者0的信号,这里的引脚就是A0-A9,这是地址信号引脚,D0-D7这是数据信号引脚,1或者0是根据电压来表示的。

一般嘞,+5V的直流电压表示1,0V就是0,也就是说啊,通上电之后嘞,这里的数据信号引脚D0-D7这八个引脚多是+5V或者是0V,也就是能够表示0或者1,一个引脚至关于一位,这位上能够是0或者1,而后这八个引脚均可以表示对应的0或者1,这样就能够造成一个八位的用0和1表示的数据,这其实就是二进制啊。

D0-D7能够表示具体的数据,这也是存放在内存中的数据的底层表现形式,一样的,上面的地址信号引脚也是同样的道理,每一个引脚能够表示1或者0,这样地址信号引脚和数据信号引脚肯定之后,地址信号引脚组成的0和1的这个数据就叫作咱们熟知的内存地址,根据它咱们就能够找到数据信号引脚表明的数据了。

上面说的可能有点小难懂,不理解的多读几遍,对照着图哦

内存IC的容量怎么看

那么这个内存能够存储多少个数据嘞,咱们知道数据信号引脚来表示具体的数据,须要经过地址信号表示的二进制数据来找到它,也就是说每一个地址信号表明的的数据是对应着一个数据信号引脚表示的真实数据的,因此嘞,地址信号引脚能够表示多少个数据不就表明这个内存能够存放多少数据嘛,这里的地址信号引脚有A0-A9,也就是10个,所以它能够表示0000000000----1111111111之间的数据,有多少嘞,一共有1024个。

因此啊,这个内存能够存储1024个1字节的数据,对了,数据信号引脚八个表明一个字节的数据,也就是一个引脚表明1位,也就是1bit,8bit就是一个字节,也便是1byte,而后1024byte又等于1KB,因此,这个内存IC最终的容量就是1KB

你可能会说,这也过小了点了吧,确实小,做为程序员的咱们,电脑中使用的内存最低也得8GB吧,这得多少个内存IC啊,这里你可能会有点迷糊,我详细的说下。

内存引脚配置

再来讲内存IC

知道这个吧,咱们把这个叫作内存IC,IC是集成电路的意思,这个内存IC其实有两种,你只须要知道其中一种叫作内存颗粒或者内存芯片的就行,咱们这里说的内存IC更为准确来讲其实就是内存颗粒,是镶嵌在内存条上的,看个图就知道了
在这里插入图片描述
哈哈,弄来弄去就这两张图😂,这个是内存条,都认识吧,上面那黑的一块一块的其实就是内存颗粒,也就是咱们上面说的内存IC,那么你可能会说,上面那个内存IC的容量才1KB,咱们日常用的话最低也得8GB,这也镶不下啊,若是都是容量1KB的内存IC,固然镶不下,所以容量更大的内存条则须要容量更大的内存IC,这个口蹄疫经过内存IC上的引脚数量来实现,不过这个也更加复杂有难度,固然,容量越大,内存条也越贵啊,就是这么个道理。

程序员眼中的内存

上面咱们把内存稍微深刻的说了一遍,相信你看下来必定有很多收获吧,固然,我不排除你没有看懂😂,若是真的没有看懂,能够多看几遍,固然,也许你是个大神,发现我哪里说错了,若是是这样,还劳烦指教一下哦😁

那么咱们做为一个程序员,天天就是写写代码,咱们须要知道什么内存IC,什么这信号那引脚的吗?

其实吧,我觉不是颇有必要,可是知道总比不知道强,不过下面的这些你可必定要知道啊。

如何形象的去理解内存

在以前的文章中曾经介绍过内存,那时候说咱们能够把内存当作一个个的小格子,就像这样

在这里插入图片描述
这样的一个个的小格子,里面主要存放数据和一些指令,而后每一个格子还有对应的编号,这个编号就叫作内存地址,想一想,这里的编号是否是就是上面说的内存IC中的地址信号引脚组成的数据,而后每一个格子中存放的数据和指令就是经过内存IC中的数据信号引脚来表示的。而后你还能够想象成,每一个格子能够存放1字节的数据,也就是内存IC中的那八个信号引脚,对应起来了吧,那么一个容量为1KB的内存(只含有一个内存颗粒,容量就为1KB),这样的格子就有1024个,画成图就是这样的

在这里插入图片描述
而后咱们还知道在java中是有数据类型的,数据类型的做用简单说就是决定数据在内存中暂用多少内存空间,这里也就是要占用多少个小格子,咱们知道在java中int表明整型占4个字节,这里一个格子能够保存1字节的数据,那么int就须要占用4个小格子。对于做为程序员的咱们,就应该这样来理解内存,这样更加形象,有助于咱们更好的编程。

这些硬核真的硬?

看到这里,你想一下,了解了上述知识,下载在当你写下一个

int a = 10;

的时候,你是否是会想,int向内存申请四个小格子,每一个格子有对应的内存地址,而后10转换成二进制数据存放在这些小格子里,其实是内存IC中的数据信号引脚按照转换后的二进制,也就是0和1来决定每一个引脚是+5V直流电压仍是0V电压,固然,内存地址即便地址信号引脚啦……

而后巴拉巴拉想一大堆,你看,了解了这些关于内存的硬核知识,咱们写代码是否是就不只知其然还知其因此然了😁

好啦,关于内存,咱就先聊这些,这可都是你必须知道的硬核知识啊,对了,推荐和如下几篇一块儿食用,风味更佳!

做为一个程序员,CPU的这些硬核知识你必须会!

一个程序在计算机中是如何运行的?超级干货!!!

相信看过这三篇文章之后,你必定能收获不少干货!,喜欢的话别忘了点赞哦!😍

感谢阅读

大学的时候选择了自学Java,工做了发现吃了计算机基础很差的亏,学历不行这是没办法的事,只能后天弥补,因而在编码以外开启了本身的逆袭之路,不断的学习Java核心知识,深刻的研习计算机基础知识,全部心得所有书写成文,整理成有目录的PDF,持续原创,PDF在公众号持续更新,若是你也不甘平庸,那就与我一块儿在编码以外,不断成长吧!

其实这里不只有技术,更有那些技术以外的东西,好比,如何作一个精致的程序员,而不是“屌丝”,程序员自己就是高贵的一种存在啊,难道不是吗?

很是欢迎你的加入,将来的日子,编码以外,有你有我,一块儿作一个人不傻,钱不少,活得久的快乐的程序员吧!

回复关键字“PDF”,获取技术文章合集,已整理好,带有目录,欢迎一块儿交流技术!

另外回复“庆哥”,看庆哥给你准备的惊喜大礼包,只给首次关注的你哦!

任何问题,能够加庆哥微信:H653836923,另外,我有个交流群,我会***不按期在群里分享学习资源,不定时福利***,感兴趣的能够说下我邀请你!

对了,若是你是个Java小白的话,也能够加我微信,我相信你在学习的过程当中必定遇到很多问题,或许我能够帮助你,毕竟我也是过来人了!

在这里插入图片描述

感谢各位大大的阅读🥰