两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種垃圾回收的裝置、系統(tǒng)及方法

文檔序號(hào):6463543閱讀:949來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):一種垃圾回收的裝置、系統(tǒng)及方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種垃圾回收的裝置、系統(tǒng)及方法。
背景技術(shù)
目前,JAVA ( —種程序設(shè)計(jì)語(yǔ)言)語(yǔ)言以其強(qiáng)大的軟件開(kāi)發(fā)、網(wǎng)絡(luò)編程 能力、手機(jī)編程能力等得到了廣泛的應(yīng)用。在JAVA語(yǔ)言中,由JVM (JAVA 虛擬機(jī))進(jìn)行內(nèi)存管理,并且,JVM采取垃圾自動(dòng)回收機(jī)制進(jìn)行內(nèi)存釋放, 具體包括JVM自動(dòng)判斷內(nèi)存的使用情況并啟動(dòng)垃圾回收機(jī)制;這樣,在進(jìn) 行編程的過(guò)程中,只需要關(guān)注對(duì)象的申請(qǐng),而不必關(guān)心在拋棄對(duì)象時(shí)的空間 回收問(wèn)題,才及大地方^f更了用戶(hù)的編程。JVM進(jìn)程在將拋棄對(duì)象后,需要進(jìn)行空間回收。但是,JVM進(jìn)程在進(jìn)行 空間回收時(shí)會(huì)導(dǎo)致較大的系統(tǒng)開(kāi)銷(xiāo),因此,在JVM中,并不是每個(gè)對(duì)象被拋 棄就立即進(jìn)行內(nèi)存回收的,這樣,JVM中設(shè)置了垃圾回收機(jī)制。JVM的垃圾 回收機(jī)制要在進(jìn)行垃圾回收的時(shí)間和空間之間進(jìn)行平衡。為了提高系統(tǒng)效 率,垃圾回收器通常只在滿(mǎn)足兩個(gè)條件時(shí)才運(yùn)行有對(duì)象要回收且系統(tǒng)需要 回收。這需要根據(jù)系統(tǒng)拋棄的對(duì)象大小和設(shè)置的JVM垃圾回收算法進(jìn)行判 斷,因此系統(tǒng)無(wú)法知道也無(wú)法具體預(yù)測(cè)垃圾回收發(fā)生的精確時(shí)間。J VM的垃圾回收包括如下步驟步驟1: JVM通過(guò)對(duì)象遍歷的方法,對(duì)不可達(dá)的對(duì)象進(jìn)行標(biāo)記,以便后續(xù) 步驟中刪除這些不可到達(dá)的對(duì)象,這稱(chēng)為標(biāo)記對(duì)象。步驟2: GC (垃圾回收)刪除不可到達(dá)的對(duì)象。刪除時(shí),GC簡(jiǎn)單的掃描 堆棧,刪除標(biāo)記的對(duì)象,并釋放它們的內(nèi)存以生成新的對(duì)象,這稱(chēng)為 sweeping (清除)。步驟3: GC不斷地進(jìn)行對(duì)象清除操作后,釋放的內(nèi)存會(huì)分成很多小段, 這些各個(gè)小段不足以用于新的對(duì)象,但是組合起來(lái)卻4艮大。因此,GC重新組 織內(nèi)存中的對(duì)象,將可用的空間連在一起,形成可利用的空間,這稱(chēng)為 compacting (壓縮)。在JVM的垃圾回收過(guò)程中,當(dāng)系統(tǒng)內(nèi)存比較小的時(shí)候,進(jìn)行對(duì)象標(biāo)記、 清除是比較快速的, 一般毫秒級(jí)就可以完成,但是如果系統(tǒng)內(nèi)存達(dá)到幾十G之 后,進(jìn)行一次系統(tǒng)的垃圾回收,時(shí)間就會(huì)達(dá)到幾十秒,引起系統(tǒng)長(zhǎng)時(shí)間的處 理中斷;另外,GC的壓縮處理十分耗時(shí)的,尤其對(duì)于大內(nèi)存,每次的壓縮處 理時(shí)間會(huì)達(dá)到數(shù)分鐘,這對(duì)于實(shí)時(shí)系統(tǒng)來(lái)說(shuō)是無(wú)法接收。JVM垃圾回收一般通過(guò)多代回收的方式進(jìn)4亍垃圾回收,提供new generation (#斤生4戈)和old generation (老生 )兩個(gè)內(nèi)存區(qū)。 一劣殳來(lái)i兌, 設(shè)置的新生代區(qū)的空間比較小,用以快速回收短時(shí)間存在的臨時(shí)對(duì)象,執(zhí)行 新生代垃圾回收時(shí)間比較短,對(duì)系統(tǒng)的影響很小, 一般不會(huì)造成系統(tǒng)的阻 塞;設(shè)置的老生代區(qū)的空間比較大,當(dāng)新生代區(qū)在執(zhí)行垃圾回收后,仍然存 在的在用對(duì)象超過(guò)設(shè)定的比例,或者長(zhǎng)時(shí)間不釋放的對(duì)象,都會(huì)轉(zhuǎn)移到老生 代,因此老生代存放了大量的長(zhǎng)時(shí)間運(yùn)行的對(duì)象。執(zhí)行一次老生代的垃圾回 收稱(chēng)作一次full GC,每次的full GC系統(tǒng)會(huì)占用較長(zhǎng)的時(shí)間,并且full GC執(zhí)行 時(shí)可能同時(shí)需要執(zhí)行壓縮,會(huì)占用更長(zhǎng)的時(shí)間,在進(jìn)行對(duì)象刪除和空間壓縮 期間,JVM阻塞了其它的線(xiàn)程,整個(gè)系統(tǒng)處于阻塞狀態(tài),不能進(jìn)行任何處 理。本發(fā)明人在實(shí)現(xiàn)本發(fā)明的過(guò)程中發(fā)現(xiàn),在現(xiàn)有技術(shù)中,系統(tǒng)無(wú)法知道也 無(wú)法具體預(yù)測(cè)垃圾回收發(fā)生的精確時(shí)間,以及在進(jìn)^亍垃圾回收的過(guò)程時(shí),會(huì)消耗大量系統(tǒng)內(nèi)存,從而導(dǎo)致系統(tǒng)處于阻塞狀態(tài)。但是,對(duì)于要求運(yùn)行速度 快的實(shí)時(shí)系統(tǒng), 一般都希望在系統(tǒng)的繁忙或重要時(shí)段最好不要進(jìn)行垃圾回 收,以保證系統(tǒng)的穩(wěn)定運(yùn)行和實(shí)時(shí)處理能力。因?yàn)楫?dāng)垃圾回收啟動(dòng)時(shí),在垃 圾回收的過(guò)程中,系統(tǒng)處于阻塞狀態(tài),對(duì)于大吞吐量,大內(nèi)存的系統(tǒng)來(lái)說(shuō), 阻塞的時(shí)間比較長(zhǎng)例如一分鐘,在這段時(shí)間內(nèi),應(yīng)用無(wú)法進(jìn)行處理,導(dǎo)致整 個(gè)系統(tǒng)處于停滯狀態(tài),對(duì)于電信應(yīng)用實(shí)時(shí)系統(tǒng)來(lái)說(shuō),大量的呼損和系統(tǒng)過(guò)負(fù) 荷帶來(lái)很大的損失,呼叫量越大,帶來(lái)的損失越多。因此,現(xiàn)有技術(shù)中,無(wú) 法處理進(jìn)行垃圾回收過(guò)程中導(dǎo)致的在系統(tǒng)繁忙或重要時(shí)段出現(xiàn)的阻塞問(wèn)題。發(fā)明內(nèi)容本發(fā)明實(shí)施例提供一種垃圾回收的裝置、系統(tǒng)及方法,控制系統(tǒng)進(jìn)行垃 圾回收的時(shí)間,以避免在系統(tǒng)繁忙或重要時(shí)段進(jìn)行垃圾回收處理。本發(fā)明實(shí)施例是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的 本發(fā)明實(shí)施例提供一種控制垃圾回收的裝置,所述裝置包括 信息收集單元,用于收集系統(tǒng)的運(yùn)行信息,以及應(yīng)用程序的運(yùn)行信息; 觸發(fā)裁決單元,用于根據(jù)信息收集單元收集的數(shù)據(jù)以及預(yù)先設(shè)置的裁決策略確定是否需要觸發(fā)垃圾回收;若需要觸發(fā),則輸出觸發(fā)消息。本發(fā)明實(shí)施例提供一種垃;及回收的系統(tǒng),所述系統(tǒng)包括控制垃;及回收的裝置,以及執(zhí)行裝置,其中,所述控制垃圾回收的裝置,用于根據(jù)收集的數(shù)據(jù)以及預(yù)先設(shè)置的裁決策略確定是否需要觸發(fā)垃圾回收;若需要觸發(fā),則輸出觸發(fā)消息;所述執(zhí)行裝置用于根據(jù)接收到的觸發(fā)消息,觸發(fā)執(zhí)行垃圾回收。 本發(fā)明實(shí)施例提供一種控制垃圾回收的方法,所述方法包括 收集系統(tǒng)的運(yùn)行信息,以及應(yīng)用程序的運(yùn)行信息,并根據(jù)所述接收到的數(shù)據(jù)以及預(yù)先設(shè)置的裁決策略確定是否需要觸發(fā)垃圾回收;若需要觸發(fā),則輸出觸發(fā)消息。由上述本發(fā)明實(shí)施例提供的技術(shù)方案可以看出,本發(fā)明實(shí)施例采用控制 垃圾回收的裝置控制垃圾回收,使得系統(tǒng)根據(jù)可預(yù)測(cè)的垃圾回收時(shí)間點(diǎn)進(jìn)行 自我保護(hù),以保證系統(tǒng)在執(zhí)行垃圾回收時(shí)減少系統(tǒng)的沖擊,保證數(shù)據(jù)的完整 性;使得系統(tǒng)可以控制垃圾回收在系統(tǒng)空閑時(shí)段或吞吐量小時(shí)執(zhí)行,以降低垃圾回收導(dǎo)致的系統(tǒng)阻塞情況;使得系統(tǒng)可以有規(guī)律的垃圾回收,對(duì)于垃圾回收?qǐng)?zhí)行時(shí)長(zhǎng)是可預(yù)測(cè)的,這才羊可以基于不同的系統(tǒng)調(diào)整垃i及回收的拍J亍時(shí)間點(diǎn)、頻率和時(shí)長(zhǎng),以降低系統(tǒng)的損失。


圖1為本發(fā)明實(shí)施例垃圾回收系統(tǒng)的結(jié)構(gòu)圖; 圖2為本發(fā)明實(shí)施例垃圾回收的方法的流程圖; 圖3為本發(fā)明實(shí)施例垃圾回收的方法的內(nèi)部處理的流程圖。
具體實(shí)施方式
本發(fā)明實(shí)施例提供了一種垃圾回收的系統(tǒng),結(jié)構(gòu)圖如圖1所示,包括 獨(dú)立設(shè)置于系統(tǒng)之外或者設(shè)置于系統(tǒng)中的控制垃圾回收的裝置,以及設(shè)置于系統(tǒng)中的執(zhí)行裝置。其中,控制垃圾回收的裝置具體可以包括信息收集單元、觸發(fā)裁決單元。其中,信息收集單元,用于收集系統(tǒng)的運(yùn)行信息,以及應(yīng)用程序的運(yùn)行信息。 系統(tǒng)的運(yùn)行信息用于指示系統(tǒng)的繁忙程度,包括系統(tǒng)的中央處理器CPU占用率、系統(tǒng)的一種程序設(shè)計(jì)語(yǔ)言JAVA虛擬機(jī)JVM的內(nèi)存占用率、系統(tǒng)的內(nèi)存占用率和系統(tǒng)的當(dāng)前時(shí)間等信息中的至少 一 個(gè)。應(yīng)用程序的運(yùn)行信息用于指示應(yīng)用程序的繁忙程度以及上次垃圾回收的狀況,所述應(yīng)用程序的繁忙程度包括當(dāng)前應(yīng)用程序的吞吐量、預(yù)先設(shè)置的應(yīng)用程序的話(huà)務(wù)模型和當(dāng)前應(yīng)用程序占用的內(nèi)存等信息中的至少一個(gè);所述上次垃圾回收的狀況包括上次垃圾回收的時(shí)間和上次垃圾回收的內(nèi)存大小 等信息中的至少一個(gè)。比如可以結(jié)合預(yù)先設(shè)置的應(yīng)用程序的話(huà)務(wù)模型和當(dāng) 前應(yīng)用程序的吞吐量確定應(yīng)用程序的繁忙程度,話(huà)務(wù)模型是根據(jù)應(yīng)用程序的 應(yīng)用場(chǎng)景確定的應(yīng)用程序在不同時(shí)段預(yù)期的負(fù)荷情況,可以將系統(tǒng)的吞吐量 與預(yù)期的負(fù)荷情況進(jìn)行對(duì)比,可以將得到的比值作為指示系統(tǒng)繁忙程度的 值。觸發(fā)裁決單元,用于根據(jù)信息收集單元收集的數(shù)據(jù)以及預(yù)先設(shè)置的裁決 策略確定是否需要觸發(fā)垃圾回收;若需要觸發(fā),則輸出觸發(fā)消息;以保證當(dāng) 系統(tǒng)忙時(shí)不觸發(fā)或少觸發(fā)垃;及回收,以及保證用戶(hù)的需求。觸發(fā)裁決單元中的裁決策略可以根據(jù)用戶(hù)的需求設(shè)置,所述用戶(hù)的需求 包括系統(tǒng)JVM的內(nèi)存占用率的設(shè)定閥值、系統(tǒng)要求的垃圾回收的執(zhí)行頻率 和垃;及回收?qǐng)?zhí)4亍的時(shí)革炎要求中的至少 一個(gè)。觸發(fā)裁決單元可以根據(jù)系統(tǒng)的運(yùn)行信息確定系統(tǒng)的空閑狀況,可以由接 收到的應(yīng)用程序的運(yùn)行信息確定應(yīng)用程序的運(yùn)行狀況,再結(jié)合預(yù)先設(shè)置的裁 決策略確定是否需要觸發(fā)垃圾回收。比如,具體的觸發(fā)裁決過(guò)程可以包括 觸發(fā)裁決單元可以根據(jù)整個(gè)系統(tǒng)的CPU的占用率是否超過(guò)指定閥值來(lái)確定系 統(tǒng)是否處于空閑狀況,根據(jù)當(dāng)前應(yīng)用程序的吞吐量和預(yù)先設(shè)置的應(yīng)用程序的 話(huà)務(wù)模型來(lái)確定應(yīng)用程序是否處于空閑狀態(tài),當(dāng)系統(tǒng)和應(yīng)用程序同時(shí)處于空 閑狀態(tài)時(shí),若預(yù)先設(shè)置的裁決策略為垃圾回收?qǐng)?zhí)行的時(shí)段要求,則再判斷是 否滿(mǎn)足該時(shí)段要求,若滿(mǎn)足,則執(zhí)行垃圾回收,否則,不執(zhí)行垃圾回收。執(zhí)行裝置可以和系統(tǒng)同屬一個(gè)JVM。當(dāng)執(zhí)行裝置收到觸發(fā)裁決單元發(fā)送 的觸發(fā)垃圾回收的觸發(fā)消息后,調(diào)用內(nèi)部處理,觸發(fā)執(zhí)行垃圾回收。該觸發(fā)執(zhí)行單元可以調(diào)用系統(tǒng)提供的垃i及回收程序執(zhí)行垃:t及回收,比 如該調(diào)用的內(nèi)部處理可以由Java提供的一個(gè)函數(shù)System.gc()來(lái)調(diào)用。該函數(shù)執(zhí)行后并不會(huì)立即啟動(dòng)垃圾回收,而是在現(xiàn)有的J VM垃圾回收算法中加權(quán),以觸發(fā)垃圾回收。執(zhí)行單元可以采用調(diào)用多次System.gc()的方法,每次 調(diào)用后檢查JVM的輸出是否執(zhí)行了 GC,若未執(zhí)行則重新調(diào)用該函數(shù)并檢查 JVM輸出,循環(huán)執(zhí)行,至到GC執(zhí)行或者調(diào)用的次數(shù)達(dá)到了設(shè)定的門(mén)限,停止 調(diào)用。在本發(fā)明實(shí)施例中,可以在控制垃圾回收的裝置,以及設(shè)置于系統(tǒng)中的 執(zhí)行裝置之間設(shè)置第一通信單元和第二通信單元,用于傳送控制垃圾回收的 裝置和執(zhí)行裝置之間的消息指令或數(shù)據(jù)信息。其中,第一通信單元位于控制 垃圾回收的裝置中,分別與信息收集單元和觸發(fā)裁決單元相連,第二通信單 元位于系統(tǒng)中,與執(zhí)行裝置相連;該第一、二通信單元相連。 一方面,系統(tǒng) 和應(yīng)用程序的運(yùn)行信息,如系統(tǒng)的吞吐量、JVM的堆棧占用情況等,需要通 過(guò)第一通信單元和第二通信單元上報(bào)給信息收集單元;另一方面,觸發(fā)裁決 單元通過(guò)第一通信單元和第二通信單元發(fā)送觸發(fā)GC的指令給執(zhí)行裝置,由執(zhí) 行裝置觸發(fā)執(zhí)行GC的操作。本發(fā)明實(shí)施例使得系統(tǒng)根據(jù)可預(yù)測(cè)的垃圾回收時(shí)間點(diǎn)進(jìn)行自我保護(hù),以 保證系統(tǒng)在執(zhí)行垃圾回收時(shí)減少系統(tǒng)的沖擊,保證數(shù)據(jù)的完整性;使得系統(tǒng) 可以控制垃圾回收在系統(tǒng)空閑時(shí)段或吞吐量小時(shí)執(zhí)行,以降低垃圾回收導(dǎo)致 的系統(tǒng)阻塞情況;使得系統(tǒng)可以有規(guī)律的垃圾回收,對(duì)于垃圾回收?qǐng)?zhí)行時(shí)長(zhǎng) 是可預(yù)測(cè)的,這樣可以基于不同的系統(tǒng)調(diào)整垃圾回收的執(zhí)行時(shí)間點(diǎn)、頻率和 時(shí)長(zhǎng),以降低系統(tǒng)的損失。本發(fā)明實(shí)施例提供了一種垃圾回收的方法,流程圖如圖2所示,包括步驟1:信息收集單元收集系統(tǒng)的運(yùn)行信息,以及應(yīng)用程序的運(yùn)行信息。 信息收集單元還可以將接收到的所有數(shù)據(jù)進(jìn)行統(tǒng)一歸整,比如將接收到的 數(shù)據(jù)按照不同的格式進(jìn)行歸整,以便于將數(shù)據(jù)方便的輸出給觸發(fā)裁決單元; 或,從收集到的數(shù)據(jù)中得出需要發(fā)送給觸發(fā)裁決單元的信息。所述系統(tǒng)的運(yùn)行信息用于指示系統(tǒng)的繁忙程度,包括系統(tǒng)的中央處理器CPU占用率、系統(tǒng)的一種程序設(shè)計(jì)語(yǔ)言JAVA虛擬機(jī)JVM的內(nèi)存占用率、系 統(tǒng)的內(nèi)存占用率、和系統(tǒng)的當(dāng)前時(shí)間中的至少一個(gè)。所述應(yīng)用程序的運(yùn)行信息用于指示應(yīng)用程序的繁忙程度以及上次垃圾回 收的狀況,所述應(yīng)用程序的繁忙程度包括當(dāng)前應(yīng)用程序的吞吐量、預(yù)先設(shè) 置的應(yīng)用程序的話(huà)務(wù)模型和當(dāng)前應(yīng)用程序占用的內(nèi)存中的至少一個(gè);所述上 次垃圾回收的狀況包括上次垃圾回收的時(shí)間和上次垃圾回收的內(nèi)存大小中 的至少一個(gè)。步驟2:信息收集單元上報(bào)收集的數(shù)據(jù)給觸發(fā)裁決單元。需要說(shuō)明的是, 此步驟中也可以由觸發(fā)裁決單元主動(dòng)從信息收集單元中獲取數(shù)據(jù)。步驟3:觸發(fā)裁決單元根據(jù)接收到的數(shù)據(jù)以及預(yù)先設(shè)置的裁決策略確定是 否需要觸發(fā)垃圾回收,以保i正當(dāng)系統(tǒng)忙時(shí)不觸發(fā)或少觸發(fā)垃;及回收,以及保 證用戶(hù)的需求;若需要觸發(fā),則輸出觸發(fā)消息給系統(tǒng)。具體可以根據(jù)預(yù)先設(shè) 置的內(nèi)部算法對(duì)收集到的數(shù)據(jù)進(jìn)行運(yùn)算和邏輯處理,判斷是否需要對(duì)系統(tǒng)啟 動(dòng)GC。所述觸發(fā)裁決單元中的裁決策略根據(jù)用戶(hù)的需求設(shè)置,所述用戶(hù)的需求 包括系統(tǒng)JVM的內(nèi)存占用率的設(shè)定閥值、系統(tǒng)要求的垃圾回收的執(zhí)行頻率 和垃圾回收?qǐng)?zhí)行的時(shí)段要求中的至少 一個(gè)。步驟4:系統(tǒng)中的執(zhí)行裝置根據(jù)接收到的觸發(fā)消息,觸發(fā)執(zhí)行垃圾回收。 該內(nèi)部處理可以包括系統(tǒng)本身提供的各種垃;及回收方法,比如可以為執(zhí)行 System.gc()操作,具體方法可以如圖3所示,包括調(diào)用System.gc()函數(shù), 根據(jù)JVM GC的輸出結(jié)果來(lái)檢查完全垃圾回收是否執(zhí)行完成,若已執(zhí)行完成則 對(duì)結(jié)果進(jìn)行詳細(xì)記錄,記錄的內(nèi)容包括執(zhí)行時(shí)間、執(zhí)行時(shí)長(zhǎng)、收集的內(nèi)存大 小、調(diào)用System.gc的次數(shù);若未執(zhí)行完成,則繼續(xù)調(diào)用System.gc(),直到 完全垃圾回收被執(zhí)行或調(diào)用次數(shù)超過(guò)系統(tǒng)設(shè)定的閥值,然后輸出結(jié)果詳細(xì)記錄。步驟5:信息收集單元收集步驟4的執(zhí)行結(jié)果,并提供給觸發(fā)裁決單元, 以便于觸發(fā)裁決單元進(jìn)行下一次的觸發(fā)裁決。本發(fā)明實(shí)施例使得系統(tǒng)根據(jù)可預(yù)測(cè)的垃:t及回收時(shí)間點(diǎn)進(jìn)行自我保護(hù),以保證系統(tǒng)在執(zhí)行垃圾回收時(shí)減少系統(tǒng)的沖擊,保證數(shù)據(jù)的完整性;使得系統(tǒng) 可以控制垃圾回收在系統(tǒng)空閑時(shí)段或吞吐量小時(shí)執(zhí)4亍,以降低垃圾回收導(dǎo)致 的系統(tǒng)阻塞情況;使得系統(tǒng)可以有規(guī)律的垃圾回收,對(duì)于垃;及回收?qǐng)?zhí)行時(shí)長(zhǎng) 是可預(yù)測(cè)的,這樣可以基于不同的系統(tǒng)調(diào)整垃圾回收的執(zhí)行時(shí)間點(diǎn)、頻率和 時(shí)長(zhǎng),以降低系統(tǒng)的損失。以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不 局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可 輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明 的保護(hù)范圍應(yīng)該以權(quán)利要求書(shū)的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1、一種控制垃圾回收的裝置,其特征在于,所述裝置包括信息收集單元,用于收集系統(tǒng)的運(yùn)行信息,以及應(yīng)用程序的運(yùn)行信息;觸發(fā)裁決單元,用于根據(jù)信息收集單元收集的數(shù)據(jù)以及預(yù)先設(shè)置的裁決策略確定是否需要觸發(fā)垃圾回收;若需要觸發(fā),則輸出觸發(fā)消息。
2、 如權(quán)利要求1所述的裝置,其特征在于,所述信息收集單元收集的系 統(tǒng)的運(yùn)行信息用于指示系統(tǒng)的繁忙程度,包括系統(tǒng)的中央處理器CPU占用 率、系統(tǒng)的一種程序設(shè)計(jì)語(yǔ)言JAVA虛擬機(jī)JVM的內(nèi)存占用率、系統(tǒng)的內(nèi)存占 用率和系統(tǒng)的當(dāng)前時(shí)間中的至少 一 個(gè)。
3、 如權(quán)利要求1所述的裝置,其特征在于,所述信息收集單元接收到的 應(yīng)用程序的運(yùn)行信息用于指示應(yīng)用程序的繁忙程度以及上次垃圾回收的狀 況,所述應(yīng)用程序的繁忙程度包括當(dāng)前應(yīng)用程序的吞吐量、預(yù)先設(shè)置的應(yīng) 用程序的話(huà)務(wù)模型和當(dāng)前應(yīng)用程序占用的內(nèi)存中的至少一個(gè);所述上次垃圾 回收的狀況包括上次垃圾回收的時(shí)間和上次垃圾回收的內(nèi)存大小中的至少 一個(gè)。
4、 如權(quán)利要求1或2或3所述的裝置,其特征在于,所述觸發(fā)裁決單元中 的裁決策略根據(jù)用戶(hù)的需求設(shè)置,所述用戶(hù)的需求包括系統(tǒng)JVM的內(nèi)存占 用率的設(shè)定閥值、系統(tǒng)要求的垃圾回收的執(zhí)行頻率和垃圾回收?qǐng)?zhí)行的時(shí)段要 求中的至少一個(gè)。
5、 一種垃圾回收的系統(tǒng),其特征在于,所述系統(tǒng)包括控制垃圾回收的 裝置,以及執(zhí)行裝置,其中,所述控制垃圾回收的裝置,用于根據(jù)收集的數(shù)據(jù)以及預(yù)先設(shè)置的裁決策 略確定是否需要觸發(fā)垃圾回收;若需要觸發(fā),則輸出觸發(fā)消息;所述執(zhí)行裝置用于才艮據(jù)接收到的觸發(fā)消息,觸發(fā)執(zhí)行垃圾回收。
6、 如權(quán)利要求5所述的系統(tǒng),其特征在于,所述控制垃圾回收的裝置具體包括信息收集單元,用于收集系統(tǒng)的運(yùn)行信息,以及應(yīng)用程序的運(yùn)行信息;觸發(fā)裁決單元,用于根據(jù)信息收集單元收集的數(shù)據(jù)以及預(yù)先設(shè)置的裁決策略確定是否需要觸發(fā)垃圾回收;若需要觸發(fā),則輸出觸發(fā)消息。
7、 如權(quán)利要求5或6所述的系統(tǒng),其特征在于,所述執(zhí)行裝置調(diào)用系統(tǒng)提 供的垃圾回收程序執(zhí)行垃圾回收。
8、 如權(quán)利要求7所述的系統(tǒng),其特征在于,所述垃圾回收程序包括由 Java提供的一個(gè)函數(shù)System.gc();所述執(zhí)行單元調(diào)用多次System.gc(),每次調(diào)用后檢查JVM的輸出是否執(zhí) 行了垃圾回收,若未執(zhí)行則重新調(diào)用該函數(shù)并檢查JVM輸出,循環(huán)執(zhí)行,至 到垃圾回收?qǐng)?zhí)行或者調(diào)用的次數(shù)達(dá)到了設(shè)定的門(mén)限,停止調(diào)用。
9、 一種控制垃圾回收的方法,其特征在于,所述方法包括 收集系統(tǒng)的運(yùn)行信息,以及應(yīng)用程序的運(yùn)行信息,并根據(jù)所述接收到的數(shù)據(jù)以及預(yù)先設(shè)置的裁決策略確定是否需要觸發(fā)垃圾回收;若需要觸發(fā),則 輸出觸發(fā)消息。
10、 如權(quán)利要求9所述的方法,其特征在于,所述系統(tǒng)的運(yùn)行信息用于指 示系統(tǒng)的繁忙程度,包括系統(tǒng)的中央處理器CPU占用率、系統(tǒng)的一種程序 設(shè)計(jì)語(yǔ)言JAVA虛擬機(jī)JVM的內(nèi)存占用率、系統(tǒng)的內(nèi)存占用率、和系統(tǒng)的當(dāng)前 時(shí)間中的至少一個(gè)。
11、 如權(quán)利要求9所述的方法,其特征在于,所述應(yīng)用程序的運(yùn)行信息用 于指示應(yīng)用程序的繁忙程度以及上次垃圾回收的狀況,所述應(yīng)用程序的繁忙 程度包括當(dāng)前應(yīng)用程序的吞吐量、預(yù)先設(shè)置的應(yīng)用程序的話(huà)務(wù)模型和當(dāng)前 應(yīng)用程序占用的內(nèi)存中的至少一個(gè);所述上次垃圾回收的狀況包括上次垃 圾回收的時(shí)間和上次垃圾回收的內(nèi)存大小中的至少一個(gè)。
12、 如權(quán)利要求9或10或11所述的方法,其特征在于,所述裁決策略根據(jù)用戶(hù)的需求設(shè)置,所述用戶(hù)的需求包括系統(tǒng)JVM的內(nèi)存占用率的設(shè)定閥 值、系統(tǒng)要求的垃圾回收的執(zhí)行頻率和垃圾回收?qǐng)?zhí)行的時(shí)段要求中的至少一 個(gè)。
13、 如權(quán)利要求9或10或11所述的方法,其特征在于,所述方法還包括執(zhí)行裝置根據(jù)接收到的觸發(fā)消息,觸發(fā)執(zhí)行垃圾回收。
14、 如權(quán)利要求13所述的方法,其特征在于,所述執(zhí)行裝置觸發(fā)執(zhí)行垃 圾回收的方法具體包括所述執(zhí)行裝置調(diào)用系統(tǒng)提供的垃圾回收程序執(zhí)行垃圾回收。
15、 如權(quán)利要求14所述的方法,其特征在于, 所述垃圾回收程序包括由Java提供的一個(gè)函數(shù)System.gc(); 所述執(zhí)行裝置調(diào)用系統(tǒng)提供的垃圾回收程序執(zhí)行垃圾回收的方法具體包括所述執(zhí)行單元調(diào)用多次System.gc(),每次調(diào)用后檢查JVM的輸出是否執(zhí) 行了垃圾回收,若未執(zhí)行則重新調(diào)用該函數(shù)并檢查JVM輸出,循環(huán)執(zhí)行,至 到垃圾回收?qǐng)?zhí)行或者調(diào)用的次數(shù)達(dá)到了設(shè)定的門(mén)限,停止調(diào)用。
全文摘要
一種垃圾回收的裝置、系統(tǒng)及方法,該方法包括收集系統(tǒng)的運(yùn)行信息,以及應(yīng)用程序的運(yùn)行信息,并根據(jù)所述接收到的數(shù)據(jù)以及預(yù)先設(shè)置的裁決策略確定是否需要觸發(fā)垃圾回收;若需要觸發(fā),則輸出觸發(fā)消息;執(zhí)行裝置根據(jù)接收到的觸發(fā)消息,觸發(fā)執(zhí)行垃圾回收。本發(fā)明實(shí)施例使得系統(tǒng)根據(jù)可預(yù)測(cè)的垃圾回收時(shí)間點(diǎn)進(jìn)行自我保護(hù),以保證系統(tǒng)在執(zhí)行垃圾回收時(shí)減少系統(tǒng)的沖擊,保證數(shù)據(jù)的完整性;使得系統(tǒng)可以控制垃圾回收在系統(tǒng)空閑時(shí)段或吞吐量小時(shí)執(zhí)行,以降低垃圾回收導(dǎo)致的系統(tǒng)阻塞情況;使得系統(tǒng)可以有規(guī)律的垃圾回收,對(duì)于垃圾回收?qǐng)?zhí)行時(shí)長(zhǎng)是可預(yù)測(cè)的,這樣可以基于不同的系統(tǒng)調(diào)整垃圾回收的執(zhí)行時(shí)間點(diǎn)、頻率和時(shí)長(zhǎng),以降低系統(tǒng)的損失。
文檔編號(hào)G06F9/46GK101281458SQ20081010664
公開(kāi)日2008年10月8日 申請(qǐng)日期2008年5月14日 優(yōu)先權(quán)日2008年5月14日
發(fā)明者苗彩霞 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
满洲里市| 湘潭县| 若尔盖县| 天等县| 老河口市| 星座| 兖州市| 息烽县| 当雄县| 东乌珠穆沁旗| 双辽市| 福建省| 永和县| 乌苏市| 西充县| 洛扎县| 迭部县| 右玉县| 读书| 光泽县| 涡阳县| 郑州市| 紫金县| 新郑市| 陆良县| 罗城| 陇南市| 平武县| 九江市| 新竹市| 金平| 远安县| 墨竹工卡县| 侯马市| 安仁县| 上虞市| 通州市| 门源| 中西区| 合川市| 资源县|