精华内容
下载资源
问答
  • 缓存内存的区别

    万次阅读 多人点赞 2017-04-18 07:50:17
    但是还是很多人不知道缓存什么地方,缓存是做什么用的  其实,缓存是CPU的一部分,它存在于CPU中  CPU存取数据的速度非常的快,一秒钟能够存取、处理十亿条指令和数据(术语:CPU主频1G),而内存就慢很多,...
    许多人认为,“缓存”是内存的一部分 
    许多技术文章都是这样教授的 
    但是还是有很多人不知道缓存在什么地方,缓存是做什么用的 
    其实,缓存是CPU的一部分,它存在于CPU中 
    CPU存取数据的速度非常的快,一秒钟能够存取、处理十亿条指令和数据(术语:CPU主频1G),而内存就慢很多,快的内存能够达到几十兆就不错了,可见两者的速度差异是多么的大 
    缓存是为了解决CPU速度和内存速度的速度差异问题 
    内存中被CPU访问最频繁的数据和指令被复制入CPU中的缓存,这样CPU就可以不经常到象“蜗牛”一样慢的内存中去取数据了,CPU只要到缓存中去取就行了,而缓存的速度要比内存快很多 
    这里要特别指出的是: 
    1.因为缓存只是内存中少部分数据的复制品,所以CPU到缓存中寻找数据时,也会出现找不到的情况(因为这些数据没有从内存复制到缓存中去),这时CPU还是会到内存中去找数据,这样系统的速度就慢下来了,不过CPU会把这些数据复制到缓存中去,以便下一次不要再到内存中去取。 
    2.因为随着时间的变化,被访问得最频繁的数据不是一成不变的,也就是说,刚才还不频繁的数据,此时已经需要被频繁的访问,刚才还是最频繁的数据,现在又不频繁了,所以说缓存中的数据要经常按照一定的算法来更换,这样才能保证缓存中的数据是被访问最频繁的 
    3.关于一级缓存和二级缓存 
    为了分清这两个概念,我们先了解一下RAM 
    ram和ROM相对的,RAM是掉电以后,其中才信息就消失那一种,ROM在掉电以后信息也不会消失那一种 
    RAM又分两种, 
    一种是静态RAM,SRAM;一种是动态RAM,DRAM。前者的存储速度要比后者快得多,我们现在使用的内存一般都是动态RAM。 
    有的菜鸟就说了,为了增加系统的速度,把缓存扩大不就行了吗,扩大的越大,缓存的数据越多,系统不就越快了吗 
    缓存通常都是静态RAM,速度是非常的快, 
    但是静态RAM集成度低(存储相同的数据,静态RAM的体积是动态RAM的6倍), 
    价格高(同容量的静态RAM是动态RAM的四倍), 
    由此可见,扩大静态RAM作为缓存是一个非常愚蠢的行为, 
    但是为了提高系统的性能和速度,我们必须要扩大缓存, 
    这样就有了一个折中的方法,不扩大原来的静态RAM缓存,而是增加一些高速动态RAM做为缓存, 
    这些高速动态RAM速度要比常规动态RAM快,但比原来的静态RAM缓存慢, 
    我们把原来的静态ram缓存叫一级缓存,而把后来增加的动态RAM叫二级缓存。 
    一级缓存和二级缓存中的内容都是内存中访问频率高的数据的复制品(映射),它们的存在都是为了减少高速CPU对慢速内存的访问。 
    通常CPU找数据或指令的顺序是:先到一级缓存中找,找不到再到二级缓存中找,如果还找不到就只有到内存中找了

    ps: 小白未能找到最原创的源问,放一个小白看到的地址:http://blog.csdn.net/java_xxoo_android/article/details/43959411
    展开全文
  • 内存缓存之间有什么区别?

    万次阅读 2012-03-04 18:53:48
    缓存是集成于CPU当中,作为CPU运算的存储支撑。由于CPU芯片面积和成本的因素来考虑,缓存都很小。现在一般的缓存不过几M。CPU内缓存的运行频率极高,一般是和处理器同频运作,工作... 内存则是作为CPU硬盘间的存储
     
    
    	缓存是集成于CPU当中,作为CPU运算的存储支撑。由于CPU芯片面积和成本的因素来考虑,缓存都很小。现在一般的缓存不过几M。CPU内缓存的运行频率极高,一般是和处理器同频运作,工作效率远远大于系统内存和硬盘。实际工作时,CPU往往需要重复读取同样的数据块,而缓存容量的增大,可以大幅度提升CPU内部读取数据的命中率,而不用再到内存或者硬盘上寻找,以此提高系统性能。
    	内存则是作为CPU与硬盘间的存储支撑。插在主板的内存槽中。现在内存一般为1~2G。即1G=1024M
    它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。 内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。
    展开全文
  • 内存缓存 高速缓存(英语:cache,英语发音:/kæʃ/ kash [1][2][3],简称缓存),其原始意义是指访问速度比一般随机存取存储器(RAM)快的一种RAM,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM...

    内存缓存

    高速缓存(英语:cache,英语发音:/kæʃ/ kash [1][2][3],简称缓存),其原始意义是指访问速度比一般随机存取存储器(RAM)快的一种RAM,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。

    原理

    Cache一词来源于1967年的一篇电子工程期刊论文。其作者将法语词“cache”赋予“safekeeping storage”的涵义,用于电脑工程领域。

    当CPU处理数据时,它会先到Cache中去寻找,如果数据因之前的操作已经读取而被暂存其中,就不需要再从随机存取存储器(Main memory)中读取数据——由于CPU的运行速度一般比主内存的读取速度快,主存储器周期(访问主存储器所需要的时间)为数个时钟周期。因此若要访问主内存的话,就必须等待数个CPU周期从而造成浪费。

    提供“缓存”的目的是为了让数据访问的速度适应CPU的处理速度,其基于的原理是内存中“程序执行与数据访问的局域性行为”,即一定程序执行时间和空间内,被访问的代码集中于一部分。为了充分发挥缓存的作用,不仅依靠“暂存刚刚访问过的数据”,还要使用硬件实现的指令预测与数据预取技术——尽可能把将要使用的数据预先从内存中取到缓存里。

    CPU的缓存曾经是用在超级计算机上的一种高级技术,不过现今电脑上使用的的AMD或Intel微处理器都在芯片内部集成了大小不等的数据缓存和指令缓存,通称为L1缓存(L1 Cache即Level 1 On-die Cache,第一级片上高速缓冲存储器);而比L1更大容量的L2缓存曾经被放在CPU外部(主板或者CPU接口卡上),但是现在已经成为CPU内部的标准组件;更昂贵的CPU会配备比L2缓存还要大的L3缓存(level 3 On-die Cache第三级高速缓冲存储器)。

    概念的扩充

    如今缓存的概念已被扩充,不仅在CPU和主内存之间有Cache,而且在内存和硬盘之间也有Cache(磁盘缓存),乃至在硬盘与网络之间也有某种意义上的Cache──称为Internet临时文件夹或网络内容缓存等。凡是位于速度相差较大的两种硬件之间,用于协调两者数据传输速度差异的结构,均可称之为Cache。

    地址镜像与变换

    主条目:CPU缓存#组相联
    由于主存容量远大于CPU缓存的容量,因此两者之间就必须按一定的规则对应起来。地址镜像就是指按某种规则把主存块装入缓存中。地址变换是指当按某种镜像方式把主存块装入缓存后,每次访问CPU缓存时,如何把主存的物理地址(Physical address)或虚拟地址(Virtual address)变换成CPU缓存的地址,从而访问其中的数据。

    缓存置换策略

    主条目:CPU缓存#置换策略、分页和缓存文件置换机制
    主存容量远大于CPU缓存,磁盘容量远大于主存,因此无论是哪一层次的缓存都面临一个同样的问题:当容量有限的缓存的空闲空间全部用完后,又有新的内容需要添加进缓存时,如何挑选并舍弃原有的部分内容,从而腾出空间放入这些新的内容。解决这个问题的算法有几种,如最久未使用算法(LRU)、先进先出算法(FIFO)、最近最少使用算法(LFU)、非最近使用算法(NMRU)等,这些算法在不同层次的缓存上执行时拥有不同的效率和代价,需根据具体场合选择最合适的一种。

    磁盘缓存

    16MB缓冲区的硬盘
    磁盘缓存(Disk Buffer)或磁盘快取(Disk Cache)实际上是将下载到的数据先保存于系统为软件分配的内存空间中(这个内存空间被称之为“内存池”),当保存到内存池中的数据达到一个程度时,便将数据保存到硬盘中。这样可以减少实际的磁盘操作,有效的保护磁盘免于重复的读写操作而导致的损坏。

    磁盘缓存是为了减少CPU透过I/O读取磁盘机的次数,提升磁盘I/O的效率,用一块内存来储存存取较频繁的磁盘内容;因为内存的存取是电子动作,而磁盘的存取是I/O动作,感觉上磁盘I/O变得较为快速。

    相同的技巧可用在写入动作,我们先将欲写入的内容放入内存中,等到系统有其它空闲的时间,再将这块内存的资料写入磁盘中。

    大小

    现在的磁盘通常有32MB或64MB缓存。旧的硬盘则有8MB或16MB。

    浏览器例子

    http状态码

    200 from memory cache

    不访问服务器,直接读缓存,从内存中读取缓存。此时的数据时缓存到内存中的,当kill进程后,也就是浏览器关闭以后,数据将不存在。

    但是这种方式只能缓存派生资源。

    200 from disk cache

    不访问服务器,直接读缓存,从磁盘中读取缓存,当kill进程时,数据还是存在。

    这种方式也只能缓存派生资源

    304 Not Modified

    访问服务器,发现数据没有
    更新,服务器返回此状态码。然后从缓存中读取数据。

    以图片为例:

    访问-> 200 -> 退出浏览器
    再进来-> 200(from disk cache) -> 刷新 -> 200(from memory cache

    展开全文
  • 内存缓存>Redis缓存>数据库

    千次阅读 2018-03-14 21:00:49
    情况描述: 以下几张表,单据表(t_bill)、货物表(t_cargo)、原料表(t_raw_material)、配置表(t_configure),表关系如下: 一张单据对应多个货物信息,每种货物都自己对应的原料信息,货物和原料都...

    情况描述:

        有以下几张表,单据表(t_bill)、货物表(t_cargo)、原料表(t_raw_material)、配置表(t_configure),表关系如下:

        

    一张单据对应多个货物信息,每种货物都有自己对应的原料信息,货物和原料都有属于自己的配置信息。

    需求如下:

    当我查询一个单据信息的时候,会展示该单据下的所有货物信息,以及货物所属原料名称和配置信息,不是单纯的对象,是需要通过DTO转换的数据,意思就是说,货物信息、原料信息、配置信息需要组装成为一个DTO。

    按照常理来说,直接查询单据就可以级联查询出单据明细信息,这样做也无可厚非,但是忽略了一点,如果一张单据里面包含了成千上万的货物信息,成千上万的货物又对应的成千上万的原料,同时也对应了成千上万的配置信息,这个时候就会遇到数据量太大,导致前端请求超时问题。

    最开始的解决方案:

    用redis缓存货物和原料对应的配置信息,这样在查询货物和原料对应的配置信息时,可以先从redis中查询,如果有直接返回,如果没有则再去数据库查询,这样可以减少数据库的开销,提高查询速度,在一定程度上看减少前端超时的问题,但是随之而来又会有新的问题,那就是货物和原料对应的配置信息更新不及时的问题,意思就是说会存在脏数据问题,所以想到这些后续还需要更改更多代码,于是过段暂时放弃这种方式。

    第二种解决方案:

    在查询明细信息的时候,在代码中用HashMap的方式暂存数据,形式和redis相同,以key和value的形式在内存中保存数据,因为货物和原料中都是保存的配置信息的code,根据code拿到name,返回给前端,所以查询的时候,先会去map中找,如果存在,则直接返回name,如果不存在,再去数据库中查询,然后add进map中,这样在后续的查询中,效率会更高,当然这带来不利的因素就是内存会被增加,所以这个只是暂时的解决方案。

    我写这篇文章的目的在于想告诉大家,内存的性能大于Redis缓存,Redis缓存性能大于数据库直接查询。

    展开全文
  • 内存缓存

    千次阅读 2019-03-20 10:21:30
    内存缓存 什么时候用 愿意消耗一些内存空间来提升速度 预料某些数据会被查询多次以上 缓存中存放的数据不会超过内存容量(应用程序的本地缓存,不会把数据存储到文件或服务器上) 可用方式 Google Guava Cache ...
  • Glide-内存缓存与磁盘缓存

    万次阅读 多人点赞 2017-02-14 11:48:39
    前言:这一节我们将讲到Glide的内存缓存和磁盘缓存(网上流传的比较广的几篇文章都是直接从是一篇译文中拷贝过去的,那篇译文在许多地方都翻译错误了,其中很大的一个错误就是关于缓存一块的问题)Glide 系列目录 ...
  • 内存缓存、虚拟内存的区别

    千次阅读 2018-12-05 20:27:29
    其中对内存的管理是系统的最主要的职责,怎么样使有限的内存用在刀刃上,怎么要保证系统本身所需的内存(以防止死机,在win2000和winxp里这一点已经做的非常好了  缓存是CPU的一部分,它存在于CPU中  CPU存取数据...
  • CPU缓存与Java内存模型

    千次阅读 2018-09-19 20:45:47
    CPU多级缓存 局部性原理: 1)时间局部性:如果某个数据被访问,那么在不久的将来它很可能再次被访问;...这行数据有效,数据被修改了,和内存中的数据不一致,数据只存在于本Cache中。 E(Exclus...
  • Android内存缓存:手把手教你学会LrhCache算法

    千次阅读 多人点赞 2018-09-06 08:52:26
    内存缓存知识在Android开发中实现重要 本文将全面介绍内存缓存的所有相关知识(含LrhCache算法、其原理等),希望您们会喜欢 目录 1. 简介 下面,将详细介绍 LrhCache算法 2. LrhCache算法 ...
  • Linux内存缓存解读

    千次阅读 2018-01-06 11:17:09
    Linux内存缓存解读 在Windows下资源管理器查看内存使用的情况,如果使用率达到80%以上,再运行大程序就能感觉到系统不流畅了,因为在内存紧缺的情况下使用交换分区,频繁地从磁盘上换入换出页会极大地影响系统...
  • 磁盘缓存和内存缓存的区别

    万次阅读 多人点赞 2015-08-23 22:49:50
    内存缓存高速缓存(英语:cache,英语发音:/kæʃ/ kash [1][2][3],简称缓存),其原始意义是指访问速度比一般随机存取存储器(RAM)快的一种RAM,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM...
  • Java三个类实现内存缓存

    万次阅读 2016-08-06 14:51:21
    一个需求,本来打算用redis来做,但是发现redis的list不支持某一项超时设置, 所以就用java自己写了一个简单的缓存,操作类似redis,总共只有3...简单的内存缓存实现,实现group概念,一个group里面是个有序的集合,
  • 内存映射缓存

    千次阅读 2017-03-03 21:45:46
    MappedByteBuffer是java nio引入的文件内存映射方案,读写性能极高。NIO最主要的就是实现了对异步操作的支持。其中一种通过把一个套接字通道(SocketChannel)注册到一个选择器(Selector)中,不时调用后者的选择(s...
  • 缓存内存的理解

    千次阅读 2019-03-27 15:23:29
    1、因为缓存只是内存中少部分数据的复制品,所以CPU到缓存中寻找数据时,也会出现找不到的情况(因为这些数据没有从内存复制到缓存中去),这时CPU还是会到内存中去找数据,这样系统的速度就慢下来了,不过CPU会把...
  • CPU,缓存内存,外存全解析

    千次阅读 2020-07-05 20:25:27
    被扩充概念:如今缓存的概念已被扩充,不仅在CPU和主内存之间Cache,而且在内存和硬盘之间也Cache(磁盘缓存),乃至在硬盘网络之间也某种意义上的Cache──称为Internet临时文件夹或网络内容缓存等。...
  • SQL Server 缓存清除与内存释放

    万次阅读 2018-05-23 13:43:52
    这是由于他对于内存使用的策略是多少闲置的内存就占用多少,直到内存使用虑达到系统峰值时(预留内存根据系统默认预留使用为准,至少4M),才会清除一些缓存释放少量的内存为新的缓存腾出空间。这些内存一般都是...
  • Java 内存缓存工具类

    千次阅读 2019-08-27 18:25:48
    /** * */ package cn.xdl.utils.common; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * @author liurui * @date 2019年8月27日 */ public class ... // 缓存...
  • java内存模型

    千次阅读 多人点赞 2018-11-09 13:09:55
    java内存模型 下图就是java内存模型,但是一般讨论的时候不会画这个图,一般画的是java内存模型抽象结构图(在下文)。Thread Stack就是java内存模型抽象结构图中的本地内存,Heap就是java内存模型抽象结构图中的主...
  • Java中缓存之内存缓存

    万次阅读 2016-04-08 17:04:05
    Java中缓存之内存缓存 1.缓存为什么要存在  应用服务器资源是有限的,数据库每秒中接受请求的次数也是有限的。如果利用有限的资源来提供尽可能大的吞吐量呢,一个办法:减少计 算量,缩短请求流程(减少网络io或者硬盘...
  • 服务器内存缓存清理

    千次阅读 2020-04-27 10:45:26
    1、内存查看 free -h #以GB为单位展示当前系统内存数据 ...2、直接清除缓存 echo 1 > /proc/sys/vm/drop_caches echo 2 > /proc/sys/vm/drop_caches echo 3 > /proc/sys/vm/drop_caches #说明 #ec...
  • CPU、缓存内存和本地磁盘的关系

    千次阅读 多人点赞 2018-07-10 14:20:09
    CPU CPU是中央处理器的简称,它可以从内存缓存中读取指令,放入指令寄存器,并能够发出控制指令来完成一条指令的执行。但是CPU并不能直接从硬盘中读取程序或数据。内存 内存作为CPU直接进行沟通的部件,所有的...
  • 缓存使用内存很大的解决方法

    千次阅读 2019-04-30 10:52:52
    从上图可以发现缓冲占用了12G的内存, 那要怎么解决一下呢? 首先sync 强制将缓存写到磁盘中 a)清理pagecache(页面缓存) # echo 1 > /proc/sysm/drop_caches 或者 # sysctl -w vm.drop_caches=1 b)清理...
  • CPU、内存缓存的关系

    千次阅读 2019-01-10 17:06:30
    Cache也是我们经常遇到的概念,也就是平常看到的一级缓存(L1 Cache)、二级缓存(L2 Cache)、三级缓存(L3 Cache)这些数据,它位于CPU与内存之间,是一个读写速度比内存更快的存储器。当CPU向内存中写入或读出数据时...
  • 锁的实现其实还必须实现一个语义,也就是内存屏障。内存屏障主要用于防止指令重排而导致的无法预测的情况。代码经过编译器生成的指令并不一定都是按着我们原先的想法来生成的,可能经过优化等情况进行了指令的重排,...
  • Discuz! 内存缓存机制使用方法

    千次阅读 2017-03-21 10:19:03
     缓存层的引入是为了解决MYSQL自身对高并发处理的性能瓶颈,目前产品缓存层采用主流的Key-Value对形式,内存级的缓存产品很多,支持的内存优化接口 Memcache、eAccelerator、Alternative PHP Cache(APC)、Xcache...
  • 冯诺依曼计算机模型 1. 控制器(Control) 2. 运算器(Datapath) 3. 存储器(Memory) 4. 输入(Input system) ...CPU的结构主要由运算器、控制器、寄存器三大块...而控制器就是中央机构的领导小组,针对不同需要,给...
  • Q:为什么一般js和图片文件会放到内存缓存,css 放在硬盘缓存? 样式表一般在磁盘中,不会缓存到内存中去,因为CSS样式加载一次即可渲染出网页。 但是, 脚本却可能随时会执行 ,如果脚本在磁盘当中,在执行该...
  • //获取字符串缓存 ViewBag.sbname = MemoryCacheService.GetCacheValue("sname"); //存入泛型列表 List<TsetModel> list = new List(); for (int i = 0; i ; i++) { TsetModel model = new TsetModel(); ...
  • Linux的缓存内存(cache memory)

    万次阅读 2018-01-27 14:55:37
    其实LinuxWin的内存管理不同,会尽量缓存内存以提高读写性能,通常叫做Cache Memory。 为什么Linux系统没运行多少程序,显示的可用内存这么少?其实LinuxWin的内存管理不同,会尽量缓存内存以提高读写性能,...
  • Java内存模型(JMM)是一个概念模型,底层是计算机的寄存器、缓存内存、主内存和CPU等。 多处理器环境下,共享数据的交互硬件设备之间的关系: JMM: 从以上两张图中,谈一谈以下几个概念: 1.缓存一致性协议...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 948,767
精华内容 379,506
关键字:

内存与缓存有什么不同