新四季網

基於Java虛擬機的並發垃圾收集器框架的製作方法

2023-09-09 16:43:35

專利名稱:基於Java虛擬機的並發垃圾收集器框架的製作方法
技術領域:
本發明屬於Java虛擬機垃圾回收器技術領域,具體涉及一種基於Java虛擬機的 並發垃圾回收器框架。
背景技術:
伴隨著高級程式語言的興起,垃圾收集(Garbage Collection, GC)技術在系統安
全和資源管理方面扮演著越來越重要的角色。在很多編程系統中,程序編寫者需要在程序編寫過程中顯示的釋放不使用的內 存空間。在這種設計中,程序編寫者的失誤很容易造成程序的內存洩露或者異常終止, 這在很大程度上影響了系統的穩定性和可靠性。而垃圾回收技術要求虛擬機執行判斷和 清理程序不再使用的內存空間。所以垃圾收集技術能有效地避免這些情況的發生,它使 內存的管理自動化,程序編寫者不再需要對不使用的內存進行釋放,垃圾收集器會在一 個合適的時間對這個堆進行處理,把已經不再使用的空間釋放掉。這樣的設計使內存的 管理更加模塊化,並具有更高的可靠性。常見的垃圾收集算法在系統堆內存耗盡時,虛擬機會「暫停」所有應用程式線 程進行垃圾收集。等垃圾收集工作結束,應用程式線程會被重新啟動繼續其執行。這種 技術被稱為「停止世界(stop-the-worid)」的垃圾收集。隨著現代應用程式使用內存量 增大、對象數量增多,「停止世界」垃圾收集所造成的停頓嚴重影響了應用程式的響應 時間。於是為了消除「停止世界」垃圾收集造成性能影響的問題,很多研究機構和 個人都在致力於實現可以使垃圾收集器在應用程式線程執行的情況下進行垃圾收集的技 術,以此來提高應用程式的效率,這樣的技術被稱為並發垃圾收集技術。但是目前已有 的並發垃圾收集技術實現都比較分散,並且實現比較繁瑣,對於不同的系統的可移植性 較差也是一個比較大的問題。

