本發(fā)明專利技術公開了一種Java虛擬機分代垃圾快速回收方法,采用虛擬表構建用于回收并且整理內存空間的垃圾回收器;將內存劃分為多個大小相等的內存塊,每個內存塊屬于不同的內存集,內存集是包括若干內存塊的集合;對于等待被回收處理的內存空間內的多個內存集,分別掃描每個內存集內的內存塊;內存集按照先后順序,在先的內存集先被掃描會回收,在后的內存集后被掃描回收,如同代際更替;如果某個內存集J內的內存塊中的對象均未被其他內存集內的內存塊中的對象引用,則該內存集J為垃圾內存,被回收。本發(fā)明專利技術針對機頂盒硬件運算能力不高、存儲有限、實時性強的特點,提高了運算速度和響應時間,很好地滿足了數字電視機頂盒的實時性要求。
【技術實現步驟摘要】
【專利摘要】本專利技術公開了,采用虛擬表構建用于回收并且整理內存空間的垃圾回收器;將內存劃分為多個大小相等的內存塊,每個內存塊屬于不同的內存集,內存集是包括若干內存塊的集合;對于等待被回收處理的內存空間內的多個內存集,分別掃描每個內存集內的內存塊;內存集按照先后順序,在先的內存集先被掃描會回收,在后的內存集后被掃描回收,如同代際更替;如果某個內存集J內的內存塊中的對象均未被其他內存集內的內存塊中的對象引用,則該內存集J為垃圾內存,被回收。本專利技術針對機頂盒硬件運算能力不高、存儲有限、實時性強的特點,提高了運算速度和響應時間,很好地滿足了數字電視機頂盒的實時性要求。【專利說明】
本專利技術屬于數字電視中間件
,特別涉及。
技術介紹
數字電視中間件技術為廣電運營商的業(yè)務提供一個相對統一的平臺,使得跨域的業(yè)務互通變得更加簡單。中間件技術通過對底層硬件資源的抽象,提供對上層各種應用的支持,其中間件平臺負責屏蔽底層硬件差異性,并將底層資源模塊抽象為上層API接口供第三方業(yè)務模塊調用,通過終端平臺來進行解析和呈現。在中間件平臺里,終端平臺在負責完成基本的音視頻播放的同時,也負責接收前端廣播的應用,并根據用戶的操作運行這些應用,使得跨平臺、海量信息業(yè)務的開展成為可能。對于數字電視中間件軟件平臺,中國數字電視中間件標準規(guī)定了必需支持Java應用。要實現支持Java的功能,通常包含一個Java虛擬機,用來執(zhí)行運行在數字電視機頂盒上的Java應用程序,通過獨特的結構及跨平臺設計,將應用程序和中間件標準,底層操作系統、硬件驅動隔離開,使上層的數字電視的服務應用不必考慮過多的平臺細節(jié),實現跨平臺與硬件無關性。在數字電視中間件技術架構下,Java虛擬機采用緊湊對象布局設計,統一資源管理的模式,使內存布局盡可能緊湊,為了保證系統的運行速度。在Java虛擬機中,不僅要分配對象所用的內存資源,還需要跟蹤資源的使用情況,定期檢查出不再使用的內存,由系統自動回收并做再次分配,這被稱為垃圾回收機制。在這種方式下,Java程序必須考慮內存釋放問題,影響了機頂盒的實時性要求。
技術實現思路
本專利技術的目的是提供,使得Java程序中將不用考慮內存的釋放問題,為提高系統程序的安全性,滿足機頂盒的實時性要求。本專利技術的技術方案是,,包括步驟:采用虛擬表構建用于回收并且整理內存空間的垃圾回收器;將內存劃分為多個大小相等的內存塊,每個內存塊屬于不同的內存集,內存集是包括若干內存塊的集合;對于等待被回收處理的內存空間內的多個內存集,分別掃描每個內存集內的內存塊;內存集按照先后順序,在先的內存集先被掃描會回收,在后的內存集后被掃描回收,如同代際更替;如果某個內存集J內的內存塊中的對象均未被其他內存集內的內存塊中的對象引用,則該內存集J為垃圾內存,被回收。還包括步驟:若某內存集J的內存塊中的對象A被其他內存集的內存塊C中對象B引用,則將對象A以及與對象A有引用關系的與對象A同處內存集J的其他對象轉移至內存塊C內;若內存塊C已滿,則在內存塊所處的內存集的尾部開辟新的內存塊一次存放。還包括步驟:內存集J中未被其他內存集引用的對象被轉移至內存集J的尾部,當掃描至內存集J尾部,所述的被轉移至內存集J尾部的對象仍然未被處于其他內存集的外部對象引用,則內存集J被回收。所述的Java虛擬機分代垃圾快速回收,還包括對I/O和信號量的系統資源回收。現有技術中的Java虛擬機采用了火車算法,其每次只回收一個車次的策略使Java虛擬機垃圾回收的運行時間在可控制范圍內,但不能保證垃圾回收何時運行。而根據測試,在數字電視中間件技術架構下,Java虛擬機在低負載情況下運行垃圾回收會更少占用系統資源,因此考慮優(yōu)化目前垃圾回收器采用火車算法。本專利技術的具體采用的策略大致如下:數字電視中間件技術架構下,在Java虛擬機采用緊湊對象布局設計,統一資源管理的模式,使內存布局盡可能緊湊,不僅要分配對象所用的內存資源,還需要跟蹤資源的使用情況,定期檢查出不再使用的內存,由系統自動回收并做再次分配,這被稱為垃圾回收機制。內部創(chuàng)建一個系統資源使用信息表,該表記錄了系統資源和相關方法的調用情況,通過對系統資源信息表的統計和分析,采用異步方式通知垃圾回收器運行在系統負載比較小的狀態(tài)中,通過分代垃圾回收的火車算法,對每次只回收一列火車的策略,使Java虛擬機垃圾回收的空間控制在一定范圍內,很大程度上滿足數字電視實時性需求從而達到系統負載盡可能平衡,提升系統整體性能。本專利技術采用獨特的虛擬表技術,提高Java虛擬機分代垃圾回收的快速收集方法,主要針對機頂盒硬件運算能力不高、存儲有限、實時性強的特點,突破了傳統的Java虛擬機分代垃圾回收方法,采用新的設計和優(yōu)化算法,提高了運算速度和響應時間,很好地滿足了數字電視機頂盒的實時性要求。【專利附圖】【附圖說明】圖1本專利技術涉及的數字電視Java虛擬機框架圖。圖2本專利技術的數字電視中間件結構示意圖。圖3是本專利技術實施例中算法之一示意圖圖4是本專利技術實施例中算法之一示意圖圖5是本專利技術實施例中算法之一示意圖【具體實施方式】在Java虛擬機的實現中,垃圾回收器處于最重要的位置之一。垃圾回收器設計的好壞直接影響Java虛擬機執(zhí)行性能和內存消耗。垃圾回收器的功能是回收不再使用的內存對象,同時對不連續(xù)的堆碎片進行整理。在機頂盒上運行Java程序,性能很重要,不希望在運行Java程序時候,垃圾回收器占用太長的時間,以至讓Java程序運行緩慢。所以必須保證垃圾回收器運行時不能超過一個最大時間。本次專利技術是經過大量算法和數據研究,在Java虛擬機中實現垃圾回收器采用了火車算法。該算法采用漸進式收集垃圾,并不是一次收集所有的垃圾,這樣保證了收集時間不會太長。火車算法是在成熟對象空間中提供限定時間的漸進收集。在火車算法中,內存被分為塊,多個塊組成一個集合。為了形象化,一節(jié)車廂代表一個塊,一列火車代表一個集合,見圖3。注意每個車廂大小相等,但每個火車包含的車廂數不一定相等。垃圾收集以車廂為單位,收集順序依次為1.1,1.2,1.3,1.4,2.1,2.2,2.3,3.1,3.2,3.3……。這個順序也是塊被創(chuàng)建的先后順序。如圖3所示,垃圾收集器先從塊1.1開始掃描直到1.4。如果火車I的四個塊中的所有對象沒有被火車2和火車3的對象引用,而只有火車I內部的對象相互引用,則整個火車I都是垃圾,可以被回收。如圖4所示,車廂1.1中有對象A和對象B,1.3中有對象C,1.4中有對象D,車廂2.2中有對象E,車廂3.3中有對象F。在火車I中,對象C引用對象A,對象B引用對象D,可見,火車2和火車3沒有引用火車I的對象,則整個火車I都是垃圾。火車I中有對象被其它火車引用,見圖5,掃描車廂1.1時發(fā)現對象A被火車2中的E引用,則將對象A從車廂1.1轉移到車廂2.2,然后掃描A引用的對象D,把D也轉移到車廂2.2,然后掃描D,看D是否引用其它對象,如果引用了其它對象則也要轉移,依次類推。掃描完火車I的所有對象后,剩下的沒有轉移的對象都是垃圾,可以把整個火車I都作為垃圾回收。注意如果在轉移時,如果車廂2.2空間滿了,則要在火車2末尾開辟新的車廂2.4,將新轉移的對象都放到2.4,即火車的尾部)補充說明:垃圾本文檔來自技高網...
【技術保護點】
一種Java虛擬機分代垃圾快速回收方法,其特征在于,包括步驟:采用虛擬表構建用于回收并且整理內存空間的垃圾回收器;將內存劃分為多個大小相等的內存塊,每個內存塊屬于不同的內存集,內存集是包括若干內存塊的集合;對于等待被回收處理的內存空間內的多個內存集,分別掃描每個內存集內的內存塊;內存集按照先后順序,在先的內存集先被掃描會回收,在后的內存集后被掃描回收,如同代際更替;如果某個內存集J內的內存塊中的對象均未被其他內存集內的內存塊中的對象引用,則該內存集J為垃圾內存,被回收。
【技術特征摘要】
【專利技術屬性】
技術研發(fā)人員:許海華,沈江濤,何明,杜平,許哲維,
申請(專利權)人:無錫商埃曲信息科技有限公司,
類型:發(fā)明
國別省市:江蘇;32
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。