[發(fā)明專利]管理在異構(gòu)環(huán)境中的對象集合的技術(shù)有效
| 申請?zhí)枺?/td> | 201210079353.6 | 申請日: | 2012-03-22 |
| 公開(公告)號: | CN102736917B | 公開(公告)日: | 2017-08-15 |
| 發(fā)明(設(shè)計)人: | G·普蘭卡特 | 申請(專利權(quán))人: | 微軟技術(shù)許可有限責(zé)任公司 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44 |
| 代理公司: | 上海專利商標(biāo)事務(wù)所有限公司31100 | 代理人: | 顧嘉運 |
| 地址: | 美國華*** | 國省代碼: | 暫無信息 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 管理 環(huán)境 中的 對象 集合 技術(shù) | ||
技術(shù)領(lǐng)域
本申請涉及垃圾收集,特別是管理在異構(gòu)環(huán)境中的對象集合的技術(shù)。
背景技術(shù)
許多編程語言提供了用于將不再使用的對象或其它軟件組件從存儲器中自動清除的各種存儲器管理技術(shù)。這種形式的存儲器管理有時被稱為“垃圾收集”。有效的垃圾收集對于為軟件的操作保留存儲器資源且同時又不會對軟件的執(zhí)行產(chǎn)生不利影響來說是重要的。一些垃圾收集解決方案可能是低效的。其它解決方案不能保持線程安全性,而還有的其它方案不是可縮放的。本發(fā)明的改進(jìn)正是針對這些和其他考慮事項而需要的。
發(fā)明內(nèi)容
提供本發(fā)明內(nèi)容以便以簡化形式介紹將在以下具體實施方式中進(jìn)一步描述的一些概念。本發(fā)明內(nèi)容并非旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護(hù)的主題的范圍。
各種實施例通常涉及管理在異構(gòu)環(huán)境中的一個或多個對象的集合。一些實施例尤其涉及以保持線程安全性的有效、可縮放的方式對一組對象執(zhí)行被稱為垃圾收集的特殊形式的資源管理。在一個實施例中,例如,一種技術(shù)可以包括創(chuàng)建受管代理,所述代理在存儲器中創(chuàng)建受管對象和非受管對象。生成并維護(hù)節(jié)點集合,其中,節(jié)點包括弱引用,該弱引用包括受管對象和非受管對象。維護(hù)集合中的節(jié)點的計數(shù)。當(dāng)該計數(shù)超出閾值時,遍歷所述集合,并且當(dāng)節(jié)點中的受管對象已經(jīng)被收集時,對同一節(jié)點中的任意非受管對象執(zhí)行垃圾收集操作。對其他實施例也予以描述并要求保護(hù)。
通過閱讀下面的詳細(xì)描述并參考相關(guān)聯(lián)的附圖,這些及其他特征和優(yōu)點將變得顯而易見。應(yīng)該理解,前面的概括說明和下面的詳細(xì)描述只是說明性的,不會對所要求保護(hù)的各方面形成限制。
附圖說明
圖1示出了一種在異構(gòu)環(huán)境中的垃圾收集的系統(tǒng)的實施例。
圖2示出了使用中的存儲器的實施例。
圖3示出垃圾收集序列的一實施例。
圖4示出了垃圾收集的第一邏輯流程的一實施例。
圖5示出第二邏輯流程的實施例。
圖6示出了第三邏輯流程的一實施例。
圖7示出計算體系結(jié)構(gòu)的實施例。
圖8示出通信體系結(jié)構(gòu)的實施例。
具體實施方式
各種實施例涉及用于在異構(gòu)環(huán)境中執(zhí)行自動化的存儲器管理或垃圾收集操作的存儲器管理技術(shù),其中,可以用超出一種的編程語言和/或超出一種的運行時環(huán)境來編寫軟件應(yīng)用。例如,當(dāng)應(yīng)用使用由另一個實體編寫的代碼或較舊的老代碼時,可以用超出一種的編程語言來編寫該應(yīng)用。從在本質(zhì)上來說,一些編程語言在某些功能性或效率方面比其它語言更好,并且應(yīng)用可以通過對一個應(yīng)用內(nèi)的不同功能使用不同的語言來利用一種編程語言的強(qiáng)項。
不同的編程語言不同地處理包括垃圾收集操作的存儲器管理。垃圾收集操作通常是指當(dāng)應(yīng)用不再使用對象時對正用于保存應(yīng)用對象的存儲器進(jìn)行清空、釋放或解除分配的實踐。垃圾收集操作可以防止諸如存儲器泄露等錯誤,其中由于沒有銷毀對象導(dǎo)致增加的存儲器的量變得對應(yīng)用不可用;以及懸空指針,其中,所指向的對象被銷毀但指向該對象的一個或多個指針并沒有被銷毀并且隨后被重新使用從而得到非預(yù)期結(jié)果。
一些語言可能不具有自動垃圾收集的能力,并且因此,程序員需要適當(dāng)?shù)貙Σ辉偈褂玫膶ο蠼獬鎯ζ鞣峙?。一些作為手動垃圾收集語言出現(xiàn)的語言,例如C++,現(xiàn)在卻提供了垃圾收集實現(xiàn)。這些語言提供了破壞器操作,該操作在銷毀對象時自動釋放該對象所使用的存儲器資源。具有垃圾收集環(huán)境的一些語言,例如C#和Java可以使用終結(jié)器。終結(jié)器類似于破壞器那樣操作,但是當(dāng)對象被銷毀時并不被顯性調(diào)用。取而代之的是,當(dāng)內(nèi)部垃圾收集系統(tǒng)釋放對象時可以調(diào)用終結(jié)器。程序員根本不能對何時調(diào)用終結(jié)器或是否調(diào)用終結(jié)器進(jìn)行控制。終結(jié)器還具有下述限制:僅在一個線程中操作和對垃圾收集之后持久存儲的對象不起作用。為了克服終結(jié)器的一些缺陷,例如C#的一些語言可以使用處置模式,它提供了一種釋放由對象使用的資源的方法。處置方法通常必須在代碼中由使用該對象的客戶機(jī)在該客戶機(jī)完成該對象時手動地被調(diào)用。還有其它語言使用引用計數(shù),其中每次由另一個對象引用對象時遞增計數(shù),而當(dāng)引用其的對象釋放它時減少計數(shù)。當(dāng)引用計數(shù)達(dá)到零時,可以銷毀對象。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于微軟技術(shù)許可有限責(zé)任公司,未經(jīng)微軟技術(shù)許可有限責(zé)任公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210079353.6/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:一種穿刺引流針管
- 下一篇:一種治療人流后陰道出血癥的中藥湯劑
- 環(huán)境服務(wù)系統(tǒng)以及環(huán)境服務(wù)事業(yè)
- 環(huán)境控制裝置、環(huán)境控制方法、環(huán)境控制程序及環(huán)境控制系統(tǒng)
- 環(huán)境檢測終端和環(huán)境檢測系統(tǒng)
- 環(huán)境調(diào)整系統(tǒng)、環(huán)境調(diào)整方法及環(huán)境調(diào)整程序
- 環(huán)境估計裝置和環(huán)境估計方法
- 用于環(huán)境艙的環(huán)境控制系統(tǒng)及環(huán)境艙
- 車輛環(huán)境的環(huán)境數(shù)據(jù)處理
- 環(huán)境取樣動力頭、環(huán)境取樣方法
- 環(huán)境艙環(huán)境控制系統(tǒng)
- 環(huán)境檢測儀(環(huán)境貓)





