本發(fā)明專(zhuān)利技術(shù)公開(kāi)了一種通過(guò)弱引用技術(shù)消除緩存對(duì)象不一致性的裝置和方法,其中,通過(guò)弱引用技術(shù)消除緩存對(duì)象不一致性的裝置,包括弱引用字典管理器、緩存對(duì)象管理器和緩存對(duì)象獲取器,所述緩存對(duì)象管理器:將緩存區(qū)域內(nèi)淘汰的緩存對(duì)象加入到弱引用字典管理器;所述弱引用字典管理器:保存來(lái)自緩存對(duì)象管理器的緩存對(duì)象;所述緩存對(duì)象獲取器:在獲取緩存對(duì)象時(shí),首先獲取緩存區(qū)域內(nèi)保存的緩存對(duì)象,如緩存區(qū)域中獲取不到緩存對(duì)象,則從弱引用字典管理器中獲取緩存對(duì)象。以解決緩存對(duì)象不一致的問(wèn)題。
【技術(shù)實(shí)現(xiàn)步驟摘要】
【專(zhuān)利說(shuō)明】
本專(zhuān)利技術(shù)涉及數(shù)據(jù)處理領(lǐng)域,具體地,涉及一種通過(guò)弱引用技術(shù)消除緩存對(duì)象不一 致性的裝置和方法。
技術(shù)介紹
在面向?qū)ο蟮能浖_(kāi)發(fā)領(lǐng)域,往往會(huì)通過(guò)緩存機(jī)制來(lái)實(shí)現(xiàn)系統(tǒng)的高效率運(yùn)行。對(duì) 于以?xún)?nèi)存作為緩存對(duì)象存儲(chǔ)容器的緩存機(jī)制而言,由于內(nèi)存的大小有限,往往需要通過(guò)緩 存容量限制或緩存對(duì)象超時(shí)時(shí)間等機(jī)制來(lái)進(jìn)行緩存對(duì)象的淘汰,最常用的淘汰策略是LRU (LeastRecentlyUsed)算法。對(duì)于存在淘汰機(jī)制的緩存系統(tǒng)而言,一次用戶(hù)請(qǐng)求可能經(jīng)由 不同的程序組件進(jìn)行處理,若在此過(guò)程中發(fā)生了緩存對(duì)象的淘汰現(xiàn)象,則同一對(duì)象在內(nèi)存 中可能存在不同的版本,這種不一致性會(huì)對(duì)程序處理邏輯造成嚴(yán)重干擾。 以表1所示的員工調(diào)薪的處理程序?yàn)槔f(shuō)明:有表1可見(jiàn),由于不一致性的存在, id=l的員工本應(yīng)調(diào)薪到11800元,卻變成了 10800元。 申請(qǐng)?zhí)枮?00810105131.0的專(zhuān)利文件中,公開(kāi)課一種靈活使用弱引用緩存對(duì)象 的方法,該技術(shù)方案存在一個(gè)主要問(wèn)題:緩存完全依賴(lài)弱引用進(jìn)行管理,而不是將弱引用作 為對(duì)象淘汰后的重新獲取機(jī)制。在沒(méi)有強(qiáng)引用的情況下,弱引用對(duì)象會(huì)很快被GC回收掉, 該技術(shù)方案所設(shè)計(jì)的緩存并不能解決上述問(wèn)題。 表1 :員工調(diào)薪的處理程序表。
技術(shù)實(shí)現(xiàn)思路
現(xiàn)有技術(shù)存在的問(wèn)題關(guān)鍵在于:當(dāng)進(jìn)行緩存對(duì)象的淘汰時(shí),能否檢測(cè)到該緩存對(duì) 象正在被程序代碼使用,并不真正進(jìn)行淘汰。這樣,當(dāng)需要再次使用該對(duì)象時(shí),可以直接返 回內(nèi)存中被其它程序代碼所修改過(guò)的對(duì)象。 本專(zhuān)利技術(shù)的目的在于,針對(duì)上述問(wèn)題,提出一種通過(guò)弱引用技術(shù)消除緩存對(duì)象不一 致性的裝置和方法,以解決緩存對(duì)象不一致的問(wèn)題。 為實(shí)現(xiàn)上述目的,本專(zhuān)利技術(shù)采用的技術(shù)方案是: 一種通過(guò)弱引用技術(shù)消除緩存對(duì)象不一致性的裝置,包括弱引用字典管理器、緩存對(duì) 象管理器和緩存對(duì)象獲取器, 所述緩存對(duì)象管理器:將緩存區(qū)域內(nèi)淘汰的緩存對(duì)象加入到弱引用字典管理器; 所述弱引用字典管理器:保存來(lái)自緩存對(duì)象管理器的緩存對(duì)象; 所述緩存對(duì)象獲取器:在獲取緩存對(duì)象時(shí),首先獲取緩存區(qū)域內(nèi)保存的緩存對(duì)象,如緩 存區(qū)域中獲取不到緩存對(duì)象,則從弱引用字典管理器中獲取緩存對(duì)象。 優(yōu)選的,所述弱引用字典管理器采用key-value格式。 優(yōu)選的,所述緩存對(duì)象管理器,包括緩存對(duì)象包裝單元和緩存對(duì)象管理單元, 所述緩存對(duì)象包裝單元:使用弱引用包裝淘汰的緩存對(duì)象的值; 所述緩存對(duì)象管理單元:接收包裝對(duì)象的值,并在弱引用字典管理器內(nèi)查找是否存在 對(duì)應(yīng)緩存對(duì)象的key,如存在則使用包裝對(duì)象替換掉弱引用字典管理器內(nèi)對(duì)應(yīng)的緩存對(duì)象, 如不存在,則將包裝對(duì)象加入到弱引用字典管理器,包裝對(duì)象即使用弱引用包裝的淘汰的 緩存對(duì)象。 優(yōu)選的,所述緩存對(duì)象獲取器包括,緩存區(qū)域獲取單元和弱引用字典獲取單元; 所述緩存區(qū)域獲取單元:在緩存區(qū)域內(nèi)獲取緩存對(duì)象; 弱引用字典獲取單元:在弱引用字典管理器內(nèi)獲取緩存對(duì)象。 優(yōu)選的,所述弱引用字典獲取單元獲取緩存對(duì)象具體為: 通過(guò)緩存對(duì)象的Key檢索弱引用字典管理器; 如弱引用字典管理器內(nèi)存在對(duì)應(yīng)的包裝對(duì)象,則檢測(cè)包裝對(duì)象所引用的內(nèi)存對(duì)象是否 存活; 如管理器存活則返回存活的內(nèi)存對(duì)象。 同時(shí)本專(zhuān)利技術(shù)的技術(shù)方案還公開(kāi)一種通過(guò)弱引用技術(shù)消除緩存對(duì)象不一致性的方 法,包括以下步驟: 將緩存區(qū)域內(nèi)淘汰的緩存對(duì)象加入到弱引用字典的步驟; 以及 獲取緩存對(duì)象時(shí),首先獲取緩存區(qū)域內(nèi)保存的緩存對(duì)象,如緩存區(qū)域中獲取不到緩存 對(duì)象,則從弱引用字典中獲取緩存對(duì)象的步驟。 優(yōu)選的,所述弱引用字典采用key-value格式。 優(yōu)選的,所述將緩存區(qū)域內(nèi)淘汰的緩存對(duì)象加入到弱引用字典的步驟包括: 使用弱引用包裝淘汰的緩存對(duì)象的值的步驟; 根據(jù)包裝對(duì)象的值在弱引用字典內(nèi)查找是否存在對(duì)應(yīng)的緩存對(duì)象的Key,如存在則使 用包裝對(duì)象替換掉弱引用字典內(nèi)對(duì)應(yīng)的緩存對(duì)象,如不存在,則將包裝對(duì)象加入到弱引用 字典的步驟。 優(yōu)選的,所述從弱引用字典中獲取緩存對(duì)象包括, 通過(guò)緩存對(duì)象的Key檢索弱引用字典; 如弱引用字典內(nèi)存在對(duì)應(yīng)的包裝對(duì)象,則檢測(cè)包裝對(duì)象所引用的內(nèi)存對(duì)象是否存活; 如管理器存活則返回存活的內(nèi)存對(duì)象。 本專(zhuān)利技術(shù)的技術(shù)方案具有以下有益效果: 本專(zhuān)利技術(shù)的技術(shù)方案,增加了一個(gè)弱引用字典,被淘汰策略所淘汰的緩存對(duì)象并不立即 清除,而是將其放入到弱引用字典中。如果緩存對(duì)象沒(méi)有被任何程序代碼所引用,那么隨著 垃圾回收的發(fā)生,存放在弱引用字典中的緩存對(duì)象最終將徹底從內(nèi)存中清除。但只要還有 其它強(qiáng)引用存在,垃圾回收就無(wú)法清除該對(duì)象。這樣,當(dāng)需要重新獲取緩存對(duì)象時(shí),就可以 直接從弱引用字典中拿到,不會(huì)生成一份新的實(shí)例,從而避免內(nèi)存對(duì)象不一致性的問(wèn)題。 下面通過(guò)附圖和實(shí)施例,對(duì)本專(zhuān)利技術(shù)的技術(shù)方案做進(jìn)一步的詳細(xì)描述。【附圖說(shuō)明】 圖1為本專(zhuān)利技術(shù)實(shí)施例所述的通過(guò)弱引用技術(shù)消除緩存對(duì)象不一致性的裝置的原 理框圖; 圖2為本專(zhuān)利技術(shù)實(shí)施例所述的緩存對(duì)象管理器的原理框圖; 圖3為本專(zhuān)利技術(shù)實(shí)施例所述的緩存對(duì)象獲取器的原理框圖; 圖4為本專(zhuān)利技術(shù)實(shí)施例所述的通過(guò)弱引用技術(shù)消除緩存對(duì)象不一致性的方法的流程圖; 圖5為本專(zhuān)利技術(shù)實(shí)施例所述的增加將淘汰的緩存對(duì)象加入到弱引用字典的流程圖; 圖6為本專(zhuān)利技術(shù)實(shí)施例所述的從弱引用字典中檢索存活內(nèi)存對(duì)象的流程圖。【具體實(shí)施方式】 以下結(jié)合附圖對(duì)本專(zhuān)利技術(shù)的優(yōu)選實(shí)施例進(jìn)行說(shuō)明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí) 施例僅用于說(shuō)明和解釋本專(zhuān)利技術(shù),并不用于限定本專(zhuān)利技術(shù)。 如圖1所示,一種通過(guò)弱引用技術(shù)消除緩存對(duì)象不一致性的裝置,包括弱引用字 典管理器、緩存對(duì)象管理器和緩存對(duì)象獲取器, 緩存對(duì)象管理器:將緩存區(qū)域內(nèi)淘汰的緩存對(duì)象加入到弱引用字典管理器; 弱引用字典管理器:保存來(lái)自緩存對(duì)象管理器的緩存對(duì)象; 緩存對(duì)象獲取器:在獲取緩存對(duì)象時(shí),首先獲取緩存區(qū)域內(nèi)保存的緩存對(duì)象,如緩存區(qū) 域中獲取不到緩存對(duì)象,則從弱引用字典管理器中獲取緩存對(duì)象。 其中,弱引用字典管理器采用key-value格式。 如圖2所示,緩存對(duì)象管理器,當(dāng)前第1頁(yè)1 2 本文檔來(lái)自技高網(wǎng)...
【技術(shù)保護(hù)點(diǎn)】
一種通過(guò)弱引用技術(shù)消除緩存對(duì)象不一致性的裝置,其特征在于,包括弱引用字典管理器、緩存對(duì)象管理器和緩存對(duì)象獲取器,所述緩存對(duì)象管理器:將緩存區(qū)域內(nèi)淘汰的緩存對(duì)象加入到弱引用字典管理器;所述弱引用字典管理器:保存來(lái)自緩存對(duì)象管理器的緩存對(duì)象;所述緩存對(duì)象獲取器:在獲取緩存對(duì)象時(shí),首先獲取緩存區(qū)域內(nèi)保存的緩存對(duì)象,如緩存區(qū)域中獲取不到緩存對(duì)象,則從弱引用字典管理器中獲取緩存對(duì)象。
【技術(shù)特征摘要】
【專(zhuān)利技術(shù)屬性】
技術(shù)研發(fā)人員:張紅斌,
申請(qǐng)(專(zhuān)利權(quán))人:用友網(wǎng)絡(luò)科技股份有限公司,
類(lèi)型:發(fā)明
國(guó)別省市:北京;11
還沒(méi)有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。