發明內容
本發明的目的在於針對現有並發垃圾收集技術實現比較分散的問題,提出一個 並發垃圾收集器的統一框架。本發明調研了不同的並發垃圾收集算法的差異,發現不同的並發垃圾收集算法 之間還是有很大程度的相似度,只有在具體的算法實現時有較大的差異,這樣的調研結 果說明了建立統一框架的可能性和優越性。本發明採用的技術方案為為並發垃圾收集器設計一個統一框架,可以在其中 方便地實現和改進各種不同的並發垃圾收集算法。並且將垃圾收集器本身設計成多線程 (GC線程),以此來提高垃圾收集的效率。並發垃圾收集器的統一框架是專門為並發垃圾收集器所設計的一個統一框架。 通過研究不同的並發垃圾收集算法的異同點,該框架提供了通用的垃圾收集數據處理和合併、垃圾收集等功能。通過該框架,並發垃圾收集器的開發者只需要實現其核心算法 就可以實現一個工作良好的並發垃圾收集器,極大的方便了各種不同的並發垃圾收集算 法實現和改進。並發垃圾收集器的統一框架主要分為並發算法框架和調度器兩個模塊。本發明提出的基於Java虛擬機的並發垃圾收集器框架,分為並發算法框架和調 度器兩個模塊兩個部分,其中,所述並發算法框架,在設計上主要通過對當前存在的並 發垃圾收集算法來進行差異分析,最終劃分算法中便於重用和不能重用的模塊,並且針 對不同的特性分別進行實現;現有的框架中又把整個並發算法框架分成核心算法實現、 數據並行處理和合併、並發收集這三個模塊;所述調度器主要由調度觸發器、調度算 法、耗盡處理三個模塊組成;該調度器而言,主要有兩個方面的作用
第一,決定何時觸發GC;
第二,處理系統資源耗盡的情況;按照系統資源耗盡發生的時刻段,把耗盡情況分 成三種一體發生在應用程式運行中,垃圾收集線程沒有啟動;發生在垃圾收集線程啟 動後的跟蹤階段;以及發生在垃圾收集線程啟動後的收集清理階段;調度器對這三種情 況分別進行處理
(1)對於第一種情況,只把所有的線程都停下來,做一次「停止世界」的垃圾收集 過程,之後再讓程序繼續運行;
(2)當系統資源耗盡出現在垃圾收集線程啟動後的跟蹤階段,調度器停掉其他應用 程序的線程,讓垃圾收集線程把跟蹤階段完成,先得到對象跟蹤信息;之後用這個對象 跟蹤信息做一次「停止世界」的垃圾收集過程來釋放內存;
(3)對於系統資源耗盡出現在垃圾收集線程啟動後的收集清理階段,調度器只停掉 其他應用程式的線程,讓垃圾收集線程把收集清理階段完成。並發垃圾收集器的最大特點就是GC線程和應用程式線程同時運行,而且無論應 用程序還是垃圾收集器都可能是多線程。我們設計了一個GC線程組和應用程式線程組 共享的狀態變量來保證線程之間的同步。圖1描述了並發垃圾收集器運行過程中線程對 該狀態變量進行的改變。如果考慮系統堆內存提前耗盡的情況,就可以把垃圾收集過程表示為6個狀態 之間的轉換,它們之間的轉換關係如圖2所示,分別表示的作用為
1、狀態①應用程式正常運行,每次申請內存空間的操作都會調用GC調度器來檢 測是否需要觸發並發垃圾收集過程,需要的話轉到狀態②;
2、狀態②應用程式線程分別停頓,收集其執行棧上的根節點,放入根節點集合, 並打開當前線程的寫攔截器。當最後一個線程的根節點集合收集完成後,啟動GC線程 開始執行追蹤過程,轉到狀態③;
3、狀態③追蹤過程與應用程式並發的運行,當最後一個GC線程完成追蹤過程 後,轉到狀態④;
4、狀態④追蹤過程完成,當應用程式有新的申請內存操作時會觸發並發的收集過 程,轉到狀態⑤;
5、狀態⑤收集過程與應用程式並發運行,當最後一個GC線程完成收集過程後轉 到狀態①;
6、狀態⑥垃圾收集過程處於狀態①、③、⑤時,如果系統堆內存被應用程式耗盡,將進入狀態⑥進行處理(系統堆內存耗盡處理),隨後轉到狀態①。
在實現過程中,應該考慮到多個應用程式線程之間的協同問題以及多個GC線程之間 的協同問題。所以我們加入一些多個應用程式線程共享的同步變量和多個GC線程共享 的同步變量來處理這些問題,與之相對應的狀態轉換過程如圖3。上述這種狀態轉換是我們設計的統一框架提供的專門為並發垃圾收集器設計 的,只要利用上述的狀態變換,程式設計師能實現絕大多數的並發垃圾收集算法。基於這 個統一框架,已經實現了等三種並發垃圾收集算法,它們是Mostly-Concurrent算法和 Snapshot-at-the-Beginning算法兩種不同實現,這也說明了統一框架可以方便地實現不同 並行垃圾收集技術。這裡也對這三種並行垃圾收集技術進行簡單的介紹
Mostly-Concurrent算法的基本思想是先用並發的GC線程去做儘量多的「標 記」工作,然後用一次「停止世界」追蹤過程來完成剩下的「標記」工作;而 Snapshot-at-the-Begiraiing算法的主要思想是分別對當前運行的每個應用程式線程的運行 棧做一次「快照」(snapshot),得到一個完整的根節點集合,然後GC線程從這個根節點 集合開始執行並發的追蹤過程。在具體實施方式
一節中將對這三種算法和數據結構進行 詳細描述。本發明的有益效果是1)提供了一個實現並發垃圾收集器的統一框架,讓各種 不同的算法能在一個框架下方便的被實現。2)框架的實現不針對具體的某一平臺,這樣 的設計增加了並行垃圾收集技術的平臺可移植性。3)解決了在同一平臺下實驗不同並行 垃圾收集技術的問題,這樣就可以在一個特定的平臺下研究不同並行垃圾收集技術的優 劣性。4)在目前構建的框架下設計並實現了三種並發垃圾收集算法,有效的利用系統資 源,證明了該框架的實用性。5)通過測試表明,並發垃圾收集器能有效的消除服務端應 用程序因垃圾收集所導致的停頓;對於客戶端應用程式,也能在降低停頓時間的同時, 有效的縮短應用程式的執行的時間。


