本發明專利技術屬于Java虛擬機垃圾回收器技術領域,具體涉及一種基于Java虛擬機的并發垃圾回收器框架。該框架分為并發算法框架和調度器兩個模塊兩個部分,其中,所述并發算法框架,在設計上主要通過對當前存在的并發垃圾收集算法來進行差異分析,最終劃分算法中便于重用和不能重用的模塊,并且針對不同的特性分別進行實現;所述調度器主要由調度觸發器、調度算法、耗盡處理三個模塊組成;該調度器主要有兩個方面的作用:決定何時觸發GC,處理系統資源耗盡的情況。本發明專利技術增加了并行垃圾收集技術的平臺可移植性,解決了在同一平臺下實驗不同并行垃圾收集技術的問題,可以在一個特定的平臺下研究不同并行垃圾收集技術的優劣性。
【技術實現步驟摘要】
本專利技術屬于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)通過測試表明,并發垃圾收集器能有效的本文檔來自技高網...
【技術保護點】
一種基于Java虛擬機的并發垃圾收集器框架 ,其特征在于該框架分為并發算法框架和調度器兩個模塊兩個部分,其中,所述并發算法框架,在設計上主要通過對當前存在的并發垃圾收集算法來進行差異分析,最終劃分算法中便于重用和不能重用的模塊,并且針對不同的特性分別進行實現;現有的框架中又把整個并發算法框架分成核心算法實現、數據并行處理和合并、并發收集這三個模塊;所述調度器主要由調度觸發器、調度算法、耗盡處理三個模塊組成;該調度器而言,主要有兩個方面的作用:第一,決定何時觸發GC;第二,處理系統資源耗盡的情況;按照系統資源耗盡發生的時刻段,把耗盡情況分成三種:一體發生在應用程序運行中,垃圾收集線程沒有啟動;發生在垃圾收集線程啟動后的跟蹤階段;以及發生在垃圾收集線程啟動后的收集清理階段;調度器對這三種情況分別進行處理:對于第一種情況,只把所有的線程都停下來,做一次“停止世界”的垃圾收集過程,之后再讓程序繼續運行;當系統資源耗盡出現在垃圾收集線程啟動后的跟蹤階段,調度器停掉其他應用程序的線程,讓垃圾收集線程把跟蹤階段完成,先得到對象跟蹤信息;之后用這個對象跟蹤信息做一次“停止世界”的垃圾收集過程來釋放內存;對于系統資源耗盡出現在垃圾收集線程啟動后的收集清理階段,調度器只停掉其他應用程序的線程,讓垃圾收集線程把收集清理階段完成。...
【技術特征摘要】
1.一種基于Java虛擬機的并發垃圾收集器框架,其特征在于該框架分為并發算法框 架和調度器兩個模塊兩個部分,其中,所述并發算法框架,在設計上主要通過對當前存 在的并發垃圾收集算法來進行差異分析,最終劃分算法中便于重用和不能重用的模塊, 并且針對不同的特性分別進行實現;現有的框架中又把整個并發算法框架分成核心算法 實現、數據并行處理和合并、并發收集這三個模塊;所述調度器主要由調度觸發器、調 度算法、耗盡處理三個模塊組成;該調度器而言,主要有兩個方面的作用第一,決定何時觸發GC;第二,處理系統資源耗盡的情況;按照系統資源耗盡發生的時刻段,把耗盡情況分 成三種一體發生在應用程序運行中,垃圾收集線程沒有啟動;發生在垃圾收集線程啟 動后的跟蹤階段;以及發生在垃圾收集線程啟動后的收集清理階段;調度器對這三種情 況分別進行處理對于第一種情況,只把所有的線程都停下來,做一次“停止世界”的垃圾收集過 程,之后再讓程序繼續運行;當系統資源耗盡出現在垃圾收集線程啟動后的跟蹤階段,調度器停掉其他應用程序 的線程,讓垃圾收集線程把跟蹤階段完成,先得到對象跟蹤信息;之后用這個...
【專利技術屬性】
技術研發人員:楊珉,王迪,周尋,張源,臧斌宇,
申請(專利權)人:復旦大學,
類型:發明
國別省市:31[中國|上海]
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。