專利名稱:可動(dòng)態(tài)調(diào)節(jié)而且可配置的廢料收集程序用的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明提供改進(jìn)的數(shù)據(jù)處理系統(tǒng),特別是提供為在數(shù)據(jù)處理系統(tǒng)中進(jìn)行存儲(chǔ)器管理的方法和裝置。更特別的是,本發(fā)明對(duì)數(shù)據(jù)處理系統(tǒng)中的廢料收集程序內(nèi)的功能性進(jìn)行了改進(jìn)。
虛擬機(jī)通常用于從被叫做堆的空白存儲(chǔ)區(qū)為一個(gè)對(duì)象的示例分配存儲(chǔ)區(qū),比如Java(一種計(jì)算機(jī)語(yǔ)言)虛擬機(jī)(JVM)。將該堆中的存儲(chǔ)區(qū)分配和釋放通常是以設(shè)定塊的形式進(jìn)行的。在一個(gè)Java虛擬機(jī)示例內(nèi)存在著一個(gè)堆(heap)。不過(guò),對(duì)于Java虛擬機(jī)的每個(gè)示例而言存在著各自的一堆。由于每個(gè)應(yīng)用都和Java虛擬機(jī)的單一例子關(guān)聯(lián),兩個(gè)Java應(yīng)用程序?qū)⒉粫?huì)破壞或者錯(cuò)用另一方的堆數(shù)據(jù)。Java虛擬機(jī)有把堆上的存儲(chǔ)區(qū)分配給新對(duì)象的指令,但是沒(méi)有釋放或者解分配以前分配的存儲(chǔ)區(qū)的指令。所以,Java虛擬機(jī)需要確定是否以及何時(shí)釋放或解分配被不再為運(yùn)行應(yīng)用程序所引用的對(duì)象占據(jù)的存儲(chǔ)區(qū)。Java虛擬機(jī)里的廢料收集(無(wú)用單元收集)程序進(jìn)行廢料收集,以便收回不再被某應(yīng)用程序引用的對(duì)象使用的存儲(chǔ)區(qū)空間。然后收回的存儲(chǔ)區(qū)通過(guò)將該存儲(chǔ)區(qū)空間重新分配給其它對(duì)象而得到再利用。
Java虛擬機(jī)(JVM)的體系結(jié)構(gòu)主要依靠廢料收集的使用,作為其存儲(chǔ)區(qū)管理策略的核心部分。廢料收集包括以下內(nèi)容自動(dòng)確定存儲(chǔ)區(qū)中哪些塊可以獲得釋放,辦法是當(dāng)它們?cè)诔绦驁?zhí)行期間超出“范圍”的時(shí)候?qū)⑵錁?biāo)記為不再為該應(yīng)用程序所需要;周期性地收集全部這些存儲(chǔ)區(qū)塊;將它們返還給堆;并且將這些塊標(biāo)記為可以使用。這種“廢料收集”處理的進(jìn)行必須有一定的技巧,因?yàn)閺U料收集處理過(guò)程本身在釋放資源的時(shí)候會(huì)消耗一些系統(tǒng)資源,尤其是處理器時(shí)間。
虛擬機(jī)平臺(tái)是正在發(fā)展的計(jì)算平臺(tái),而Java是這些平臺(tái)中最流行的。Java的一個(gè)最重要的特征是它的可移植性。在“一次寫(xiě)入,任何地方運(yùn)行”的概念下,可以想象Java應(yīng)用程序或Java小應(yīng)用程序可以在巨型計(jì)算機(jī)上運(yùn)行,并且其不用修改即可在手持式裝置,個(gè)人數(shù)字助理(PDA),打印機(jī)或一些其他輸出設(shè)備上運(yùn)行。很明顯,PDA和巨型計(jì)算機(jī)有著明顯不同的計(jì)算資源。在每個(gè)此類平臺(tái)上都能運(yùn)行的Java虛擬機(jī)可以有大小迥異的存儲(chǔ)區(qū)或帶寬供其支配,并且一個(gè)適當(dāng)設(shè)計(jì)的JVM應(yīng)該利用可以利用的資源同時(shí)實(shí)現(xiàn)可移植性的目標(biāo)。為了在存儲(chǔ)區(qū)管理方面實(shí)現(xiàn)這些目標(biāo),合乎需要的是采用單一的JVM設(shè)計(jì)即可解決有關(guān)性能和可移植性的共同問(wèn)題。
JVM所使用的準(zhǔn)確廢料收集策略將視JVM執(zhí)行其操作所基于的系統(tǒng)類型而變化。在當(dāng)前的JVM方案中,廢料收集程序是JVM的“內(nèi)置”部件,即對(duì)于不同的情況不能插入不同的廢料收集程序。所以,為某個(gè)計(jì)算機(jī)平臺(tái)采用某個(gè)JVM的做法通常規(guī)定將在JVM內(nèi)使用的廢料收集策略。
在不同的廢料收集程序方案中使用了許多不同的算法。這些算法通常根據(jù)執(zhí)行Java程序所基于的環(huán)境類型而加以調(diào)整。例如,多用戶的多處理機(jī)環(huán)境下的服務(wù)器應(yīng)用程序往往有著和臺(tái)式電腦環(huán)境不同的存儲(chǔ)器利用分布。此外,嵌入Java的設(shè)備(比如蜂窩電話)和手持裝置(比如使用微軟公司W(wǎng)inCE操作系統(tǒng)的那些裝置)采用了不同的存儲(chǔ)器使用分布情況。
對(duì)不同的JVM采用不同的廢料收集程序的做法對(duì)于JVM的供應(yīng)商來(lái)說(shuō)過(guò)于昂貴。單一的廢料收集程序在設(shè)計(jì)后能夠?qū)崿F(xiàn)一種特別的策略,而不能“隨意”加以修改從而改變其策略,并且,單一的廢料收集程序根據(jù)JVM執(zhí)行操作所基于的計(jì)算機(jī)平臺(tái)被置入每個(gè)JVM示例。然后JVM的供應(yīng)商必須跟蹤這些JVM示例,為其提供服務(wù)和支持。
加之,人們不能保證所安裝的JVM的性能將達(dá)到給定水平。在任何給定的一天,某一組廢料收集特性,即廢料收集算法測(cè)量標(biāo)準(zhǔn),對(duì)于某一設(shè)備可能有較好的表現(xiàn),但對(duì)于另一個(gè)裝置則不會(huì)有同樣的表現(xiàn)。例如具有少量存儲(chǔ)器的裝置可能需要主動(dòng)性較強(qiáng)的廢料收集程序,而有著許多存儲(chǔ)器的大服務(wù)器可以采取不太嚴(yán)格的方案。不過(guò),如果在稍后的某個(gè)時(shí)候,在已經(jīng)安裝了JVM的設(shè)備上添加存儲(chǔ)器,則JVM廢料收集策略不能加以修改以適應(yīng)存儲(chǔ)區(qū)的空間的增加。在另一個(gè)例子中,安裝了JVM的服務(wù)器可以通過(guò)補(bǔ)充處理器而加以修改。在每個(gè)例子中,不同的JVM將需要安裝不同類型的廢料收集算法,以便調(diào)節(jié)廢料收集程序的性能使其適應(yīng)硬件平臺(tái)的性能特性。重新安裝一個(gè)完整的Java環(huán)境較為昂貴,而且需要花費(fèi)較多時(shí)間。
因此,較為有利的是在數(shù)據(jù)處理系統(tǒng)的存儲(chǔ)器管理方面有所改善的方法和裝置。特別有利的是采用改進(jìn)的廢料收集程序管理存儲(chǔ)器的方法和裝置。
本發(fā)明提供用于可動(dòng)態(tài)調(diào)節(jié)而且可配置的廢料收集程序的方法,系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。環(huán)境變量或變量組或參數(shù)的數(shù)值由動(dòng)態(tài)的廢料收集程序獲得。這些變量可以經(jīng)用戶輸入,或者在計(jì)算機(jī)平臺(tái)的配置之時(shí)設(shè)定。變量的值可以在執(zhí)行廢料收集程序期間被修改,或者更新,所述廢料收集程序接收,或者取回新修改的值。然后,廢料收集程序根據(jù)內(nèi)含環(huán)境變量或參數(shù)的值的行為算法,或者根據(jù)由環(huán)境變量所選擇的行為算法執(zhí)行存儲(chǔ)區(qū)管理功能。
被認(rèn)為是本發(fā)明特色的新穎特征陳述在后附的權(quán)利要求書(shū)中。但是,當(dāng)結(jié)合有關(guān)附圖閱讀下文對(duì)作為例證的實(shí)施例的詳細(xì)說(shuō)明之后,將會(huì)對(duì)本發(fā)明本身,以及使用的優(yōu)選模式,其更進(jìn)一步的目標(biāo)和優(yōu)點(diǎn)有充分的理解
圖1是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的描述可以實(shí)施本發(fā)明的數(shù)據(jù)處理系統(tǒng)的圖形表示;圖2是可以實(shí)現(xiàn)本發(fā)明的數(shù)據(jù)處理系統(tǒng)的內(nèi)部部件的方框圖;圖3是在可以實(shí)現(xiàn)本發(fā)明的計(jì)算機(jī)系統(tǒng)內(nèi)操作的各軟件成分的關(guān)系的方框圖;圖4是按照本發(fā)明的優(yōu)選實(shí)施例的Java虛擬機(jī)的方框圖;圖5是描寫(xiě)在實(shí)現(xiàn)本發(fā)明的數(shù)據(jù)處理系統(tǒng)中的軟件成分和數(shù)據(jù)文件之間數(shù)據(jù)流的方框圖;圖6是在用于設(shè)置和儲(chǔ)存擬在動(dòng)態(tài)廢料收集程序內(nèi)使用的環(huán)境變量的流程圖;圖7是描寫(xiě)動(dòng)態(tài)廢料收集程序?yàn)槭贡旧磉m用于其當(dāng)前實(shí)行環(huán)境中適當(dāng)?shù)母逻^(guò)程而進(jìn)行自身配置的過(guò)程的流程圖;圖8是描寫(xiě)廢料收集程序動(dòng)態(tài)接收環(huán)境變量的更新值以便對(duì)廢料收集程序動(dòng)態(tài)配置的過(guò)程的流程圖;圖9是在描寫(xiě)根據(jù)本發(fā)明動(dòng)態(tài)廢料收集程序借以操作的過(guò)程的流程圖;以及,圖10A-10B是允許廢料收集程序動(dòng)態(tài)選取預(yù)定義配置的設(shè)置組合的表格。
現(xiàn)在參照?qǐng)D1,該圖是根據(jù)本發(fā)明的優(yōu)選實(shí)施例可以實(shí)施本發(fā)明的數(shù)據(jù)處理系統(tǒng)。圖中表示了一個(gè)個(gè)人計(jì)算機(jī)100,它包括系統(tǒng)單元110,視頻顯示終端102,鍵盤(pán)104,存儲(chǔ)裝置108和鼠標(biāo)106,存儲(chǔ)裝置108可以包括軟盤(pán)驅(qū)動(dòng)器和其他類型的永久和可拆卸的儲(chǔ)存介質(zhì)。其它的輸入裝置也可以被包括在個(gè)人計(jì)算機(jī)100中。個(gè)人計(jì)算機(jī)100可以采用任何類似IBM AptivaTM計(jì)算機(jī)(位于Armonk,紐約的國(guó)際商用機(jī)器公司的產(chǎn)品)的適當(dāng)計(jì)算機(jī)來(lái)實(shí)現(xiàn)。盡管圖中所描寫(xiě)的是個(gè)人計(jì)算機(jī),本發(fā)明的其他實(shí)施例也可以在其他種類的數(shù)據(jù)處理系統(tǒng),比如網(wǎng)絡(luò)計(jì)算機(jī),基于Web的電視機(jī)頂盒,因特網(wǎng)設(shè)備等等中實(shí)現(xiàn)。另外,計(jì)算機(jī)100優(yōu)選包括可以以駐留在工作于計(jì)算機(jī)100內(nèi)的計(jì)算機(jī)可讀介質(zhì)之中的系統(tǒng)軟件的形式實(shí)施的圖形用戶界面。
現(xiàn)在參看圖2,這是可以實(shí)現(xiàn)本發(fā)明的數(shù)據(jù)處理系統(tǒng)的內(nèi)部部件的方框圖。數(shù)據(jù)處理系統(tǒng)200是類似圖1計(jì)算機(jī)100的個(gè)人計(jì)算機(jī)例子。數(shù)據(jù)處理系統(tǒng)200使用外圍部件互連(PCI)的本地總線結(jié)構(gòu)。盡管所描寫(xiě)的例子使用了PCI總線,但是也可以使用其它總線結(jié)構(gòu),比如微通道體系結(jié)構(gòu)和ISA。處理器202和主存儲(chǔ)器204經(jīng)PCI橋208和PCI本地總線206連接。PCI橋208也可以包括用于處理器202的集成存儲(chǔ)控制器和超高速緩存。與PCI本地總線206的補(bǔ)充性連接可以通過(guò)直接的部件互連或者經(jīng)插入式部件板進(jìn)行。在所描寫(xiě)的例子中,局域網(wǎng)(LAN)適配器210,SCSI主機(jī)總線適配器212和擴(kuò)展總線接口214經(jīng)直接的部件連接和PCI本地總線206連接。相反,音頻適配器216,圖形適配器218和音頻/視頻適配器219經(jīng)插入到擴(kuò)充槽中的擴(kuò)充板和PCI本地總線206連接。擴(kuò)展總線接口214給鍵盤(pán)和鼠標(biāo)適配器220,調(diào)制解調(diào)器222和補(bǔ)充性存儲(chǔ)器224提供連接。SCSI主機(jī)總線適配器212為硬盤(pán)驅(qū)動(dòng)器226,磁帶機(jī)228和CD-ROM驅(qū)動(dòng)器230提供連接。典型的PCI本地總線實(shí)施方案將支持3或者4個(gè)PCI擴(kuò)充槽或插入部件連接器。
一個(gè)操作系統(tǒng)在處理器202上運(yùn)行,并被用來(lái)對(duì)圖2數(shù)據(jù)處理系統(tǒng)200內(nèi)的各種部件進(jìn)行協(xié)調(diào)和控制。操作系統(tǒng)可以是市面上賣(mài)的操作系統(tǒng),比如從國(guó)際商用機(jī)器公司可以購(gòu)得的OS/2?!癘S/2”是國(guó)際商用機(jī)器公司的商標(biāo)。諸如Java之類的面向?qū)ο缶幊滔到y(tǒng)可以和該操作系統(tǒng)聯(lián)合運(yùn)行,向操作系統(tǒng)提供采用Java程序或在數(shù)據(jù)處理系統(tǒng)200上執(zhí)行的應(yīng)用程序的調(diào)用。“Java”是Sun Microsystems公司的商標(biāo)。用于該操作系統(tǒng),面向?qū)ο蟮牟僮飨到y(tǒng)的指令和應(yīng)用程序被置于諸如硬盤(pán)驅(qū)動(dòng)器226的存儲(chǔ)裝置中,它們可以載入主存儲(chǔ)器204中供處理器202執(zhí)行。
本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,圖2里的硬件可以根據(jù)實(shí)施方案而變化。其它內(nèi)部硬件或者外圍設(shè)備,比如閃速ROM(或等效的非易失存儲(chǔ)器)或光盤(pán)驅(qū)動(dòng)器,可以和圖2所描寫(xiě)的硬件一起使用,或取代之。另外,本發(fā)明的各過(guò)程可以應(yīng)用到多處理器數(shù)據(jù)處理系統(tǒng)中。
例如,數(shù)據(jù)處理系統(tǒng)200在選擇性配置成網(wǎng)絡(luò)計(jì)算機(jī)的情況下,可以不包括SCSI主機(jī)總線適配器212,硬盤(pán)驅(qū)動(dòng)器226,磁帶機(jī)228和CD-ROM驅(qū)動(dòng)器230。在該情況下,該計(jì)算機(jī),恰當(dāng)?shù)刂v是客戶機(jī),必須包括幾種網(wǎng)絡(luò)通訊接口,比如LAN適配器210,調(diào)制解調(diào)器222,或者此類裝置。另一個(gè)例子是,數(shù)據(jù)處理系統(tǒng)200可以是獨(dú)立型的系統(tǒng),它的配置應(yīng)當(dāng)是無(wú)論數(shù)據(jù)處理系統(tǒng)200是否包括某些類型的網(wǎng)絡(luò)通信接口都可自舉,而不必依賴于某些類型的網(wǎng)絡(luò)通信接口。更進(jìn)一步的例子是,數(shù)據(jù)處理系統(tǒng)200可以是個(gè)人數(shù)字助理(PDA)裝置,它配置有只讀存儲(chǔ)器和/或閃速ROM,以便提供儲(chǔ)存操作系統(tǒng)文件和/或用戶生成的數(shù)據(jù)所需要的非易失性存儲(chǔ)器。
數(shù)據(jù)處理系統(tǒng)200的其它例子包括供在因特網(wǎng)和萬(wàn)維網(wǎng)進(jìn)行沖浪用的因特網(wǎng)信息設(shè)備。因特網(wǎng)信息設(shè)備可以包括基于Web的交互式電視置頂盒在內(nèi)。圖2所描寫(xiě)的例子和上述例子并不意味著體系結(jié)構(gòu)上的任何限制。
現(xiàn)在參看圖3,它闡明了在可以實(shí)現(xiàn)本發(fā)明的計(jì)算機(jī)系統(tǒng)內(nèi)操作的各軟件成分之間的關(guān)系。基于Java的系統(tǒng)300包括為在特定的硬件平臺(tái)上執(zhí)行的軟件提供硬件和系統(tǒng)支持的特定平臺(tái)操作系統(tǒng)302。Java虛擬機(jī)(JVM)304是可以結(jié)合操作系統(tǒng)執(zhí)行的一個(gè)軟件應(yīng)用程序。JVM304為Java運(yùn)行期環(huán)境提供執(zhí)行Java應(yīng)用程序或Java小程序306的能力,小程序306是以Java程序設(shè)計(jì)語(yǔ)言編寫(xiě)的程序,服務(wù)小程序或軟件成分。JVM 304工作于其中的計(jì)算機(jī)系統(tǒng)可以和上文所描述的數(shù)據(jù)處理系統(tǒng)200或計(jì)算機(jī)100相似。不過(guò),JVM304可以以專用硬件的形式實(shí)現(xiàn)在所謂的Java芯片,硅載Java,或嵌入有picojava內(nèi)核芯片的Java處理器上。
本發(fā)明提供用于動(dòng)態(tài)可調(diào)的可配置廢料收集程序的方法和系統(tǒng)。所以,本發(fā)明結(jié)合Java虛擬機(jī)工作在由Java標(biāo)準(zhǔn)的所定義的JVM邊界內(nèi)。為了適當(dāng)?shù)仃U述本發(fā)明,在此對(duì)根據(jù)Java標(biāo)準(zhǔn)的Java虛擬機(jī)的一部分操作進(jìn)行說(shuō)明。
在Java運(yùn)行期環(huán)境的中心是JVM,它支持Java環(huán)境的各個(gè)方面,包括其結(jié)構(gòu),安全特性,跨網(wǎng)絡(luò)的遷移性和平臺(tái)獨(dú)立性。
JVM是虛擬計(jì)算機(jī),即抽象指定的計(jì)算機(jī)。該規(guī)范定義每個(gè)JVM都必須實(shí)現(xiàn)的一些特性,但是其設(shè)計(jì)具有一定范圍的選擇性,視供JVM執(zhí)行于其上的平臺(tái)而定。例如,全部JVM都必須執(zhí)行Java字節(jié)碼,它可以用一定范圍的技術(shù)來(lái)執(zhí)行字節(jié)碼所表示的指令。JVM可以按軟件方式實(shí)現(xiàn),或者稍有些硬件。這一靈活性允許為主機(jī)計(jì)算機(jī)和PDA設(shè)計(jì)不同的JVM。
JVM必須裝載類文件,并執(zhí)行其中的字節(jié)碼。Java虛擬機(jī)包括一個(gè)類裝入程序,該程序裝載來(lái)自某個(gè)應(yīng)用程序的類文件和來(lái)自該應(yīng)用程序所需要的Java應(yīng)用程序編程接口(API)。執(zhí)行字節(jié)碼的執(zhí)行引擎可以視平臺(tái)和實(shí)現(xiàn)方案而改變。
最簡(jiǎn)單類型的基于軟件的執(zhí)行引擎是適時(shí)編譯器。采用這種執(zhí)行方式,某一方法的字節(jié)碼在該方法的第一次調(diào)用時(shí)被編譯為本地機(jī)器碼。然后,該方法的本地機(jī)器代碼被高速緩存,并在對(duì)該方法的下一次調(diào)用時(shí)被再次使用。另外,執(zhí)行引擎可以用硬件實(shí)現(xiàn),并嵌入在芯片上,這樣,Java字節(jié)碼得以本地執(zhí)行。JVM通常解釋字節(jié)碼,但是,JVM也可以用諸如適時(shí)編譯的其它技術(shù)來(lái)執(zhí)行字節(jié)碼。
當(dāng)應(yīng)用程序在以軟件實(shí)現(xiàn)于平臺(tái)特有的操作系統(tǒng)上的JVM上被執(zhí)行的時(shí)候,Java應(yīng)用程序可以采取調(diào)用本地方法的方式與主機(jī)操作系統(tǒng)交互作用。Java運(yùn)行期環(huán)境可以有兩種方法Java和本地。Java方法用Java語(yǔ)言編寫(xiě),編譯為字節(jié)碼,并被儲(chǔ)存在類文件中。本地方法以Java或其它的一些語(yǔ)言編寫(xiě),并編譯為特定處理器的本地機(jī)器代碼。本地方法被儲(chǔ)存在其準(zhǔn)確形式是平臺(tái)專有的動(dòng)態(tài)連接庫(kù)內(nèi)。
現(xiàn)在參看圖4,這是按照本發(fā)明的優(yōu)選實(shí)施例的Java虛擬機(jī)的方框圖。Java虛擬機(jī)(JVM)400包括類裝入程序子系統(tǒng)402,這是裝載類型,比如類和界面的機(jī)制,如果給定完全符合的名字的話。JVM 400也包括運(yùn)行期數(shù)據(jù)區(qū)404,執(zhí)行引擎406,本地方法接口408和存儲(chǔ)器管理424。執(zhí)行引擎406是用來(lái)執(zhí)行包含在由類裝入程序子系統(tǒng)402裝載的類的方法中的指令的機(jī)制。執(zhí)行引擎406可以是例如Java解釋程序412或適時(shí)編譯程序410。本地的方法接口408允許對(duì)潛在的操作系統(tǒng)中的資源進(jìn)行訪問(wèn)。本地的方法接口408可以是例如Java本地接口。
運(yùn)行期數(shù)據(jù)區(qū)404包括本地方法堆棧414,Java堆棧416,PC寄存器418,方法區(qū)420和堆422。這些不同的數(shù)據(jù)區(qū)表示JVM400為了執(zhí)行程序所需要的存儲(chǔ)區(qū)組織形式。
Java堆棧416被用來(lái)儲(chǔ)存Java方法調(diào)用的狀態(tài)。當(dāng)新的線程被啟動(dòng)的時(shí)候,JVM為該線程制作新的Java堆棧。JVM僅僅為Java堆棧直接施行兩個(gè)操作它使幀進(jìn)棧和出棧。線程的Java堆棧儲(chǔ)存的是Java方法對(duì)線程調(diào)用的狀態(tài)。Java方法調(diào)用的狀態(tài)包括其局域變量,調(diào)用它所采用的參數(shù),其返回值(如果有的話),和中間的計(jì)算結(jié)果。Java堆棧由堆棧結(jié)構(gòu)組成。堆棧結(jié)構(gòu)包括一次Java方法調(diào)用的狀態(tài)。當(dāng)線程調(diào)用某一方法的時(shí)候,JVM把新結(jié)構(gòu)推進(jìn)該線程的Java堆棧中。當(dāng)該方法完成的時(shí)候,JVM將用于該方法的結(jié)構(gòu)出棧,并且丟棄它。JVM沒(méi)有可用于保持中間值的任何寄存器;任何要求或者產(chǎn)生中間值的Java指令都采用堆棧來(lái)保持中間值。這樣,Java指令集充分考慮了各種平臺(tái)結(jié)構(gòu)。
PC寄存器418被用來(lái)顯示下一個(gè)被執(zhí)行的指令。每個(gè)被例示的線程都有著其自身的pc寄存器(程序計(jì)數(shù)器)和Java堆棧。如果線程正在執(zhí)行JVM方法,那么pc寄存器的值表示擬執(zhí)行的下一個(gè)指令。如果線程正在執(zhí)行本地方法,那么pc寄存器的內(nèi)容未定義。
本地的方法堆414儲(chǔ)存對(duì)本地方法調(diào)用的狀態(tài)。本地方法調(diào)用的狀態(tài)以實(shí)現(xiàn)相關(guān)的方式被儲(chǔ)存在本地的方法堆棧,寄存器或其它的實(shí)現(xiàn)相關(guān)的存儲(chǔ)區(qū)中。
方法區(qū)420包括類數(shù)據(jù),而堆422包括所有的例示對(duì)象。JVM標(biāo)準(zhǔn)嚴(yán)格定義了數(shù)據(jù)類型和操作。數(shù)據(jù)類型可以分為一組原語(yǔ)類型和參考類型。參考值指的是對(duì)象,但是原語(yǔ)值是實(shí)際的數(shù)據(jù)。
全部JVM都有一個(gè)方法區(qū)和一個(gè)堆,它們都由在JVM內(nèi)部運(yùn)行的全部線程共享。當(dāng)JVM裝載類文件的時(shí)候,它根據(jù)包含在類文件中的二進(jìn)制數(shù)據(jù)解析有關(guān)類型的信息。它將該類型信息放入方法區(qū)中。每當(dāng)類例子或數(shù)組被產(chǎn)生,則從堆422為新的對(duì)象分配存儲(chǔ)區(qū)。JVM 400包括把存儲(chǔ)器內(nèi)的存儲(chǔ)區(qū)空間分配給堆422的指令,但是不包括釋放在存儲(chǔ)區(qū)器的該空間的指令。所描寫(xiě)例子里的存儲(chǔ)區(qū)管理424管理在存儲(chǔ)器內(nèi)為堆420而分配的存儲(chǔ)區(qū)空間。存儲(chǔ)區(qū)管理424可以包括自動(dòng)收回不再被應(yīng)用程序引用的對(duì)象所使用的存儲(chǔ)區(qū)的廢料收集程序426。另外,廢料收集程序也可以移動(dòng)對(duì)象以減少堆碎片化現(xiàn)象。
現(xiàn)在參看圖5,它是有關(guān)在實(shí)現(xiàn)本發(fā)明的數(shù)據(jù)處理系統(tǒng)中的軟件成分和數(shù)據(jù)文件之間的數(shù)據(jù)流的方框圖。操作系統(tǒng)特有的平臺(tái)500包括Java虛擬機(jī)502,它和在圖3中在上文所描述的JVM 304相似。JVM502還有著和在圖4所述的堆422和本地方法接口408相似的存儲(chǔ)堆504和Java本地接口508。
JVM 502也包括提供一些存儲(chǔ)區(qū)管理,比如廢料收集和存儲(chǔ)區(qū)解除分配之類的動(dòng)態(tài)廢料收集程序506。動(dòng)態(tài)的廢料收集程序506和圖4廢料收集程序426的不同點(diǎn)在于,動(dòng)態(tài)的廢料收集程序506可以從位于JVM502外面的運(yùn)行期環(huán)境動(dòng)態(tài)地接收配置參數(shù)。在最通常的例子中,用戶輸入512設(shè)置環(huán)境變量510,該變量然后被動(dòng)態(tài)的廢料收集程序506讀取或接收。例如,在DOS操作系統(tǒng)中,用戶可以在“autoexec.bat”文件內(nèi)設(shè)置環(huán)境變量,而這些變量在運(yùn)行期環(huán)境中可以用于各種應(yīng)用程序。在這種情況下,用戶可以為動(dòng)態(tài)廢料收集程序特別設(shè)置環(huán)境變量,而后廢料收集程序監(jiān)視這些運(yùn)行期環(huán)境以查看那些環(huán)境變量的改變,或者采取某類動(dòng)作以接收那些環(huán)境變量的更新值。在另一個(gè)例子中,微軟視窗操作系統(tǒng)提供可以被用來(lái)設(shè)置各種應(yīng)用程序的環(huán)境變量的注冊(cè)文件。
在又一個(gè)例子中,配置文件可以被用來(lái)儲(chǔ)存專用在動(dòng)態(tài)廢料收集程序506中的環(huán)境變量。然后,動(dòng)態(tài)的廢料收集程序506可以解析配置文件,以獲得供其執(zhí)行的配置參數(shù)。動(dòng)態(tài)的廢料收集程序506可以不使用介入軟件而直接讀配置文件。在Java運(yùn)行期環(huán)境中,值可以被儲(chǔ)存在和Java應(yīng)用程序關(guān)聯(lián)的特性文件中。
盡管動(dòng)態(tài)的廢料收集程序506可以包括供直接的用戶交互所使用的模塊,但是可以預(yù)期動(dòng)態(tài)廢料收集程序506以非交互的方式執(zhí)行。JVM502可以提供輕量應(yīng)用程序或Java小程序,它接受用戶輸入512,并設(shè)置JVM 502內(nèi)的可傳送到動(dòng)態(tài)的廢料收集程序506或被其取回的變量。這類安排允許動(dòng)態(tài)廢料收集程序506主要由徑直用于存儲(chǔ)區(qū)管理功能的代碼組成。動(dòng)態(tài)的廢料收集程序506可以接收配置參數(shù)的更新值的另一方法是采用動(dòng)態(tài)廢料收集程序506和Java本地接口508之間的交互操作。在這種情況下,Java本地接口508可以包括那個(gè)與操作系統(tǒng)特定的平臺(tái)500進(jìn)行交互的代碼,以便接收有關(guān)環(huán)境變量變化的通知,或者監(jiān)視環(huán)境變量的改變。然后動(dòng)態(tài)廢料收集程序506可以從Java本地接口508接收或者取回環(huán)境變量的更新值。下文將以更多的細(xì)節(jié)進(jìn)一步描述接收和取回環(huán)境變量值的特定方法。
動(dòng)態(tài)廢料收集程序可以接收在此被輪流稱做環(huán)境變量,控制變量,行為參數(shù)等等的動(dòng)態(tài)的值的一種方法是擴(kuò)展JVM內(nèi)的系統(tǒng)類。通過(guò)在該類上添加允許Java應(yīng)用程序調(diào)用動(dòng)態(tài)廢料收集程序的應(yīng)用編程接口(API)的方法,一個(gè)應(yīng)用程序可以將外部值傳送到廢料收集程序中。例如,一個(gè)被叫做“System.setGCProperties()”的方法可以被用來(lái)設(shè)置廢料收集程序的行為特性。
現(xiàn)在參看圖6,這是一個(gè)描述了設(shè)置和儲(chǔ)存擬在動(dòng)態(tài)廢料收集程序內(nèi)使用的環(huán)境變量的過(guò)程的流程圖。過(guò)程從在操作系統(tǒng)執(zhí)行應(yīng)用程序以及執(zhí)行系統(tǒng)功能(步602)開(kāi)始。然后確定用戶是否輸入了設(shè)置環(huán)境變量的指令(步604)。如果是,則操作系統(tǒng)儲(chǔ)存環(huán)境變量的新值在適當(dāng)?shù)牡攸c(diǎn)中,以便后續(xù)傳送給動(dòng)態(tài)廢料收集程序(步606)。用戶可以通過(guò)圖形用戶界面和指令線路接口輸入設(shè)置環(huán)境變量的指令。
如果用戶沒(méi)有輸入指令,那么確定是否有新的硬件被安裝(步驟608)。如果是,操作系統(tǒng)可以確定有關(guān)新硬件的類型和位置的參數(shù),并在操作系統(tǒng)的范圍內(nèi)修改適當(dāng)?shù)沫h(huán)境變量(步驟610)。然后操作系統(tǒng)可以繼續(xù)其它的功能。如果沒(méi)有安裝新的硬件,那么操作系統(tǒng)執(zhí)行其它的系統(tǒng)功能(步驟612)。然后確定計(jì)算機(jī)系統(tǒng)是否正被關(guān)閉(步驟614)。如果沒(méi)有,過(guò)程返回步驟602,核查其它的系統(tǒng)功能和任務(wù)。如果系統(tǒng)正被關(guān)斷,則過(guò)程完成。這樣,圖6的步驟描述了在執(zhí)行操作系統(tǒng)內(nèi)基本上無(wú)中斷的環(huán)路。在對(duì)環(huán)境變量作出改變之后,操作系統(tǒng)在其正常的行動(dòng)過(guò)程中儲(chǔ)存用于環(huán)境變量的新值。
現(xiàn)在參看圖7,它是動(dòng)態(tài)廢料收集程序借以配置其本身以適應(yīng)在其當(dāng)前執(zhí)行環(huán)境中的正確更新程序的過(guò)程的流程圖。在該過(guò)程開(kāi)始的時(shí)候,廢料收集程序試圖確定接收結(jié)構(gòu)變量或參數(shù)的動(dòng)態(tài)更新值的必要方法(步驟702)。一般地,這類過(guò)程在最初執(zhí)行動(dòng)態(tài)廢料收集程序的時(shí)候由諸如Java虛擬機(jī)的操作系統(tǒng)執(zhí)行。
確定動(dòng)態(tài)廢料收集程序是否能夠自動(dòng)檢測(cè)更新的環(huán)境變量(步驟704)。如果是,動(dòng)態(tài)的廢料收集程序設(shè)置自動(dòng)檢測(cè)標(biāo)記,以定期自動(dòng)核查對(duì)環(huán)境或配置參數(shù)所作的更新(步驟706)。這類自動(dòng)檢測(cè)可以通過(guò)軟件中斷等等的使用而進(jìn)行。然后,初始化過(guò)程完成。
如果動(dòng)態(tài)的廢料收集程序能自動(dòng)檢測(cè)更新了的環(huán)境變量,那么接著確定操作系統(tǒng)是否支持將環(huán)境變量的每次更新報(bào)告給動(dòng)態(tài)廢料收集程序(步驟708)。如果是,確定操作系統(tǒng)是否支持回調(diào)注冊(cè)(步驟712)。如果是,那么動(dòng)態(tài)廢料收集程序?yàn)椴僮飨到y(tǒng)內(nèi)的各回調(diào)注冊(cè)一個(gè)更新例程(步驟716)。然后,過(guò)程完成。如果操作系統(tǒng)不支持回調(diào)注冊(cè),動(dòng)態(tài)廢料收集程序?qū)τ嘘P(guān)環(huán)境變量更新的通知進(jìn)行注冊(cè)(步驟714)。動(dòng)態(tài)廢料收集程序可以用消息,事件或一些觸發(fā)廢料收集程序的軟件中斷的形式接收這些通知,以便取回環(huán)境變量的更新值。然后,過(guò)程完成。
如果操作系統(tǒng)沒(méi)有為每次更新提供通知支持,那么動(dòng)態(tài)廢料收集程序設(shè)置周期檢測(cè)標(biāo)記,以便周期性取回環(huán)境變量并在其后將其和所需要環(huán)境變量的先前存儲(chǔ)值進(jìn)行比較(步驟710)。然后,過(guò)程完成,這時(shí)廢料收集程序可以繼續(xù)初始化過(guò)程,或者可以進(jìn)入非活動(dòng)狀態(tài),等待來(lái)自操作系統(tǒng)的適當(dāng)行動(dòng)。
現(xiàn)在參看圖8,這是廢料收集程序借以接收環(huán)境變量的更新值以便動(dòng)態(tài)配置廢料收集程序的流程圖。過(guò)程開(kāi)始時(shí)動(dòng)態(tài)廢料收集程序根據(jù)計(jì)算環(huán)境或平臺(tái)確定檢查或取回環(huán)境變量的方法(步驟802)。確定用于得到環(huán)境變量的適當(dāng)方法的過(guò)程可以和用圖7所示的過(guò)程相似。在確定該方法之后,動(dòng)態(tài)廢料收集程序進(jìn)入非活動(dòng)狀態(tài),等候軟件中斷或其它類型的激活(步驟804)。確定是否廢料收集程序應(yīng)該被激活(步驟806)。如果不,則廢料收集程序停留在非活動(dòng)狀態(tài)。如果是,廢料收集程序根據(jù)其預(yù)定的方法得到環(huán)境變量的新值(步驟808)。
圖8描寫(xiě)的是動(dòng)態(tài)廢料收集程序借以得到環(huán)境變量新值的三種方法。例如,動(dòng)態(tài)的廢料收集程序可以在周期性核對(duì)期間取回新值(步驟810)。這類執(zhí)行可以在動(dòng)態(tài)廢料收集程序預(yù)先確定它負(fù)責(zé)監(jiān)視一組環(huán)境變量以便檢測(cè)在一組環(huán)境變量?jī)?nèi)一或多個(gè)控制變量或參數(shù)的更新的時(shí)候進(jìn)行。根據(jù)這一實(shí)現(xiàn)方案,環(huán)境變量的值可以在操作系統(tǒng)特有平臺(tái)文件內(nèi),或者如果動(dòng)態(tài)廢料收集程序被實(shí)現(xiàn)為Java虛擬機(jī)的一部分,控制變量的值可以放置在Java虛擬機(jī)內(nèi)。或者,動(dòng)態(tài)的廢料收集程序可以是Java虛擬機(jī)里存儲(chǔ)區(qū)管理的一部分,并且必要的控制變量可以存儲(chǔ)在操作系統(tǒng)專用平臺(tái)文件內(nèi)。動(dòng)態(tài)的廢料收集程序取回更新的變量或參數(shù)的新值,并儲(chǔ)存新值以供在動(dòng)態(tài)廢料收集程序內(nèi)選擇或修改行為算法用。
一個(gè)替代方法是,動(dòng)態(tài)廢料收集程序可以接收通知廢料收集程序環(huán)境變量已經(jīng)被更新的更新消息,并且動(dòng)態(tài)的廢料收集程序從適當(dāng)?shù)攸c(diǎn)取回環(huán)境變量的新值(步驟812)。在動(dòng)態(tài)的廢料收集程序?qū)刂谱兞炕騾?shù)的更新的通知進(jìn)行注冊(cè)但是還依靠其它的一些系統(tǒng)功能來(lái)檢測(cè)對(duì)該控制變量或參數(shù)的更新情況的時(shí)候情況是這樣。動(dòng)態(tài)的廢料收集程序可以接收更新消息內(nèi)的更新值,或者可以在接收更新消息時(shí)從適當(dāng)?shù)攸c(diǎn)取回新值。不論在哪一種情況下,動(dòng)態(tài)的廢料收集程序然后都可以根據(jù)更新的控制變量或環(huán)境變量的值選擇,或者修改適當(dāng)?shù)男袨樗惴ā?br>
在動(dòng)態(tài)的廢料收集程序可以得到新值的方式的又一個(gè)例子中,動(dòng)態(tài)廢料收集程序內(nèi)的例程可以被調(diào)用,使得例程可以取回新值(步驟814)。這可以發(fā)生在動(dòng)態(tài)廢料收集程序已經(jīng)注冊(cè)了擬為通知控制變量或環(huán)境變量的更新而被調(diào)用的例程的時(shí)候。在這種情況下,動(dòng)態(tài)廢料收集程序依靠系統(tǒng)功能,通過(guò)硬件配置,用戶輸入等等監(jiān)視或檢測(cè)環(huán)境變量的更新。
如果動(dòng)態(tài)的廢料收集程序已經(jīng)實(shí)現(xiàn)作為Java虛擬機(jī)的一部分,那么例程可以注冊(cè)為掛鉤(異常分支指令)。掛鉤是一個(gè)回調(diào)例程,該例程由系統(tǒng)注冊(cè),這樣,它可以得到關(guān)于事件發(fā)生的通知。這類機(jī)制允許一個(gè)例程將其自身插入到和該事件關(guān)聯(lián)的控制流中。如果根據(jù)事件該例程要求了某一類型的行動(dòng),那么例程可以執(zhí)行一些功能,并返還控制給例程被調(diào)用的那一點(diǎn)。否則,如果不需要行動(dòng),那么例程僅僅將控制返還回例程的調(diào)用者。這樣,例程提供允許系統(tǒng)在必要的時(shí)候“回調(diào)”例程的“掛鉤”。
不論哪種方法被用于得到環(huán)境變量的新值,動(dòng)態(tài)廢料收集程序都可以儲(chǔ)存用于確定和修改動(dòng)態(tài)廢料收集程序內(nèi)的適當(dāng)行為算法的新值(步驟816)。然后,確定動(dòng)態(tài)廢料收集程序是否應(yīng)該返回非活動(dòng)狀態(tài)(步驟818)。如果是,那么動(dòng)態(tài)廢料收集程序返回非活動(dòng)狀態(tài)(步驟804)。如果不是,那么過(guò)程在獲得新控制變量值方面的工作完成。
現(xiàn)在參看圖9,這是描寫(xiě)按照本發(fā)明動(dòng)態(tài)廢料收集程序賴以操作的過(guò)程的流程圖。過(guò)程開(kāi)始時(shí),操作系統(tǒng)初始化對(duì)廢料收集程序的執(zhí)行(步驟902)。動(dòng)態(tài)的廢料收集程序可以根據(jù)在配置文件中的環(huán)境變量或值選擇適當(dāng)?shù)男袨樗惴?,或者可以根?jù)環(huán)境變量所表示的參數(shù)修改行為算法(步驟904)。然后動(dòng)態(tài)廢料收集程序使用所選擇或者修改的行為算法來(lái)釋放,或者解分配存儲(chǔ)區(qū)(步驟906)。一旦廢料收集程序完成其存儲(chǔ)區(qū)管理功能,動(dòng)態(tài)廢料收集程序返回不活躍的狀態(tài)一段時(shí)間,直到操作系統(tǒng)重新初始化其執(zhí)行為止(步驟908)。
圖9描述當(dāng)執(zhí)行動(dòng)態(tài)廢料收集程序的操作系統(tǒng)確定需要存儲(chǔ)區(qū)管理功能的時(shí)候,該操作系統(tǒng)的遞歸過(guò)程。動(dòng)態(tài)廢料收集程序根據(jù)已經(jīng)采用通過(guò)各種方法得到的環(huán)境變量或參數(shù)而選擇和/或修改的行為算法執(zhí)行這些存儲(chǔ)區(qū)管理功能。得到這些變量的方法分別在圖4-8中闡述。圖5顯示了幾類數(shù)據(jù)流,通過(guò)這些數(shù)據(jù)流動(dòng)態(tài)廢料收集程序可以接收或者得到動(dòng)態(tài)設(shè)置廢料收集程序的行為算法的數(shù)據(jù)。圖6顯示操作系統(tǒng)通過(guò)用戶輸入或系統(tǒng)配置結(jié)構(gòu)協(xié)助存儲(chǔ)環(huán)境變量的例子。圖7表示的是操作系統(tǒng)如何提供運(yùn)行期支持以便把更新值動(dòng)態(tài)傳遞給廢料收集程序,這樣,廢料收集程序不需要為重構(gòu)目的而被暫停。圖8顯示無(wú)需對(duì)廢料收集程序采用分裂性的重構(gòu)過(guò)程即可使廢料收集程序可以接收環(huán)境變量和參數(shù)的更新值的辦法。
現(xiàn)在參看圖10A-10B,這些圖表描寫(xiě)了能使廢料收集程序動(dòng)態(tài)選擇預(yù)定義的配置結(jié)構(gòu)的設(shè)置組合。圖10A表示的是當(dāng)被稱作為GC_MACHINE_TYPE的環(huán)境變量1002具有值SERVER(服務(wù)器)的時(shí)候可以被使用的表1000。在時(shí)間的某一點(diǎn),被叫做GC_MACHINE_TYPE的環(huán)境變量已經(jīng)設(shè)置,從而匹配廢料收集程序正在其上執(zhí)行的計(jì)算平臺(tái)的類型。在這種情況下,廢料收集程序正在其配置結(jié)構(gòu)可以改變的服務(wù)器(SERVER)上執(zhí)行。表1000用一個(gè)尺度來(lái)表示存儲(chǔ)區(qū)1006的大小和處理器1004的速度。根據(jù)SERVER的配置,表1000的各條目描述的是被動(dòng)態(tài)廢料收集程序使用的行為算法的參數(shù)。當(dāng)存儲(chǔ)器的大小增加時(shí),行為算法所用參數(shù)的值減少。當(dāng)SERVER有256兆位的存儲(chǔ)器的時(shí)候,動(dòng)態(tài)廢料收集程序在它執(zhí)行其存儲(chǔ)區(qū)管理功能的時(shí)候采取主動(dòng)性的行為。
當(dāng)SERVER有2 GB存儲(chǔ)器的時(shí)候,行為算法參數(shù)已經(jīng)被設(shè)置,這樣,動(dòng)態(tài)廢料收集程序采取執(zhí)行存儲(chǔ)區(qū)管理功能的遲緩方式。用類似的方法,當(dāng)SERVER的處理器速度變化的時(shí)候,動(dòng)態(tài)廢料收集程序所表達(dá)的行為特性也可以有所變化。例如,當(dāng)服務(wù)器有2 GB的存儲(chǔ)器和133MHz的處理器速度的時(shí)候,動(dòng)態(tài)廢料收集程序可以采取遲緩的行為。不過(guò),當(dāng)服務(wù)器有2 GB的存儲(chǔ)器和750 MHz的處理器速度的時(shí)候,動(dòng)態(tài)的廢料收集程序可以采取主動(dòng)性的行為。在該例子中,當(dāng)存儲(chǔ)區(qū)的大小增加時(shí),系統(tǒng)管理者在確定SERVER內(nèi)的存儲(chǔ)器較大從而允許動(dòng)態(tài)廢料收集程序采取更遲緩的行為之后,可能已經(jīng)選擇了環(huán)境變量或配置參數(shù)。另一方面,系統(tǒng)管理者可能已經(jīng)確定了更快速的處理器速度將允許動(dòng)態(tài)廢料收集程序更經(jīng)常地執(zhí)行存儲(chǔ)區(qū)管理功能,而不會(huì)影響SERVER的全面性能。因此,系統(tǒng)管理者可以設(shè)置環(huán)境變量,使得動(dòng)態(tài)廢料收集程序以更快速的速度采取更具主動(dòng)性的行為。
圖10B表示的是當(dāng)環(huán)境變量GC_MACHINE_TYPE 1052的值為HANDHELD(手持)的時(shí)候所配置的表1050。在這種情況下,指定動(dòng)態(tài)廢料收集程序擬在其上執(zhí)行的計(jì)算平臺(tái)類型的環(huán)境變量被設(shè)置,使得廢料收集程序可以得知它正在PDA或其它類型的HANDHELD計(jì)算裝置上執(zhí)行。在這種情況下,表1050有一個(gè)尺度用于存儲(chǔ)器1056的大小,另一個(gè)尺度則用于可選擇的目的1054。存儲(chǔ)器的大小按照結(jié)合圖10A所闡述的相似方式標(biāo)定動(dòng)態(tài)廢料收集程序的行為。
不過(guò),在圖10B中,用戶使用手持裝置的目的已經(jīng)通過(guò)適當(dāng)?shù)挠脩糨斎胙b置被選出。然后可以采用作可選目的使用的用戶輸入,對(duì)表進(jìn)行索引,從而選擇動(dòng)態(tài)的廢料收集程序的適當(dāng)行為。例如,如果用戶使手持裝置配置了8兆位的存儲(chǔ)器并且主要將手持裝置用于諸如接收和發(fā)送電子信件的通信目的,那么動(dòng)態(tài)廢料收集程序可以有遲緩的行為。如果用戶主要使用手持裝置作數(shù)據(jù)存儲(chǔ)目的,比如保留日歷信息和其它類型的文件,那么動(dòng)態(tài)廢料收集程序可以采取適度的行為。如果手持裝置的用戶將手持裝置的目的選擇為一般的使用范疇,則該表可以指示動(dòng)態(tài)廢料收集程序?qū)ζ浯鎯?chǔ)區(qū)管理功能采取主動(dòng)性的行為。用于一般使用目的的主動(dòng)性行為可以在各種不能預(yù)先為人所知的境況下使動(dòng)態(tài)廢料收集程序采取最高效率的操作。
在圖10A-10B所示的表中,可以預(yù)期動(dòng)態(tài)廢料收集程序內(nèi)的行為算法的各設(shè)定值,比如遲緩,適度,和主動(dòng)性,為行為算法在動(dòng)態(tài)廢料收集程序內(nèi)的操作提供總的方向。不過(guò),表中用于特定計(jì)算平臺(tái)的每個(gè)條目都可以由一組在動(dòng)態(tài)廢料收集程序的行為算法內(nèi)使用的參數(shù)構(gòu)成。換句話說(shuō),表中的每個(gè)條目都可以有指明廢料收集程序操作的方式的某個(gè)特征。例如,每個(gè)條目都可以有規(guī)定廢料收集程序的存儲(chǔ)區(qū)管理行動(dòng)的頻度的暫存值。
“遲緩的”行為-“主動(dòng)性的”行為的描述符描述的是與動(dòng)態(tài)廢料收集程序的處理的時(shí)間方面相關(guān)的一系列動(dòng)作或動(dòng)作譜。大部分系統(tǒng)設(shè)計(jì)的最優(yōu)先目標(biāo)是使性能最大化,同時(shí)將對(duì)系統(tǒng)其它部分的輔助影響減少到最小。廢料收集程序的各個(gè)過(guò)程可以由特定時(shí)間間隔內(nèi)的行動(dòng)數(shù)加以量化,并且量化器“遲緩”和“主動(dòng)性”嘗試捕獲廢料收集程序和一定時(shí)間間隔內(nèi)的過(guò)程有關(guān)聯(lián)的任何方面或特性。例如,遲緩行為可以理解為意指,和廢料收集有關(guān)的開(kāi)銷應(yīng)該保持在最低限度,并且廢料收集程序應(yīng)當(dāng)僅僅在絕對(duì)必要的時(shí)候,比如可以利用的存儲(chǔ)器數(shù)量變得較低時(shí)才工作。主動(dòng)性的行為可以被認(rèn)為是和廢料收集有關(guān)聯(lián)的開(kāi)銷應(yīng)該相對(duì)忽略。在這種配置中,廢料收集程序應(yīng)該比較經(jīng)常地運(yùn)作,甚至是在處理器已經(jīng)有較重的處理負(fù)荷的情況中。需要注意的一個(gè)重點(diǎn)是動(dòng)態(tài)廢料收集程序有一定的用戶化行為范圍,它是可量化的某些特征。
另一個(gè)參數(shù)可以規(guī)定每次廢料收集程序被激活時(shí)廢料收集程序可以消費(fèi)的處理器時(shí)間量。另一個(gè)參數(shù)可以規(guī)定每次執(zhí)行廢料收集程序時(shí)存儲(chǔ)區(qū)或存儲(chǔ)塊中擬被廢料收集程序檢查的對(duì)象數(shù)。換句話說(shuō),一個(gè)參數(shù)可以設(shè)定廢料收集程序每500毫秒被激活一次。但是,如果裝置配置有更多的存儲(chǔ)器,那么對(duì)應(yīng)的參數(shù)可以被增加,從而廢料收集程序以1000毫秒的頻率執(zhí)行。如果平臺(tái)裝置有更快的處理器速度,那么廢料收集程序在對(duì)其存儲(chǔ)區(qū)管理功能的每次啟動(dòng)時(shí)可以允許執(zhí)行較長(zhǎng)的時(shí)間。在那種情況下,可以確定廢料收集程序應(yīng)該進(jìn)行更長(zhǎng)周期的處理,因?yàn)楦斓奶幚砥魉俣瓤梢栽试S其它并列執(zhí)行的應(yīng)用以較短的時(shí)間量執(zhí)行。
該表?xiàng)l目?jī)?nèi)的另一個(gè)參數(shù)可以規(guī)定,當(dāng)存儲(chǔ)器數(shù)較小的時(shí)候,存儲(chǔ)器里的全部對(duì)象都應(yīng)該由廢料收集程序核查以便解除分配,而當(dāng)存儲(chǔ)器數(shù)量較大時(shí),可以核查存放在存儲(chǔ)器內(nèi)的較小數(shù)量的對(duì)象。這樣,動(dòng)態(tài)廢料收集程序內(nèi)的算法的遲緩行為-主動(dòng)性行為可以由為動(dòng)態(tài)廢料收集程序的操作提供可測(cè)量的特性的其它參數(shù)構(gòu)成。然后,這些設(shè)置使用戶或系統(tǒng)管理者能夠?qū)?dòng)態(tài)的廢料收集程序設(shè)定低,適度或者高的性能?;蛘?,起撥動(dòng)開(kāi)關(guān)作用的環(huán)境變量可以允許用戶啟動(dòng)和關(guān)停廢料收集程序的存儲(chǔ)區(qū)管理動(dòng)作。在這種情況下,調(diào)試應(yīng)用程序的系統(tǒng)開(kāi)發(fā)者能根據(jù)對(duì)軟件錯(cuò)誤的考慮刪除動(dòng)態(tài)廢料收集程序的動(dòng)作。
其它的環(huán)境變量和參數(shù)可以被用來(lái)設(shè)置動(dòng)態(tài)廢料收集程序的特性。除圖10B表示的可選目的外,一個(gè)參數(shù)可以允許對(duì)實(shí)時(shí)數(shù)據(jù)處理作出說(shuō)明。除了安裝在設(shè)置有動(dòng)態(tài)廢料收集程序的數(shù)據(jù)處理系統(tǒng)里的存儲(chǔ)器大小和處理器的時(shí)鐘速度(如圖10A所示)以外,一個(gè)參數(shù)還可以指定安裝在數(shù)據(jù)處理系統(tǒng)里的處理器數(shù)量??梢酝ㄟ^(guò)表示數(shù)據(jù)處理系統(tǒng)機(jī)器型號(hào)的變量指定的其它計(jì)算平臺(tái),除圖10A-10B所示的服務(wù)器(SERVER)和手持(HANDHELD)計(jì)算機(jī)外,還可以包括工作站,臺(tái)式電腦,筆記本計(jì)算機(jī),嵌入式計(jì)算機(jī)或巨型計(jì)算機(jī)。
其它的運(yùn)行期考慮事項(xiàng)可以被用來(lái)設(shè)置供動(dòng)態(tài)廢料收集程序用的適當(dāng)環(huán)境變量。特定類型軟件應(yīng)用程序的安裝可以規(guī)定對(duì)于一或多種已安裝的應(yīng)用程序應(yīng)當(dāng)遵循特定的廢料收集程序行動(dòng)。例如,如果特定的已安裝應(yīng)用程序要求能夠得到的空閑存儲(chǔ)區(qū)大小應(yīng)盡可能大,那么無(wú)論這是否招致性能降低,環(huán)境變量都可以如此設(shè)置,使得動(dòng)態(tài)廢料收集程序總是展現(xiàn)出主動(dòng)性的行為。不過(guò),進(jìn)一步的修改并非如在安裝了特定類型的應(yīng)用程序的時(shí)候總是展現(xiàn)主動(dòng)性的行為那樣,而是動(dòng)態(tài)廢料收集程序僅僅在這類應(yīng)用程序在執(zhí)行的時(shí)候才可以采取主動(dòng)性的行為策略。然后,動(dòng)態(tài)廢料收集程序?qū)⒃谌绱说膽?yīng)用程序不在執(zhí)行的時(shí)候展現(xiàn)更穩(wěn)健的行為策略。
另一個(gè)運(yùn)行期環(huán)境的考慮事項(xiàng)是,系統(tǒng)管理者可以對(duì)特定應(yīng)用程序列出時(shí)間表,以便在一天的特定時(shí)刻或一星期中的某天執(zhí)行。在這種情況下,能夠配置動(dòng)態(tài)廢料收集程序,使得它按指定的時(shí)間表采取特定的行為策略。這樣,然后用戶或系統(tǒng)管理者能根據(jù)將被放到數(shù)據(jù)處理系統(tǒng)上的處理負(fù)載來(lái)改變行為策略。例如,如果系統(tǒng)管理者知道某些需要大量存儲(chǔ)空間的薪水支付名簿程序或財(cái)會(huì)的應(yīng)用程序?qū)⒃谝恍瞧诘哪硞€(gè)時(shí)間執(zhí)行,那么可以設(shè)置廢料收集程序的行為策略,使之對(duì)應(yīng)于該特定的處理負(fù)載?;蛘撸到y(tǒng)管理者可以建立和應(yīng)用程序有關(guān)聯(lián)的特性文件,以便對(duì)于應(yīng)用程序被執(zhí)行的每次情況將動(dòng)態(tài)廢料收集程序的行為和應(yīng)用程序的運(yùn)行期簡(jiǎn)表(profile)匹配。
本發(fā)明提供的優(yōu)點(diǎn)在考慮到上文提供的詳細(xì)說(shuō)明書(shū)應(yīng)該一目了然??梢越o廢料收集程序提供單一代碼庫(kù),使得單一的廢料收集程序在可以配置于各種計(jì)算平臺(tái)上的操作系統(tǒng)內(nèi)提供多樣化的性能和行為特性。動(dòng)態(tài)廢料收集程序可以基于多樣化算法,計(jì)算平臺(tái)參數(shù)等等,有效地進(jìn)行表驅(qū)動(dòng)。這允許廢料收集程序展現(xiàn)與在所部署的數(shù)據(jù)處理系統(tǒng)中的存儲(chǔ)器大小和處理器數(shù)量有關(guān)的可伸縮性。當(dāng)動(dòng)態(tài)廢料收集程序被實(shí)現(xiàn)在Java虛擬機(jī)內(nèi)的時(shí)候,單一的動(dòng)態(tài)廢料收集程序可以在各種計(jì)算平臺(tái)中使用,在所述計(jì)算平臺(tái)中應(yīng)當(dāng)先期需要Java虛擬機(jī)的全然不同的各種例子,以便得到所需要的性能。
重要的是應(yīng)注意到盡管在上文結(jié)合充分起作用的數(shù)據(jù)處理系統(tǒng)對(duì)本發(fā)明進(jìn)行了描述,但是本領(lǐng)域的普通技術(shù)人員將意識(shí)到本發(fā)明的各個(gè)過(guò)程能夠以指令的計(jì)算機(jī)可讀介質(zhì)和各種形式分發(fā),以及本發(fā)明同等適用,而不管實(shí)際用于實(shí)施分發(fā)操作的信號(hào)載送介質(zhì)具體是何種類型。計(jì)算機(jī)可讀介質(zhì)的例子包括可讀類型介質(zhì),比如軟磁盤(pán),硬盤(pán)驅(qū)動(dòng)器,RAM和CD-ROM,以及傳輸類型介質(zhì),比如數(shù)字和模擬通信鏈路。
上文對(duì)本發(fā)明的說(shuō)明僅僅是出于舉例和說(shuō)明目的,而不是意在窮盡本發(fā)明,或者將本發(fā)明限制在所披露的形式內(nèi)。許多的修改和變化對(duì)本領(lǐng)域的普通技術(shù)人員是一目了然的。實(shí)施例的選擇和相關(guān)說(shuō)明是為了最佳解釋本發(fā)明的原理,實(shí)際應(yīng)用,并使本領(lǐng)域的普通技術(shù)人員能夠理解對(duì)本發(fā)明各種實(shí)施例所作的滿足所預(yù)期特定用途的各種修改。
權(quán)利要求
1.在數(shù)據(jù)處理系統(tǒng)中管理存儲(chǔ)器的方法,所述方法包括下列的計(jì)算機(jī)實(shí)現(xiàn)的步驟讀取包括用于廢料收集程序的配置參數(shù)的配置文件;并且,在數(shù)據(jù)處理系統(tǒng)中執(zhí)行的廢料收集程序根據(jù)基于該配置參數(shù)的行為算法管理對(duì)存儲(chǔ)器的解分配。
2.如權(quán)利要求書(shū)1所述的方法,其特征在于配置參數(shù)選擇一組廢料收集算法中的一個(gè)算法。
3.如權(quán)利要求書(shū)1所述的方法,其特征在于進(jìn)一步包括以多個(gè)廢料收集模式中的一個(gè)模式操作廢料收集程序;并且通過(guò)設(shè)置在配置文件中的配置參數(shù),動(dòng)態(tài)在各廢料收集模式之間切換。
4.如權(quán)利要求書(shū)1所述的方法,其特征在于數(shù)據(jù)處理系統(tǒng)包括Java運(yùn)行期環(huán)境。
5.在數(shù)據(jù)處理系統(tǒng)中管理存儲(chǔ)器的方法,所述方法包括計(jì)算機(jī)實(shí)現(xiàn)的下列步驟動(dòng)態(tài)設(shè)置控制變量;并且在數(shù)據(jù)處理系統(tǒng)中執(zhí)行的廢料收集程序根據(jù)基于該控制變量的行為算法管理對(duì)存儲(chǔ)器的解除分配。
6.如權(quán)利要求書(shū)5所述的方法,其特征在于還包括監(jiān)視數(shù)據(jù)處理系統(tǒng)的一組環(huán)境變量;檢測(cè)在該組環(huán)境變量?jī)?nèi)控制變量的更新情況;由廢料收集程序取回更新后的控制變量的值;根據(jù)更新后空制變量的值選擇行為算法。
7.如權(quán)利要求書(shū)5所述的方法,其特征在于還包括注冊(cè)擬被通知以用于數(shù)據(jù)處理系統(tǒng)的控制變量的更新情況的例程;檢測(cè)用于數(shù)據(jù)處理系統(tǒng)的控制變量的更新情況;調(diào)用所注冊(cè)的例程;以及根據(jù)更新后的控制變量的值選擇行為算法。
8.如權(quán)利要求書(shū)5所述的方法,其特征在于還包括注冊(cè)關(guān)于一個(gè)控制變量的更新情況的通知;檢測(cè)該控制變量的更新情況;發(fā)送關(guān)于該控制變量的更新情況的通知;以及根據(jù)更新后的控制變量的值選擇行為算法。
9.如權(quán)利要求書(shū)5所述的方法,其特征在于控制變量存儲(chǔ)在一個(gè)操作系統(tǒng)注冊(cè)文件中。
10.如權(quán)利要求書(shū)5所述的方法,其特征在于控制變量以一個(gè)操作系統(tǒng)環(huán)境變量的形式存儲(chǔ)。
11.如權(quán)利要求書(shū)5所述的方法,其特征在于所述例程注冊(cè)為掛鉤。
12.如權(quán)利要求書(shū)5所述的方法,其特征在于控制變量由該數(shù)據(jù)處理系統(tǒng)的用戶動(dòng)態(tài)設(shè)置。
13.如權(quán)利要求書(shū)5所述的方法,其特征在于控制變量由用戶通過(guò)指令線接口調(diào)用該控制變量的更新情況而動(dòng)態(tài)設(shè)置。
14.如權(quán)利要求書(shū)5所述的方法,其特征在于控制變量代表數(shù)據(jù)處理系統(tǒng)的從下列組別中選出的一或多個(gè)特征安裝在數(shù)據(jù)處理系統(tǒng)中的存儲(chǔ)器的大小;安裝在數(shù)據(jù)處理系統(tǒng)中的處理器數(shù);安裝在數(shù)據(jù)處理系統(tǒng)中的處理器的時(shí)鐘速度;數(shù)據(jù)處理系統(tǒng)的機(jī)型,其中機(jī)型代表服務(wù)器,工作站,臺(tái)式計(jì)算機(jī),筆記本計(jì)算機(jī),手持計(jì)算機(jī),或嵌入式計(jì)算機(jī);用于數(shù)據(jù)處理系統(tǒng)的可選目的,其中可選目的代表實(shí)時(shí)數(shù)據(jù)處理,數(shù)據(jù)存儲(chǔ)管理,通信管理或一般用途;安裝的應(yīng)用程序;安裝的應(yīng)用程序組合;執(zhí)行應(yīng)用程序;執(zhí)行應(yīng)用程序的組合;一天的當(dāng)前時(shí)間;一周的當(dāng)前日期;以及數(shù)據(jù)處理系統(tǒng)的處理負(fù)載。
15.如權(quán)利要求書(shū)14所述的方法,其特征在于行為算法的性能是在對(duì)數(shù)據(jù)處理系統(tǒng)的各特征的數(shù)值進(jìn)行加權(quán)的情況下計(jì)算的。
16.如權(quán)利要求書(shū)14所述的方法,其特征在于行為算法的類型由數(shù)據(jù)處理系統(tǒng)的特征表選定。
17.如權(quán)利要求書(shū)5所述的方法,其特征在于行為算法支配從下列組中選出的一或多個(gè)特征存儲(chǔ)器管理動(dòng)作的頻率;存儲(chǔ)器管理動(dòng)作所使用的處理器時(shí)間量;以及存儲(chǔ)器中擬被廢料收集程序核查的對(duì)象數(shù);
18.如權(quán)利要求書(shū)5所述的方法,其特征在于控制變量選擇用于行為算法的性能的一組離散值之一。
19.如權(quán)利要求書(shū)18所述的方法,其特征在于所述離散值組包括低、中等或高性能。
20.如權(quán)利要求書(shū)5所述的方法,其特征在于控制變量將廢料收集程序的管理動(dòng)作接通和/或關(guān)斷。
21.如權(quán)利要求書(shū)5所述的方法,其特征在于控制變量選擇用于廢料收集程序的行為算法的類型。
22.如權(quán)利要求書(shū)5所述的方法,其特征在于廢料收集程序在Java虛擬機(jī)中進(jìn)行操作。
23.計(jì)算機(jī)可讀介質(zhì)中的用于在數(shù)據(jù)處理系統(tǒng)中管理存儲(chǔ)器的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括動(dòng)態(tài)設(shè)置控制變量的第一指令;和,在數(shù)據(jù)處理系統(tǒng)中執(zhí)行的廢料收集程序根據(jù)基于該控制變量的行為算法管理對(duì)存儲(chǔ)器的解除分配的第二指令。
24.如權(quán)利要求書(shū)23所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于還包括監(jiān)視數(shù)據(jù)處理系統(tǒng)的一組環(huán)境變量的指令;檢測(cè)在該組環(huán)境變量?jī)?nèi)控制變量的更新情況的指令;由廢料收集程序取回更新后的控制變量的值的指令;根據(jù)更新后空制變量的值選擇行為算法的指令。
25.如權(quán)利要求書(shū)23所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于還包括注冊(cè)指令,用于注冊(cè)擬被調(diào)用從而通知以用于數(shù)據(jù)處理系統(tǒng)的控制變量的更新情況的例程;檢測(cè)用于數(shù)據(jù)處理系統(tǒng)的控制變量的更新情況的指令;調(diào)用所注冊(cè)的例程的指令;以及根據(jù)更新后的控制變量的值選擇行為算法的指令。
26.如權(quán)利要求書(shū)23所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于還包括注冊(cè)關(guān)于該控制變量的一次更新情況的通知的指令;檢測(cè)該控制變量的更新情況的指令;發(fā)送關(guān)于該控制變量的更新情況的通知的指令;以及根據(jù)更新后的控制變量的值選擇行為算法的指令。
27.如權(quán)利要求書(shū)23所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于控制變量存儲(chǔ)在一個(gè)操作系統(tǒng)注冊(cè)文件中。
28.如權(quán)利要求書(shū)23所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于控制變量以操作系統(tǒng)環(huán)境變量的形式存儲(chǔ)。
29.如權(quán)利要求書(shū)25所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于所述例程注冊(cè)為掛鉤。
30.如權(quán)利要求書(shū)23所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于控制變量由該數(shù)據(jù)處理系統(tǒng)的用戶動(dòng)態(tài)設(shè)置。
31.如權(quán)利要求書(shū)23所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于控制變量由用戶通過(guò)指令線接口調(diào)用該控制變量的更新情況而動(dòng)態(tài)設(shè)置。
32.如權(quán)利要求書(shū)23所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于控制變量代表數(shù)據(jù)處理系統(tǒng)的從下列組別中選出的一或多個(gè)特征安裝在數(shù)據(jù)處理系統(tǒng)中的存儲(chǔ)器的大?。话惭b在數(shù)據(jù)處理系統(tǒng)中的處理器數(shù);安裝在數(shù)據(jù)處理系統(tǒng)中的處理器的時(shí)鐘速度;數(shù)據(jù)處理系統(tǒng)的機(jī)型,其中機(jī)型代表服務(wù)器,工作站,臺(tái)式計(jì)算機(jī),筆記本計(jì)算機(jī),手持計(jì)算機(jī),或嵌入式計(jì)算機(jī);用于數(shù)據(jù)處理系統(tǒng)的可選目的,其中可選目的代表實(shí)時(shí)數(shù)據(jù)處理,數(shù)據(jù)存儲(chǔ)管理,通信管理或一般用途;安裝的應(yīng)用程序;安裝的應(yīng)用程序的組合;執(zhí)行應(yīng)用程序;執(zhí)行應(yīng)用程序的組合;一天的當(dāng)前時(shí)間;一周的當(dāng)前日期;以及數(shù)據(jù)處理系統(tǒng)的處理負(fù)載。
33.如權(quán)利要求書(shū)32所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于行為算法的性能是在對(duì)數(shù)據(jù)處理系統(tǒng)的各特征的數(shù)值進(jìn)行加權(quán)的情況下計(jì)算的。
34.如權(quán)利要求書(shū)32所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于行為算法的類型由數(shù)據(jù)處理系統(tǒng)的特征表選定。
35.如權(quán)利要求書(shū)23所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于行為算法支配從下列組中選出的一或多個(gè)特征存儲(chǔ)器管理動(dòng)作的頻率;存儲(chǔ)器管理動(dòng)作所使用的處理器時(shí)間量;以及存儲(chǔ)器中擬被廢料收集程序核查的對(duì)象數(shù);
36.如權(quán)利要求書(shū)23所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于控制變量選擇用于行為算法的性能的一組離散值之一。
37.如權(quán)利要求書(shū)36所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于所述離散值組包括低、中等或高性能。
38.如權(quán)利要求書(shū)23所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于控制變量將廢料收集程序的管理動(dòng)作接通和/或關(guān)斷。
39.如權(quán)利要求書(shū)23所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于控制變量選擇用于廢料收集程序的行為算法的類型。
40.如權(quán)利要求書(shū)23所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于廢料收集程序在Java虛擬機(jī)中進(jìn)行操作。
41.計(jì)算機(jī)可讀介質(zhì)中的用于在數(shù)據(jù)處理系統(tǒng)中管理存儲(chǔ)器的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括動(dòng)態(tài)設(shè)置控制變量的第一指令;和,用于廢料收集程序的第二指令,它具有根據(jù)該控制變量的在數(shù)據(jù)處理系統(tǒng)中的第一行為和在第二計(jì)算機(jī)系統(tǒng)上的根據(jù)該控制變量的第二行為。
42.?dāng)?shù)據(jù)處理系統(tǒng),用于在該數(shù)據(jù)處理系統(tǒng)中管理存儲(chǔ)器,所述數(shù)據(jù)處理系統(tǒng)包括動(dòng)態(tài)設(shè)置控制變量的設(shè)置裝置;和在數(shù)據(jù)處理系統(tǒng)中執(zhí)行的廢料收集程序根據(jù)基于該控制變量的行為算法,來(lái)管理對(duì)存儲(chǔ)器的解除分配的管理裝置。
43.如權(quán)利要求書(shū)42所述的數(shù)據(jù)處理系統(tǒng),其特征在于還包括監(jiān)視數(shù)據(jù)處理系統(tǒng)的一組環(huán)境變量的的監(jiān)視裝置;檢測(cè)在該組環(huán)境變量?jī)?nèi)控制變量的更新情況的檢測(cè)裝置;由廢料收集程序取回更新后的控制變量的值的取回裝置;根據(jù)更新后控制變量的值選擇行為算法的選擇裝置。
44.如權(quán)利要求書(shū)42所述的數(shù)據(jù)處理系統(tǒng),其特征在于控制變量選擇用于行為算法的性能的一組離散值之一。
45.如權(quán)利要求書(shū)42所述的數(shù)據(jù)處理系統(tǒng),其特征在于控制變量選擇用于廢料收集程序的行為算法的類型。
46.如權(quán)利要求書(shū)42所述的數(shù)據(jù)處理系統(tǒng),其特征在于廢料收集程序在Java虛擬機(jī)中進(jìn)行操作。
全文摘要
用于可動(dòng)態(tài)調(diào)整且可配置的廢料收集程序的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。該動(dòng)態(tài)廢料收集程序獲得環(huán)境變量或變量組或參數(shù)的數(shù)值。這些變量可通過(guò)用戶輸入設(shè)置或在配置計(jì)算機(jī)平臺(tái)時(shí)設(shè)置。變量值可在執(zhí)行廢料收集程序期間修改或更新,廢料收集程序接收或取回新修改的值。然后,廢料收集程序根據(jù)包含了環(huán)境變量或參數(shù)數(shù)值的行為算法或根據(jù)由環(huán)境變量所選的行為算法執(zhí)行存儲(chǔ)區(qū)管理功能。
文檔編號(hào)G06F15/00GK1290897SQ0011885
公開(kāi)日2001年4月11日 申請(qǐng)日期2000年6月15日 優(yōu)先權(quán)日1999年6月30日
發(fā)明者K·R·勞倫斯 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司