圖1所示為並發垃圾收集器中應用程式線程和GC線程的同步關係。圖2所示為並發垃圾收集的狀態轉換。圖3所示為並發垃圾收集的運行過程中的狀態轉換過程。圖4所示為並發垃圾收集器的堆空間耗盡處理。
具體實施例方式本發明按照上述並發垃圾收集框架主要分為並發算法框架和調度器兩個模塊。 下面就對本框架中這兩個模塊的具體實施作一個詳細的介紹。在介紹並發算法框架的同 時,還會對基於本框架實現的三種並發垃圾收集算法進行介紹。圖2為並發垃圾收集的狀態轉換圖,並發垃圾收集框架的運行就是這6個狀態的 轉換。前5個狀態屬於並發算法框架的範疇,最後第6個狀態是調度器中實現的內存資 源耗盡處理。1)並發算法框架。並發算法框架是這整個統一框架的核心部分,在設計上主要 通過對當前存在的並發垃圾收集算法來進行差異分析,最終劃分算法中便於重用和不能重用的模塊,並且針對不同的特性分別進行實現。現有的框架中又把整個並發算法框架 分成了核心算法實現、數據並行處理和合併、並發收集這三個模塊。經過調研發現,在並發垃圾收集技術中很大一部分的處理是可以統一實現的。 例如並發垃圾收集技術中有大量對系統的數據進行並發處理和合併的操作,而這一類的 操作是不同的並發垃圾收集技術都需要的,所以統一框架通過抽象和提取出一個適用於 所有並發垃圾收集技術的數據並行處理和合併的模塊,很大程度上減少了實現並發垃圾 收集算法的工作量難度。不同的並發垃圾收集技術之間的差異最大的只體現在具體算法 的核心思想和實現步驟上。簡單的說,並發算法框架中的數據並行處理和合併模塊以及 並發收集模塊適用於所有的並發垃圾收集技術,在本框架下實現不同的並發收集方法只 要實現其核心算法部分就可以了。a)核心算法實現
b)數據並行處理
c)並發收集方法
2)調度器。調度器主要由調度觸發器、調度算法、耗盡處理三個模塊組成。對調 度器而言,主要有兩個方面的作用
第一,調度器需要決定何時觸發GC。因為如果垃圾收集發生過早,就沒有充分利 用系統內存資源並且造成垃圾收集的頻率過快,這樣會影響應用程式性能;如果發生過 晚,系統堆內存可能在並發垃圾收集完成前被耗盡,進入狀態⑥進行「耗盡處理」,這 樣又增加了應用程式的停頓時間。對如何找到這樣的GC觸發點,其實同樣有很多不同的實現方式,框架中給出了 一個GC_SChedUle接口,在整個並發垃圾收集器框架中都統一使用這個接口進行垃圾收集 線程的管理。這樣方便程式設計師通過這個接口來實現不同的垃圾收集的調度算法。第二,調度器需要處理系統資源耗盡的情況。目前實現的統一框架按照系統資 源耗盡發生的時刻段,可以把耗盡情況分成三種一體發生在應用程式運行中,垃圾收 集線程沒有啟動;發生在垃圾收集線程啟動後的跟蹤階段;以及發生在垃圾收集線程啟 動後的收集清理階段。調度器從應用程式的運行效率最大化的角度考慮,並利用並發垃 圾收集的特點,對這三種情況分別進行了處理。(4)對於第一種情況,因為垃圾收集線程還沒有啟動,沒有可以利用的信息, 所以只能把所有的線程都停下來,做一次「停止世界」的垃圾收集過程。之後再讓程序 繼續運行。(5)當系統資源耗盡出現在垃圾收集線程啟動後的跟蹤階段,那麼並發垃圾收 集階段的跟蹤信息時可以復用的。調度器的做法是停掉其他應用程式的線程,讓垃圾收 集線程把跟蹤階段完成,先得到對象跟蹤信息。之後用這個對象跟蹤信息做一次「停止 世界」的垃圾收集過程來釋放內存。這樣就省去了一次跟蹤處理。對於系統資源耗盡出現在垃圾收集線程啟動後的收集清理階段,處理就更為簡 單了。因為之前的跟蹤和清理過程都還是適用的,調度只要停掉其他應用程式的線程, 讓垃圾收集線程把收集清理階段完成就可以了。
權利要求
1.一種基於Java虛擬機的並發垃圾收集器框架,其特徵在於該框架分為並發算法框 架和調度器兩個模塊兩個部分,其中,所述並發算法框架,在設計上主要通過對當前存 在的並發垃圾收集算法來進行差異分析,最終劃分算法中便於重用和不能重用的模塊, 並且針對不同的特性分別進行實現;現有的框架中又把整個並發算法框架分成核心算法 實現、數據並行處理和合併、並發收集這三個模塊;所述調度器主要由調度觸發器、調 度算法、耗盡處理三個模塊組成;該調度器而言,主要有兩個方面的作用第一,決定何時觸發GC;第二,處理系統資源耗盡的情況;按照系統資源耗盡發生的時刻段,把耗盡情況分 成三種一體發生在應用程式運行中,垃圾收集線程沒有啟動;發生在垃圾收集線程啟 動後的跟蹤階段;以及發生在垃圾收集線程啟動後的收集清理階段;調度器對這三種情 況分別進行處理對於第一種情況,只把所有的線程都停下來,做一次「停止世界」的垃圾收集過 程,之後再讓程序繼續運行;當系統資源耗盡出現在垃圾收集線程啟動後的跟蹤階段,調度器停掉其他應用程式 的線程,讓垃圾收集線程把跟蹤階段完成,先得到對象跟蹤信息;之後用這個對象跟蹤 信息做一次「停止世界」的垃圾收集過程來釋放內存;對於系統資源耗盡出現在垃圾收集線程啟動後的收集清理階段,調度器只停掉其他 應用程式的線程,讓垃圾收集線程把收集清理階段完成。
2.—種如權利要求1所述基於Java虛擬機的並發垃圾收集器框架,其特徵在於,框架 的各個狀態之間的轉換關係為狀態①應用程式正常運行,每次申請內存空間的操作都會調用GC調度器來檢測是 否需要觸發並發垃圾收集過程,需要的話轉到狀態②;狀態②應用程式線程分別停頓,收集其執行棧上的根節點,放入根節點集合,並打 開當前線程的寫攔截器;當最後一個線程的根節點集合收集完成後,啟動GC線程開始 執行追蹤過程,轉到狀態③;狀態③追蹤過程與應用程式並發的運行,當最後一個GC線程完成追蹤過程後,轉 到狀態④;狀態④追蹤過程完成,當應用程式有新的申請內存操作時會觸發並發的收集過程, 轉到狀態⑤;狀態⑤收集過程與應用程式並發運行,當最後一個GC線程完成收集過程後轉到狀 態①;狀態⑥垃圾收集過程處於狀態①、③、⑤時,如果系統堆內存被應用程式耗盡, 將進入狀態⑥進行系統堆內存耗盡處理,隨後轉到狀態①。
全文摘要
本發明屬於Java虛擬機垃圾回收器技術領域,具體涉及一種基於Java虛擬機的並發垃圾回收器框架。該框架分為並發算法框架和調度器兩個模塊兩個部分,其中,所述並發算法框架,在設計上主要通過對當前存在的並發垃圾收集算法來進行差異分析,最終劃分算法中便於重用和不能重用的模塊,並且針對不同的特性分別進行實現;所述調度器主要由調度觸發器、調度算法、耗盡處理三個模塊組成;該調度器主要有兩個方面的作用決定何時觸發GC,處理系統資源耗盡的情況。本發明增加了並行垃圾收集技術的平臺可移植性,解決了在同一平臺下實驗不同並行垃圾收集技術的問題,可以在一個特定的平臺下研究不同並行垃圾收集技術的優劣性。
文檔編號G06F9/46GK102023891SQ201010595749
公開日2011年4月20日 申請日期2010年12月20日 優先權日2010年12月20日
發明者周尋, 張源, 楊珉, 王迪, 臧斌宇 申請人:復旦大學

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