×
嵌入式 > 存储技术 > 详情

二级缓存怎么清理或者关闭二级缓存的办法介绍

发布时间:2020-05-15 发布时间:
|

本文只要是关于二级缓存怎么清理或者关闭二级缓存的办法介绍,希望本文能让你对二级缓存有更深的理解。

二级缓存

CPU缓存(Cache Memory)位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。最初缓存只有一级,二级缓存(L2 CACHE)出现是为了协调一级缓存与内存之间的速度。二级缓存比一级缓存速度更慢,容量更大,主要就是做一级缓存和内存之间数据临时交换的地方用。实际上,现在Intel和AMD处理器在一级缓存的逻辑结构设计上有所不同,所以二级缓存对CPU性能的影响也不尽相同。

工作原理

缓存的工作原理是当CPU要读取一个数据时,首先从缓存中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就用相对慢的速度从内存中读取并送给CPU处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。

正是这样的读取机制使CPU读取缓存的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要读取的数据90%都在缓存中,只有大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需等待。总的来说,CPU读取数据的顺序是先缓存后内存。 最早先的CPU缓存是个整体的,而且容量很低,英特尔公司从Pentium时代开始把缓存进行了分类。当时集成在CPU内核中的缓存已不足以满足CPU的需求,而制造工艺上的限制又不能大幅度提高缓存的容量。因此出现了集成在与CPU同一块电路板上或主板上的缓存,此时就把 CPU内核集成的缓存称为一级缓存,而外部的称为二级缓存。一级缓存中还分数据缓存(Data Cache,D-Cache)和指令缓存(Instruction Cache,I-Cache)。二者分别用来存放数据和执行这些数据的指令,而且两者可以同时被CPU访问,减少了争用Cache所造成的冲突,提高了处理器效能。

怎么关闭二级缓存

解决方法:

打开电源后,出现CPU主频和内存容量时,按下DEL键,进入CMOS SETUP页面。

进入BIOS→Advanced BIOS Features(高级BIOS特征)

→CPU L1 & L2 Cache(CPU一级和二级缓存)

打开(Enabled)或关闭(Disabled)CPU内部缓存(L1)和外部缓存(L2);

(按Page UP/Down键转换)。

按Esc键退回到COMOS SETUP页面 将光标移动到SAVE&EXIT SETUP 键入Y并回车

怎么清理二级缓存

* save、update、saveOrupdate、load、get、list、query、Criteria方法都会填充二级缓存

* get、load、iterate会从二级缓存中取数据

* session.save(user) 如果user主键使用“native”生成,则不放入二级缓存。

(1)开启二级缓存

《property name=“cache.use_second_level_cache”》true《/property》

(2)为hibernate指定二级缓存的实现类

《property name=“cache.provider_class”》

org.hibernate.cache.OSCacheProvider

《/property》

(3)为OSCache缓存创建配置文件(需要hibernate_Advance_Surpport_lib)

src/oscache.properties

修改配置中的:

cache.capacity=1000 指定缓存可以容纳多少对象

(4)指明哪些类需要放入二级缓存,需要长期使用到的对象才有必要放入二级缓存

《class-cache class=“entity.PetInfo” usage=“read-only” /》 //不允许更新缓存中的对象

《class-cache class=“entity.PetInfo” usage=“read-write” /》 //允许更新缓存中的对象

或在orm文件中:

《class name=“entity.PetInfo” table=“PetInfo” schema=“dbo” catalog=“epet”》

《cache usage=“read-only”/》

。..

《/class》

(5)如果需要清除二级缓存,使用下面语法

sessionFactory.evict(User.class) 清除所有user

sessionFactory.evict(User.class,Id) 清除指定user

怎么使用二级缓存

*1.引入如下jar包。

ehcache-1.2.3.jar 核心库

backport-util-concurrent.jar

commons-logging.jar

*2.配置Hibernate.cfg.xml开启二级缓存

《property name=“hibernate.cache.use_second_level_cache”》true《/property》

*3.配置二级缓存的供应商

《property name=“hibernate.cache.provider_class”》org.hibernate.cache.EhCacheProvider《/property》

在大配置文件(hibernate.cfg.xml)中配置

《class-cache usage=“read-write” class=“cn.happy.entity.Student”/》

《collection-cache usage=“read-write” collection=“”/》

二级缓存保存数据原理:

结语

关于二级缓存的相关介绍就到这了,如有不足之处欢迎指正。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
关于电脑固态硬盘性能全面发挥的几个关键点详解