cache的功能是什么?

cache的功能是什么?,第1张

解释:

n 隐藏处,秘窖;贮藏物,隐藏物(尤指武器);高速缓冲存储器

v 匿藏,隐藏(尤指武器);把(数据)存入高速缓冲存储器;给(硬件)装备高速缓存

用法:

DNS cache poisoning 域名服务器缓存污染 ; DNS快取记忆体下毒

Web Cache 网页快照 ; 网页缓存 ; 速缓存 ; web缓存

format cache 格式化缓存分区 ; 格式缓存 ; 格局化缓存分区 ; 格式化缓存区

cache

读法:

英 [kæʃ]  美 [kæʃ]

近义词:

hide

读法:

英 [haɪd]  美 [haɪd]

解释:

v 把……藏起来,隐藏;躲藏,躲避;遮住,遮挡;掩盖,隐瞒

n (可观察鸟兽行动的)隐匿处,埋伏处;兽皮;<非正式>(困境中的)生命,人身安全

用法:

hide and seek 捉迷藏 ; 躲猫猫 ; 藏猫猫

Nowhere to Hide 无处躲藏 ; 强捕 ; 无处可逃

Hide-and-Seek 躲猫猫 ; 藏猫猫 ; 游戏名称

没关系,free虽然少,因为都被cached了。我的机器24G内存,可以cache22G,这是linux内存管理的机制。并不影响使用,如果linux发现内存不够用,会自己释放cache,增加内存的。

java清除缓存办法:
1禁止客户端缓存要在<head>中加入类似如下内容:
<META >SQL Server 2008 或者R2的默认内存分配是2147483647MB, 差不多算是无穷大,对于系统内存的管理策略是有多少占多少。SQLserver会把所有处理过的SQL *** 作缓存在内存里,这样就不用总去读硬盘了。但是如果长时间运行SQL Server, 系统内存被用的差不多,再开启其他程序就有可能会报内存不足。这时候就需要释放内存缓存啦。一般我用以下两种办法:
很简单,打开SQL Server configuration Manager,然后把SQL Server(MSSQLSERVER)重启一下,一般默认的instance 就是MSSQLServer,当然你如果装了其他的instance(实例)就选择相应的,例如MSSQLServer(SQLServLatin1), MSSQLServer(ARABIC)。
这种方法最简单有效,但是只能临时的清除SQLServer缓存所占的内存空间,时间长了SQLServer还会把内存占满。而且很重要的是这种方法不能在SQLserver有连接的情况下使用,那样会让正在使用SQLServer的用户暂时无法连接SQLServer,甚至导致程序处错误。而你作为管理员就……
第二种方法比较复杂,我也不是SQLServer高手,只是从网上学习得来的一些query:
DBCC FREEPROCCACHE
DBCC FREESESSIONCACHE
DBCC FREESYSTEMCACHE('All')
DBCC DROPCLEANBUFFERS
以上一段一般能释放缓存,(注意引号有的时候因为word文档里打不出英文的引号,最好拷到记事本里编辑一下)但是有的时候不是很管用。因为SQLserver不会因为Cache(缓存)释放了而释放内存,占了茅坑不一定XX。此命令只会让SQLServer不会继续占领新的内存,定期执行一下还可以。关键是还要释放一下内存。
通过以下Query 可以看出当前服务器所占内存情况
SELECT FROM sysdm_os_performance_counters
WHERE counter_name IN ('Target Server Memory (KB)','Total Server Memory (KB)')
Target Server Memory(KB)和 Total Server Memory(KB)字面意思所得就是目标和当前SQL Server所占的内存大小。
EXEC sp_configure 'show advanced options', 1
GO
EXEC sp_configure 'max server memory', 256
EXEC ('RECONFIGURE' )
WAITFOR DELAY '00:00:05'
EXEC sp_configure 'max server memory', 2147483647
EXEC ('RECONFIGURE' )
GO
EXEC sp_configure 'show advanced options', 0
GO
其实我用这几句也不是很奏效,时间一长还是可能会有内存不够的情况。

总的来说我的管理办法是:
装好了SQLServer之后立刻设置最大使用内存
EXEC sp_configure 'show advanced options', 1 -- 这句是打开advanced options
GO
EXEC sp_configure 'max server memory', 9216 -- 设置最大内存为9G,我们server 内存是16G的,留下7G足够了
EXEC ('RECONFIGURE' )
GO
EXEC sp_configure 'show advanced options', 0 --记得用完了把advanced options关掉
GO
过一段时间觉得不行了就执行一下
DBCC FREEPROCCACHE
DBCC FREESESSIONCACHE
DBCC FREESYSTEMCACHE('All')
DBCC DROPCLEANBUFFERS
这个清缓存也很头疼,不知道什么时候合适,就这样吧,管他呢,我又不是专家,出了问题大不了来机器不行。或者写个Procedure,用job定期执行。
没办法,SQLServer太霸道了,以上方法不是万全之策,建议还是把SQLServer放到一边单独用吧。

现在简单的来分析一下,首先,大家可以想一下,浏览器的缓存存放在哪里,如何在浏览器中判断强制缓存是否生效?
先看一下这张图

会发现在浏览器开发者工具的Network的Size栏会出现的三种情况:

状态码及区别:
from memory cache(内存中的缓存): 不访问服务器,一般已经加载过该资源且缓存在了内存当中,直接从内存中读取缓存。浏览器关闭后,数据将不存在(资源被释放掉了),再次打开相同的页面时,不会出现from memory cache。

from disk cache(是硬盘中的缓存): 不访问服务器,已经在之前的某个时间加载过该资源,直接从硬盘中读取缓存,关闭浏览器后,数据依然存在,此资源不会随着该页面的关闭而释放掉下次打开仍然会是from disk cache。

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

在浏览器中,浏览器会在js和等文件解析执行后直接存入内存缓存中,那么当刷新页面时只需直接从内存缓存中读取(from memory cache);而css文件则会存入硬盘文件中,所以每次渲染页面都需要从硬盘读取缓存(from disk cache)。

内存缓存(from memory cache)和硬盘缓存(from disk cache)特点
(1)内存缓存(from memory cache):内存缓存具有两个特点,分别是快速读取和时效性:
1、快速读取:内存缓存会将编译解析后的文件,直接存入该进程的内存中,占据该进程一定的内存资源,以方便下次运行使用时的快速读取。
2、时效性:一旦该进程关闭,则该进程的内存则会清空。
(2)硬盘缓存(from disk cache):硬盘缓存则是直接将缓存写入硬盘文件中,读取缓存需要对该缓存存放的硬盘文件进行I/O *** 作,然后重新解析该缓存内容,读取复杂,速度比内存缓存慢。

缓存原理
1、先查找内存,如果内存中存在,从内存中加载;
2、如果内存中未查找到,选择硬盘获取,如果硬盘中有,从硬盘中加载;
3、如果硬盘中未查找到,那就进行网络请求;
4、加载到的资源缓存到硬盘和内存;

执行顺序
现加载一种资源(例如:):
访问-> 200 -> 退出浏览器
重新进来-> 200(from disk cache) -> 刷新 -> 200(from memory cache)
附一张流程图梳理一下

这个文件夹是临时缓存文件夹,很多软件启动之后都会在这个文件夹里放一些缓存文件。这个很正常。
有这个缓存,会对你的服务器
使用频率
较高的软件有好处,
适当的做定期清理就OK,没必要太在意。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13497671.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-19
下一篇 2023-08-19

发表评论

登录后才能评论

评论列表(0条)

保存