欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

信息處理裝置和庫管理方法與流程

文檔序號:11233879閱讀:264來源:國知局
信息處理裝置和庫管理方法與流程

本發(fā)明涉及用于管理在類路徑中設(shè)置的庫的信息處理裝置和庫管理方法。



背景技術(shù):

在java(注冊商標(biāo))執(zhí)行環(huán)境中,通過類加載器進(jìn)行類(執(zhí)行中需要的代碼)的加載。通過在具有jar(java歸檔)格式的庫中的類文件來定義類。通過多個(gè)類的類文件來構(gòu)成庫,并且通常按特定功能來劃分庫。注意,需要預(yù)先在java(注冊商標(biāo))執(zhí)行環(huán)境中設(shè)置指示庫存在的位置的路徑作為類路徑。這允許在加載類時(shí),類加載器從設(shè)置在類路徑中的庫中搜索類以加載。在此,類加載器消耗文件描述符以通過參照庫來搜索類。在java(注冊商標(biāo))執(zhí)行環(huán)境中,為了提高性能或者為了防止破壞對庫的參照和運(yùn)行變得不穩(wěn)定,參照曾經(jīng)被參照過的庫直到在執(zhí)行環(huán)境中運(yùn)行的程序結(jié)束。因此,通過類加載器參照庫而消耗的文件描述符被持續(xù)消耗直到程序結(jié)束。

在嵌入式設(shè)備中,在作為應(yīng)用執(zhí)行環(huán)境的信息處理裝置中可用的資源是有限的。文件描述符是一種類型的資源,并且可用的文件描述符的數(shù)量存在限制。因此,執(zhí)行以下操作。首先,開發(fā)者確定針對應(yīng)用使用的資源量的上限值。當(dāng)用戶管理員啟動(dòng)應(yīng)用時(shí),應(yīng)用管理框架基于該上限值來確認(rèn)未超出信息處理裝置可用的資源量。

作為傳統(tǒng)技術(shù),存在如下技術(shù):檢測根本未被使用的類,并從類路徑中刪除具有未被使用的類的庫(例如,日本特開2005-293084號公報(bào))。

日本特開2005-293084號公報(bào)留下具有在類路徑中被使用的類的庫。換言之,如果存在大量的、在類路徑中被使用的類的庫,則會(huì)消耗大量的文件描述符。因此,如果超出可用的文件描述符的數(shù)量,則結(jié)果使啟動(dòng)處理受影響。尤其是,如果庫的數(shù)量由于功能擴(kuò)展或軟件更新而持續(xù)增加,被消耗的文件描述符的數(shù)量將會(huì)增加。



技術(shù)實(shí)現(xiàn)要素:

鑒于以上內(nèi)容,即使使用的庫的數(shù)量增加,本發(fā)明也能夠抑制文件描述符的消耗。

本發(fā)明具有如下配置。

本發(fā)明的一個(gè)方面提供了一種信息處理裝置,包括:加載單元,用于當(dāng)執(zhí)行已安裝的程序時(shí),打開包含通過所述程序使用的類的庫并加載所述類,所述加載單元根據(jù)被打開的庫的數(shù)量來消耗量的資源;確定單元,用于確定包括針對所述已安裝的程序而設(shè)置的類的庫的數(shù)量是否為多個(gè);整合單元,用于如果確定庫的數(shù)量為多個(gè),則將庫中包括的類整合為數(shù)量小于庫的數(shù)量的整合庫;以及刪除單元,用于刪除除了不通過加載單元訪問的庫以外的、包含所述整合庫中所包括的類的整合前的庫。

本發(fā)明的另一個(gè)方面提供了一種信息處理裝置的庫管理方法。所述信息處理裝置具有加載單元,用于當(dāng)執(zhí)行已安裝的程序時(shí),打開包含通過所述程序使用的類的庫并加載所述類,所述加載單元根據(jù)被打開的庫的數(shù)量來消耗量的資源,所述方法包括:確定包括針對安裝程序而設(shè)置的類的庫的數(shù)量是否為多個(gè);如果確定庫的數(shù)量為多個(gè),則將庫中包括的類整合為數(shù)量小于庫的數(shù)量的整合庫;以及刪除除了不通過加載單元訪問的庫以外的、包含所述整合庫中所包括的類的整合前的庫。

憑借本發(fā)明,能夠降低在加載類的時(shí)候消耗的文件描述符的數(shù)量,并且能夠減輕伴隨庫文件的增加而引起的文件描述符的問題。此外,即使當(dāng)存在用于直接訪問庫文件的模型時(shí),能夠執(zhí)行操作而沒有問題,并且能夠?qū)崿F(xiàn)存儲(chǔ)的使用量的降低。

通過下面參照附圖對示例性實(shí)施例的描述,本發(fā)明的其他特征將變得清楚。

附圖說明

圖1是在第一實(shí)施例的圖像形成裝置的構(gòu)造圖。

圖2是在第一實(shí)施例的圖像形成裝置的硬件構(gòu)造圖。

圖3是在第一實(shí)施例的圖像形成裝置中的應(yīng)用執(zhí)行環(huán)境的構(gòu)造圖。

圖4a和圖4b是第一實(shí)施例中的啟動(dòng)選項(xiàng)配置文件的構(gòu)造圖。

圖5a、圖5b和圖5c是第一實(shí)施例中的應(yīng)用配置文件的構(gòu)造圖。

圖6a和圖6b是第一實(shí)施例中的庫配置文件的構(gòu)造圖。

圖7是在第一實(shí)施例中訪問文件列表的示例。

圖8表示在第一實(shí)施例中圖像形成裝置100中的庫布置。

圖9a和圖9b是表示在第一實(shí)施例的庫中的類文件的布置的圖。

圖10a是表示在第一實(shí)施例中圖像形成裝置的處理的流程的流程圖。

圖10b是表示在第一實(shí)施例中圖像形成裝置的處理的流程的流程圖。

圖10c是表示在第一實(shí)施例中圖像形成裝置的處理的流程的流程圖。

圖10d是表示在第一實(shí)施例中圖像形成裝置的處理的流程的流程圖。

圖11是在第二實(shí)施例中啟動(dòng)選項(xiàng)配置文件的構(gòu)造圖。

圖12是在第二實(shí)施例中應(yīng)用配置文件的構(gòu)造圖。

圖13a和圖13b是表示在第二實(shí)施例的庫中類文件的布置的圖。

圖14是表示在第二實(shí)施例中圖像形成裝置的處理流程的流程圖。

圖15a和圖15b表示在第三實(shí)施例中的圖像形成裝置的處理流程的流程圖。

具體實(shí)施方式

下面,將使用附圖描述用于執(zhí)行本發(fā)明的實(shí)施例。

[第一實(shí)施例]

圖1中描述的是示出本發(fā)明的第一實(shí)施例的整體系統(tǒng)的構(gòu)造的圖。

圖像形成裝置100是實(shí)施本實(shí)施例的信息處理裝置的示例,并且,例如是多功能外圍設(shè)備(mfp)。信息處理裝置101管理圖像形成裝置100。網(wǎng)絡(luò)120將圖像形成裝置100和信息處理裝置101相連。通過經(jīng)由網(wǎng)絡(luò)120使用圖像形成裝置100而使用信息處理裝置101。應(yīng)用a110是在圖像形成裝置100上運(yùn)行的應(yīng)用的一個(gè)示例。應(yīng)用b111是類似地在圖像形成裝置100上運(yùn)行的應(yīng)用的另一個(gè)示例。此外,應(yīng)用c112是類似地在圖像形成裝置100上運(yùn)行的應(yīng)用的其他示例??梢栽趫D像形成裝置100上運(yùn)行一個(gè)或更多個(gè)應(yīng)用。在此,示出三個(gè)應(yīng)用。此后,表達(dá)方式“應(yīng)用11n”表示由應(yīng)用a110、應(yīng)用b111和應(yīng)用c112代表的一個(gè)或更多個(gè)應(yīng)用。一般用戶和管理員可以使用圖像形成裝置100、應(yīng)用11n和用于管理圖像形成裝置100和應(yīng)用11n的資源管理裝置的基本功能。關(guān)于使用,可以直接地操作圖像形成裝置100以及經(jīng)由網(wǎng)絡(luò)120通過信息處理裝置101來操作圖像形成裝置100。

<圖像形成裝置的硬件構(gòu)造>

圖2是圖像形成裝置100的硬件構(gòu)造的模塊化圖。

核單元200是包括處理器、存儲(chǔ)器等的控制單元,并且通過處理器和存儲(chǔ)器共同工作以執(zhí)行程序來控制與核單元200連接的各種設(shè)備。此外,核單元200實(shí)現(xiàn)應(yīng)用執(zhí)行環(huán)境并執(zhí)行已安裝的應(yīng)用。用戶接口單元201、存儲(chǔ)設(shè)備202、用于連接到網(wǎng)絡(luò)120的網(wǎng)絡(luò)接口單元203、掃描器單元204、打印機(jī)單元205、整理器單元206等連接到核單元200作為外圍設(shè)備。核單元200控制這些設(shè)備并且經(jīng)由用戶接口單元201或者網(wǎng)絡(luò)120向用戶以及應(yīng)用提供其功能。

<應(yīng)用執(zhí)行環(huán)境>

圖3是用于在本實(shí)施例的圖像形成裝置100上執(zhí)行應(yīng)用11n的應(yīng)用執(zhí)行環(huán)境。

啟動(dòng)模塊300是用于啟動(dòng)應(yīng)用執(zhí)行環(huán)境的模塊。當(dāng)用戶開啟圖像形成裝置100的供電時(shí),系統(tǒng)開始運(yùn)行,并且啟動(dòng)模塊300命令lib管理模塊304進(jìn)行用于生成整合庫的處理作為用于本實(shí)施例的處理。lib管理模塊304是用于實(shí)施本實(shí)施例的模塊,并且是用于將在類路徑中設(shè)置的庫重新生成為一個(gè)整合庫的模塊。在生成整合庫的處理結(jié)束之后,啟動(dòng)模塊300啟動(dòng)應(yīng)用執(zhí)行平臺301。應(yīng)用執(zhí)行平臺301是java(注冊商標(biāo))執(zhí)行環(huán)境,并且例如是java(注冊商標(biāo))vm(虛擬機(jī))。類加載器302是用于加載類的模塊。通過系統(tǒng)程序執(zhí)行應(yīng)用,并且當(dāng)在其中使用類時(shí),通過類加載器302從包含由類路徑指定的類的庫中動(dòng)態(tài)地加載類。

如果命令沒有被加載的類的執(zhí)行處理,則類加載器302從設(shè)置在類路徑中的庫中搜索被命令的執(zhí)行處理的類。類是用于應(yīng)用執(zhí)行平臺301執(zhí)行命令的可執(zhí)行代碼,并且類路徑是指示包含類的庫的位置的路徑信息。類路徑包括第一類路徑和第二類路徑,第一類路徑中包括系統(tǒng)所需的類,第二類路徑中包括用于各個(gè)應(yīng)用11n的類。盡管,系統(tǒng)被狹義地定義為操作系統(tǒng),但是在該示例中,還可以表示除應(yīng)用之外的并且包括操作系統(tǒng)的軟件模塊。第一類路徑是加載系統(tǒng)的類所需的路徑,并且包括引導(dǎo)(boot)類路徑和系統(tǒng)類路徑中的各個(gè)或者包括至少其中之一。引導(dǎo)類路徑是指示包含用于啟動(dòng)java(注冊商標(biāo))執(zhí)行環(huán)境所需的類的庫的位置的路徑。系統(tǒng)類路徑是指示包含用于啟動(dòng)應(yīng)用執(zhí)行平臺301和應(yīng)用管理框架303所需的類的庫的位置的路徑。第二類路徑是指示包含應(yīng)用的類的庫的位置的應(yīng)用類路徑(或者app類路徑)。當(dāng)啟動(dòng)模塊300啟動(dòng)應(yīng)用執(zhí)行平臺301時(shí),將第一類路徑傳遞到應(yīng)用執(zhí)行平臺301作為啟動(dòng)選項(xiàng)。應(yīng)用執(zhí)行平臺301注冊被傳遞的第一類路徑。第二類路徑是應(yīng)用管理框架303從應(yīng)用中包括的應(yīng)用配置文件(例如圖5a中所示的應(yīng)用配置文件502)讀取的類路徑(圖5b中所示的應(yīng)用類路徑514),并且,應(yīng)用管理框架303僅針對要被啟動(dòng)的應(yīng)用將讀取的類路徑設(shè)置為第二類路徑。因此,即使將其稱為第二類路徑,用于各個(gè)不同的應(yīng)用11n的第二類路徑是完全不同的類路徑。在本實(shí)施例中,例如應(yīng)用配置文件是java(注冊商標(biāo))清單文件。

在類加載器302在類路徑中設(shè)置的庫中搜索類,并且如果在庫中找到搜索的目標(biāo)類,則類加載器302從該庫中加載類。然后,應(yīng)用執(zhí)行平臺301執(zhí)行已加載的類。如果沒有找到目標(biāo)類,則通過諸如控制臺畫面或?yàn)g覽器畫面等的用戶接口單元201提醒用戶沒有找到該類。當(dāng)從圖像形成裝置100的系統(tǒng)開始運(yùn)行直到圖像形成裝置100的供電被用戶關(guān)閉時(shí),如果執(zhí)行未被加載的類,則由類加載器302進(jìn)行這種類加載處理。此外,開發(fā)者預(yù)先給類提供命名空間,使具有相同名稱的類不會(huì)沖突。庫是將一個(gè)或更多個(gè)類壓縮的jar(java存檔)文件。為了防止庫中的類沖突,典型的,在jar文件中配置與命名空間對應(yīng)的目錄層次(directoryhierarchy),并在其中布置類文件。在本實(shí)施例中,將描述在庫中通過命名空間目錄層次進(jìn)行配置的示例。

應(yīng)用管理框架303是管理應(yīng)用11n的安裝、卸載、執(zhí)行和終止的框架,并且例如是osgi。使用應(yīng)用管理框架303以在應(yīng)用執(zhí)行環(huán)境內(nèi)安裝并執(zhí)行應(yīng)用11n。通過管理員向應(yīng)用管理框架303請求安裝和啟動(dòng)應(yīng)用11n,應(yīng)用管理框架303進(jìn)行應(yīng)用安裝處理和應(yīng)用啟動(dòng)處理。此時(shí),應(yīng)用管理框架303參照該應(yīng)用的應(yīng)用配置文件(例如,圖5a中所示的應(yīng)用配置文件502),并確定其聲明的資源上限值(例如,圖5b中的資源上限值513)是否適合當(dāng)前應(yīng)用執(zhí)行環(huán)境中資源的可用空間。如果不適合,則導(dǎo)致應(yīng)用的啟動(dòng)失敗。

下面是對用于執(zhí)行本實(shí)施例的特殊構(gòu)成元件的描述。

lib管理模塊304是用于生成整合庫305的模塊。從啟動(dòng)模塊300命令lib管理模塊304進(jìn)行整合庫生成處理。lib管理模塊304擴(kuò)展(或解壓縮)在啟動(dòng)選項(xiàng)配置文件(例如,圖4a中的啟動(dòng)選項(xiàng)配置文件400)的第一類路徑(例如,圖4a中的類路徑402)中設(shè)置的所有庫,和在應(yīng)用配置文件(例如,圖5a中的應(yīng)用配置文件502)的第二類路徑(例如,圖5b中的類路徑514)中設(shè)置的所有庫。擴(kuò)展的類被再次壓縮為jar文件格式作為新的整合庫。在創(chuàng)建整合庫之后,lib管理模塊304將啟動(dòng)選項(xiàng)配置文件(例如,圖4a中的啟動(dòng)選項(xiàng)配置文件400)中的第一類路徑(例如,圖4a中的類路徑402)的配置改變?yōu)閮H新生成的整合庫。此外,lib管理模塊304刪除在應(yīng)用配置文件(例如,圖5a中的應(yīng)用配置文件502)的第二類路徑(例如,圖5b中的類路徑514)中設(shè)置的所有庫的描述。只有收集了設(shè)置為第一類路徑或第二類路徑的多個(gè)庫中的類組的整合庫被設(shè)置在第一類路徑,并且類加載器302能夠通過僅查找整合庫而搜索需要的類。

此外,lib管理模塊304從整合前的庫中存在的應(yīng)用配置文件502或庫配置文件601中,針對各個(gè)庫指定用于直接訪問而無需通過類加載器302的文件。指定的文件被注冊在訪問文件列表306中。此外,在生成整合庫之后,lib管理模塊304刪除未被注冊在訪問文件列表306中的庫文件。由此,因?yàn)閯h除了不必要的文件,所以節(jié)約了磁盤空間,并且即使不通過類加載器302來執(zhí)行文件訪問,也能夠?qū)崿F(xiàn)正確的操作。注意,在直接訪問庫而不使用類加載器302的情況下,不消耗文件描述符。

整合庫305是由類加載器302加載的庫,并且包括由lib管理模塊304創(chuàng)建的整合庫。如前面所述,整合庫是壓縮被設(shè)置在第一類路徑或第二類路徑中的多個(gè)庫的類組的庫,jar文件格式。當(dāng)包含在整合庫中的類被類加載器加載一次時(shí),能夠由應(yīng)用執(zhí)行平臺301、應(yīng)用管理框架303和應(yīng)用11n執(zhí)行。

訪問文件列表306是用于管理無需經(jīng)過類加載器302而直接訪問的文件的表格,并且由lib管理模塊304執(zhí)行其細(xì)節(jié)的更新。

<啟動(dòng)選項(xiàng)配置文件的示例>

圖4a和圖4b是說明描述本實(shí)施例的啟動(dòng)選項(xiàng)配置的典型文件細(xì)節(jié)的圖。

圖4a是示出在被本實(shí)施例中的lib管理模塊304改變之前的啟動(dòng)選項(xiàng)配置文件400的圖。啟動(dòng)選項(xiàng)配置文件400是lib管理模塊304生成整合庫并改變文件細(xì)節(jié)之前的啟動(dòng)選項(xiàng)配置文件。路徑401是指示用于啟動(dòng)應(yīng)用執(zhí)行平臺301的可執(zhí)行文件位置的位置信息。路徑402是指示庫的位置的位置信息并且對應(yīng)于第一類路徑。庫403是被設(shè)置在第一類路徑的各個(gè)庫的位置信息。設(shè)置在第一類路徑402中的庫403包括應(yīng)用執(zhí)行平臺301和應(yīng)用管理框架303執(zhí)行處理所需的類組。主程序404是應(yīng)用執(zhí)行平臺301啟動(dòng)應(yīng)用管理框架303所需的主程序的位置信息。

圖4b是示出被本實(shí)施例中的lib管理模塊304改變后的啟動(dòng)選項(xiàng)配置文件410的圖。啟動(dòng)選項(xiàng)配置文件410是在lib管理模塊304生成整合庫并改變了文件細(xì)節(jié)之后的啟動(dòng)選項(xiàng)配置文件。例如,啟動(dòng)選項(xiàng)配置文件410是通過改變啟動(dòng)選項(xiàng)配置文件400獲得的。啟動(dòng)模塊300讀取啟動(dòng)選項(xiàng)配置文件410的細(xì)節(jié),并將讀取的細(xì)節(jié)用作應(yīng)用執(zhí)行平臺301的啟動(dòng)選項(xiàng)。整合庫411是設(shè)置在第一類路徑中的整合庫的位置信息。在生成整合庫之后,lib管理模塊304將整合庫的路徑添加到啟動(dòng)選項(xiàng)配置文件400的類路徑設(shè)置中,并且從第一類路徑402中刪除除整合庫之外的庫的路徑。

<應(yīng)用文件示例>

圖5a是說明構(gòu)成本實(shí)施例中的應(yīng)用11n的典型文件細(xì)節(jié)的圖。應(yīng)用11n具有多種類型的文件。應(yīng)用可執(zhí)行代碼文件500是包括諸如應(yīng)用的可執(zhí)行代碼的文件。應(yīng)用包含庫501是執(zhí)行應(yīng)用的處理所需的庫。在執(zhí)行應(yīng)用11n的處理中,如果在第一類路徑402中設(shè)置的庫403中的特定類不足且無法實(shí)現(xiàn)功能,則開發(fā)者為應(yīng)用準(zhǔn)備了庫作為應(yīng)用包含庫501。應(yīng)用配置文件502是描述諸如應(yīng)用id的基本信息、應(yīng)用使用的資源上限值以及第二類路徑的文件。應(yīng)用配置文件502是由開發(fā)者預(yù)先定義的,并且與應(yīng)用可執(zhí)行代碼文件500和應(yīng)用包含庫501一起包括在應(yīng)用11n中。

圖5b是示出在設(shè)置在第二類路徑514中的庫的描述被lib管理模塊304刪除之前,應(yīng)用配置文件502中描述的項(xiàng)目示例的圖。應(yīng)用名稱511是應(yīng)用11n的名稱。在圖像形成裝置100的用戶接口單元201等上顯示應(yīng)用名稱511。應(yīng)用id512是為使應(yīng)用管理框架303唯一地識別各個(gè)應(yīng)用11n而添加的識別信息。資源上限值513是應(yīng)用11n利用的資源的上限值。為每個(gè)資源定義資源上限值513。開發(fā)者預(yù)先測量應(yīng)用11n可以利用的資源的上限值,并且在應(yīng)用配置文件502中將測量的上限值聲明為資源上限值513。當(dāng)安裝和啟動(dòng)應(yīng)用11n時(shí),應(yīng)用管理框架303參照該資源上限值513。然后,確定應(yīng)用是否適合當(dāng)前應(yīng)用執(zhí)行環(huán)境內(nèi)的資源的可用空間,如果適合則啟動(dòng)該應(yīng)用,并且如果不適合,則使應(yīng)用11n的啟動(dòng)失敗。第二類路徑514是指示當(dāng)執(zhí)行應(yīng)用11n的處理時(shí)所需的應(yīng)用可執(zhí)行代碼文件500或應(yīng)用包含庫501的位置的信息。路徑515是在第二類路徑中設(shè)置的應(yīng)用可執(zhí)行代碼文件500或應(yīng)用包含庫501的位置的信息。

直接訪問文件設(shè)置516是應(yīng)用執(zhí)行直接訪問的庫文件的位置的信息,并且lib管理模塊304用于管理不經(jīng)過類加載器302而被直接訪問的庫文件。當(dāng)通過類加載器302處理庫中的文件時(shí),因?yàn)楸蛔x出的文件取決于類路徑搜索順序,所以如果在多個(gè)庫中包括相同名稱的文件,則存在讀出非本意的文件的可能性。因此,在期待讀出確實(shí)是本意的文件的情況下,應(yīng)用可以不經(jīng)過類加載器302而直接訪問文件。直接訪問文件設(shè)置516準(zhǔn)備管理上述文件。

在圖5b中,為了描述簡單,盡管應(yīng)用可執(zhí)行代碼文件500的路徑通過相對路徑設(shè)置,但是也可以通過絕對路徑來描述。此外,代表性的應(yīng)用包含庫501是未設(shè)置在第一類路徑402中的庫,所以需要將它們的位置指示為第二類路徑514。

圖5c是示出lib管理模塊304將在第二類路徑514中設(shè)置的庫的描述刪除之后,在應(yīng)用配置文件502中描述的項(xiàng)目示例的圖。當(dāng)啟動(dòng)模塊300命令lib管理模塊304用于整合庫的生成處理時(shí),lib管理模塊304參照應(yīng)用配置文件502的第二類路徑514。設(shè)置在那里的應(yīng)用包含庫501被擴(kuò)展,并且將在第一類路徑402中設(shè)置的庫和應(yīng)用包含庫內(nèi)的類再次壓縮成jar文件格式作為整合庫。之后,lib管理模塊304將第一類路徑402僅改變?yōu)樾律傻恼蠋?。通過該改變而獲得第一類路徑411。lib管理模塊304將在應(yīng)用配置文件502的第二類路徑514中設(shè)置的庫的描述刪除。應(yīng)用配置文件520是將第二類路徑514中設(shè)置的庫的描述刪除之后的應(yīng)用配置文件。第二類路徑521僅被設(shè)置在應(yīng)用可執(zhí)行代碼文件500的路徑。路徑522是在第二類路徑中設(shè)置的應(yīng)用可執(zhí)行代碼文件500的位置信息。由于通過路徑515設(shè)置的庫被lib管理模塊304作為整合庫305而設(shè)置在啟動(dòng)選項(xiàng)配置文件的第一類路徑411,所以lib管理模塊304將庫的設(shè)置從應(yīng)用配置文件中刪除。注意,在本實(shí)施例中,啟動(dòng)選項(xiàng)配置文件和應(yīng)用配置文件可以被統(tǒng)稱為配置文件。

<庫布置的示例>

圖6a是用于說明配置本實(shí)施例中整合之前的庫的代表性文件的細(xì)節(jié)的圖。庫具有多種類型的文件。庫可執(zhí)行代碼文件600是包括例如庫的可執(zhí)行代碼的文件。庫配置文件601是描述文件名稱和可被直接訪問的文件信息的文件。庫配置文件601由開發(fā)者預(yù)先定義(生成),并與庫可執(zhí)行代碼文件600一起包括在庫中。

圖6b是庫配置文件601的示例。庫名稱611是庫的名稱。庫版本612是庫的版本。當(dāng)在操作單元上顯示版本時(shí),使用例如庫名稱611和庫版本612。直接訪問文件設(shè)置613是庫直接訪問的庫的位置的信息。直接訪問文件設(shè)置613由lib管理模塊304參考,并作為用于管理被直接訪問的庫的信息使用。在這個(gè)配置文件的示例中,例示了copy庫的版本1.0直接訪問兩個(gè)文件,libsystem001.jar和libsystem002.jar。

<訪問文件列表的示例>

圖7是示例了由lib管理模塊304管理的訪問文件列表306的示例的圖。從被直接訪問的文件的路徑配置訪問文件列表306。當(dāng)執(zhí)行庫整合處理時(shí),lib管理模塊304從在應(yīng)用配置文件502或庫配置文件中描述的、執(zhí)行直接訪問的文件的位置信息中獲取信息,以生成訪問文件列表306。位置信息包括根據(jù)應(yīng)用表示直接訪問文件的位置的直接訪問文件設(shè)置516,并且包括根據(jù)庫表示直接訪問文件的位置的直接訪問文件設(shè)置613。此外,當(dāng)在庫整合之后刪除庫文件時(shí),lib管理模塊304控制從而不刪除在訪問文件列表306中注冊的文件。

<庫布置的示例>

圖8是以樹形表示的在圖像形成裝置100中庫布置的示例的結(jié)構(gòu)圖。文件夾801是用于布置在第一類路徑402中設(shè)置的庫的文件夾。在文件夾801中布置由lib管理模塊304生成的整合庫802和被直接訪問的庫804。可以被直接訪問的庫804由訪問文件列表306管理。在庫整合以節(jié)約存儲(chǔ)容量之后,刪除不被直接訪問的庫(但是整合庫除外)。整合庫802是由lib管理模塊304生成的庫。在生成整合庫802之后,lib管理模塊304將該庫802設(shè)置在第一類路徑411。文件夾803是用于布置在圖像形成裝置100安裝的應(yīng)用11n的文件夾。當(dāng)應(yīng)用11n被安裝時(shí),應(yīng)用管理框架303從應(yīng)用11n中提取應(yīng)用包含庫501,并將其布置在用于應(yīng)用存儲(chǔ)的文件夾803中。然后,當(dāng)圖像形成裝置啟動(dòng)時(shí),由lib管理模型304整合庫。此時(shí),除了被直接訪問的庫以外的庫均被刪除。在圖5a所示的應(yīng)用配置文件502的情況下,僅布置被直接訪問的文件libpa1.jar。

<類文件的布置的示例>

圖9a和圖9b是由樹形表示的本實(shí)施例的庫中的類文件的布置的示例的結(jié)構(gòu)圖。

圖9a是示例針對lib管理模塊304擴(kuò)展以收集并壓縮類文件的庫的內(nèi)部的圖。庫901到904是被設(shè)置在第一類路徑402的庫,并示出了包含在庫中的類文件及其布置。庫905到906是被設(shè)置在第二類路徑514中的庫,并示出了包含在庫中的類文件及其布置。

圖9b是示例在lib管理模塊304擴(kuò)展庫并壓縮所有類文件之后生成的整合庫的內(nèi)部結(jié)構(gòu)的圖。庫910是被設(shè)置在第一類路徑411中的整合庫,并示出了包含在庫中的類文件及其布置。因?yàn)閳D9a描述的類文件被全部布置在整合庫中,所以類加載器301能夠僅通過從該整合庫中搜索類,找到執(zhí)行處理所需的類。由此,能夠減低打開庫的數(shù)量,并且能夠抑制所使用的文件描述符的數(shù)量。

<圖像形成裝置的應(yīng)用相關(guān)處理>

圖10a是示意性的表示本實(shí)施例的從用戶開啟圖像形成裝置100電源到關(guān)閉電源的處理流程的流程圖。通過核單元200(特別是核單元200中包括的處理器)執(zhí)行圖10a中的流程。該流程例如由操作系統(tǒng)啟動(dòng),并且通過軟件模塊執(zhí)行各步驟來運(yùn)行。盡管在下面的描述中軟件被描述為代理,但是軟件是虛擬處理代理,實(shí)際實(shí)體是執(zhí)行軟件的處理器或處理器核。

當(dāng)用戶開啟圖像形成裝置100的電源時(shí),操作系統(tǒng)開始運(yùn)行,首先啟動(dòng)啟動(dòng)模塊300,并且,在步驟s10101中,啟動(dòng)模塊300命令lib管理模塊304進(jìn)行整合庫生成處理。將參照圖10b描述該處理。當(dāng)lib管理模塊304完成整合庫生成處理時(shí),在步驟s10102,啟動(dòng)模塊300利用啟動(dòng)選項(xiàng)配置文件410的細(xì)節(jié)作為啟動(dòng)選項(xiàng)來啟動(dòng)應(yīng)用執(zhí)行平臺301。當(dāng)應(yīng)用執(zhí)行平臺301啟動(dòng)時(shí),主程序404的處理被執(zhí)行并進(jìn)行處理。類加載器302作為應(yīng)用執(zhí)行平臺301的一部分監(jiān)督類加載。在步驟s10103,類加載器302在類生成時(shí)確定類是否已被加載。在步驟s10103,當(dāng)類加載器302確定應(yīng)用執(zhí)行平臺301、應(yīng)用管理框架303或應(yīng)用11n在主程序執(zhí)行期間執(zhí)行類生成處理時(shí),處理進(jìn)行到步驟s10104,并且如果未執(zhí)行處理,則處理進(jìn)行到步驟s10106。在步驟s10104,類加載器302進(jìn)行類加載處理。當(dāng)類加載處理結(jié)束時(shí),應(yīng)用執(zhí)行平臺301、應(yīng)用管理框架303或應(yīng)用11n在步驟s10105生成類,并且處理進(jìn)行到步驟s10106。在步驟s10106中,在啟動(dòng)主程序之后,應(yīng)用執(zhí)行平臺301基于例如來自操作系統(tǒng)等的通知而確定用戶是否已經(jīng)關(guān)閉圖像形成裝置100的電源。如果確定電源已被關(guān)閉,則應(yīng)用執(zhí)行平臺301進(jìn)行用于關(guān)斷圖像形成裝置100的電源的處理并且圖像形成裝置100的系統(tǒng)結(jié)束。如果電源未被關(guān)閉,則返回步驟s10103,應(yīng)用執(zhí)行平臺301繼續(xù)執(zhí)行主程序。

以這種方式,應(yīng)用執(zhí)行平臺301一旦被啟動(dòng)就在步驟s10103至s10106的環(huán)中監(jiān)督類的生成和電源關(guān)閉。當(dāng)類被生成時(shí),類被加載,并且,在電源被關(guān)閉時(shí),進(jìn)行電源關(guān)閉處理。

<整合庫的生成以及用于刪除個(gè)別文件的處理>

圖10b是步驟s10101的詳細(xì)流程圖,并且是表示在向啟動(dòng)模塊300發(fā)出針對整合庫生成處理的命令時(shí),lib管理模塊304的處理流程的流程圖。

在步驟s10201,lib管理模塊304確定多個(gè)庫是否被設(shè)置在第一類路徑402和第二類路徑514中。如果確定一個(gè)庫被設(shè)置,則lib管理模塊304終止處理而無需執(zhí)行整合庫生成處理。然而,如果確定多個(gè)庫被設(shè)置,則處理進(jìn)行到步驟s10202。

在步驟s10202,lib管理模塊304存儲(chǔ)被設(shè)置在第一類路徑402和第二類路徑514中的所有庫。因?yàn)檫@具有在改變第一類路徑402和第二類路徑514之后參考改變前的類路徑設(shè)置信息的目的,所以如果能夠?qū)崿F(xiàn)該目的,則可以采用如下配置:存儲(chǔ)在存儲(chǔ)器中或存儲(chǔ)在獨(dú)立的文件中。當(dāng)設(shè)置在類路徑中的庫信息被存儲(chǔ)時(shí),處理進(jìn)行到步驟s10203。

在步驟s10203,lib管理模塊304清除在訪問文件列表306中注冊的信息以重新生成訪問文件列表306的信息。

下面,在步驟s10204,lib管理模塊304針對第一類路徑402中描述的庫和已安裝應(yīng)用,開始循環(huán)處理直到步驟s10207。

下面,在步驟s10205,lib管理模塊304讀取配置文件601或配置文件502,并確定直接訪問文件設(shè)置613或516是否分別存在于該配置文件中。如果確定直接訪問文件設(shè)置存在,則處理進(jìn)行到步驟s10206,以及如果確定不存在,則處理進(jìn)行到步驟s10207。

在步驟s10206,lib管理模塊304向訪問文件列表306添加直接訪問文件設(shè)置613的信息,并且處理進(jìn)行到步驟s10207。

在步驟s10207,lib管理模塊304確定是否已針對所有庫和應(yīng)用執(zhí)行了循環(huán)處理。如果沒有針對所有庫和應(yīng)用執(zhí)行循環(huán)處理,則處理返回至步驟s10204,以及如果已針對所有庫和應(yīng)用執(zhí)行了循環(huán)處理,則處理進(jìn)行到步驟s10208。

在步驟s10208,lib管理模塊304執(zhí)行庫整合處理和類路徑改變處理。稍后將通過圖10c描述該處理的細(xì)節(jié)。當(dāng)lib管理模塊304結(jié)束該處理,處理進(jìn)行到步驟s10209。

在步驟s10209,lib管理模塊304針對步驟s10202中存儲(chǔ)的庫開始用于該處理的循環(huán)處理,直到步驟s10212。

在步驟s10210,lib管理模塊304確定與訪問文件列表306對應(yīng)的庫是否被注冊。如果確定已被注冊,則處理進(jìn)行到步驟s10212,以及如果確定未被注冊,則處理進(jìn)行到步驟s10211。

在步驟s10211,lib管理模塊304刪除對應(yīng)的庫文件,并且處理進(jìn)行到步驟s10212。

在步驟s10212,lib管理模塊304確定是否已針對步驟s10202中存儲(chǔ)的所有庫執(zhí)行了處理。如果沒有針對所有庫執(zhí)行處理,則處理返回至步驟s10209,以及如果已針對所有庫執(zhí)行了處理,則離開循環(huán),并且lib管理模塊的處理終止。

根據(jù)上述處理,在啟動(dòng)選項(xiàng)配置文件400和應(yīng)用配置文件502中描述的、在啟動(dòng)時(shí)以及通過應(yīng)用所使用的庫進(jìn)行整合,能夠降低庫的數(shù)量并且降低諸如消耗的文件描述符的資源。此外,關(guān)于通過應(yīng)用或庫而不是通過lib管理模塊304訪問的類文件,通過保留且不刪除它們,而是通過刪除不對應(yīng)的類文件,能夠抑制諸如存儲(chǔ)器或內(nèi)存的資源的消耗。

<庫整合處理和庫路徑改變處理>

圖10c是步驟s10208的詳細(xì)流程圖,并且是示例lib管理模塊304整合庫文件并重寫類路徑402和514的處理的流程的流程圖。

在步驟s10301,lib管理模塊304讀出啟動(dòng)選項(xiàng)配置文件400,并且擴(kuò)展在第一類路徑402中設(shè)置的所有的庫403。此時(shí),lib管理模塊304從在描述順序中最后描述的庫開始,按順序擴(kuò)展庫。例如,在圖4a中描述的細(xì)節(jié)的情況下,lib管理模塊304以如下的順序擴(kuò)展庫:libsystem004.jar(未示出),libsystem003.jar,libsystem002.jar以及l(fā)ibsystem001.jar。這樣,通過從較晚描述的庫開始按順序擴(kuò)展,如果相同的類名稱恰巧存在于相同的命名空間并沖突,則能夠通過較晚擴(kuò)展的類文件(換句話說通過較早描述的類文件)覆寫較早擴(kuò)展的類文件。典型的,如果存在與相同命名空間和相同類名稱的沖突,則加載首先在類路徑中設(shè)置的類文件。因此,如果發(fā)生類之間的沖突,則通過利用較早描述的庫的類文件覆寫(換句話說通過較晚擴(kuò)展的類文件覆寫),能夠保留在典型環(huán)境下應(yīng)該確實(shí)被加載的類。

下面處理進(jìn)行到步驟s10302,lib管理模塊304針對已安裝的應(yīng)用擴(kuò)展在第二類路徑514中設(shè)置的所有應(yīng)用包含庫501。此時(shí),lib管理模塊304從在描述順序中最后描述的庫開始按順序擴(kuò)展庫。當(dāng)用于應(yīng)用包含庫504的擴(kuò)展處理結(jié)束時(shí),處理進(jìn)行到步驟s10303。在步驟s10303,lib管理模塊304將在步驟s10301和步驟s10302中擴(kuò)展的所有類文件壓縮為一個(gè)jar文件格式作為整合庫(這里是libinteg.jar)。例如,整合庫具有將整合前的庫整合到如圖9b所示的樹形結(jié)構(gòu)的結(jié)構(gòu)。換句話說,庫被整合以使整合之前的庫中相關(guān)的類結(jié)構(gòu)維持在整合之后的庫中。類文件可以被存儲(chǔ)在相同的文件夾中作為整合目標(biāo)的類文件。

在步驟s10304,lib管理模塊304將在步驟s10303中壓縮并生成的整合庫添加到第一類路徑402的設(shè)置中,并刪除除了整合庫之外的庫的描述。由此,啟動(dòng)選項(xiàng)配置文件400具有像啟動(dòng)選項(xiàng)配置文件410那樣的描述細(xì)節(jié)。

下面,處理進(jìn)行到步驟s10305,lib管理模塊304從第二類路徑514的設(shè)置中刪除庫文件的設(shè)置。由此,應(yīng)用配置文件502具有像應(yīng)用配置文件520那樣的描述細(xì)節(jié)。當(dāng)用于刪除第二類路徑514的設(shè)置的處理完成時(shí),處理進(jìn)行到步驟s10306。在步驟s10306,lib管理模塊304刪除在步驟s10301和s10302中擴(kuò)展的文件,并終止庫整合處理和類路徑改變處理。

通過上述處理,在啟動(dòng)選項(xiàng)配置文件400和應(yīng)用配置文件中描述的庫被整合。

<在類生成時(shí)通過類加載器302的處理>

圖10d是步驟s10104的詳細(xì)流程圖,并且是示例當(dāng)主程序的執(zhí)行期間生成類時(shí)類加載器302的處理的流程的流程圖。

在步驟s10401,類加載器302確定是否已執(zhí)行未被當(dāng)前執(zhí)行的主程序加載的類。如果類已完成加載,則終止用于類加載的處理,并且處理繼續(xù)主程序的處理。如果類沒有被加載,則處理進(jìn)行到步驟s10402。在步驟s10402,類加載器確定類路徑中描述的庫是否被打開。如果庫被打開,則處理進(jìn)行到步驟s10404,如果沒有被打開,則處理進(jìn)行到步驟s10403。在步驟s10403,類加載器302打開被設(shè)置在第一類路徑411中的庫。此時(shí),因?yàn)橐粋€(gè)文件被打開,所以類加載器302消耗一個(gè)文件描述符。處理進(jìn)行到步驟s10404。在步驟s10404,類加載器302確定要被加載的類是否在庫中。如果找到了要被加載的類,則在步驟s10405中,類加載器302從庫中加載類,并且類加載處理結(jié)束。如果沒有找到期望被加載的類,則在步驟s10406中,類加載器302確定是否已搜索了在類路徑中描述的所有庫。如果確定沒有搜索所有庫,則處理返回至步驟s10402,針對下一個(gè)庫執(zhí)行用于確定的處理。然而,在本實(shí)施例中,因?yàn)閷⑺袔煳募蠟橐粋€(gè),并且在第一類路徑中僅存在該整合庫,所以處理不返回至步驟s10402。因此,由于在步驟s10403中的文件打開處理針對整合庫僅被執(zhí)行一次,所以對于類加載使用的文件描述符的數(shù)量只有一個(gè)。換句話說,即使庫文件由于功能增加等而增加,使用的文件描述符的數(shù)量也不會(huì)增加。

與此同時(shí),如果在步驟s10406確定已搜索了所有庫,則處理進(jìn)行到步驟s10407。在步驟s10407,類加載器302返回表示類未找到的錯(cuò)誤,并且類加載處理終止。

注意,因?yàn)槠谕诒緦?shí)施例中使用典型的類加載器,所以步驟s10406的確定總是具有相同的結(jié)果(已搜索所有庫的確定),并且執(zhí)行不必要的確定處理。然而,本發(fā)明不限于該配置,可以配置為使用省略步驟s10406的確定處理的特殊的類加載器(換句話說處理直接從步驟s10404進(jìn)行到步驟s10407)。

如上所述,在本發(fā)明的第一實(shí)施例中,在應(yīng)用執(zhí)行平臺301的啟動(dòng)之前,例如在圖像形成裝置的啟動(dòng)時(shí),lib管理模塊304生成整合庫,并且僅將該整合庫設(shè)置在第一類路徑411。結(jié)果,因?yàn)樵谠撜蠋熘邪怂械念愇募?,在啟?dòng)應(yīng)用執(zhí)行平臺301之后,如果類加載器搜索類,則類加載器302能夠通過僅搜索該整合庫而找到該類。換句話說,因?yàn)轭惣虞d器302只打開一個(gè)庫,能夠?qū)⑹褂玫奈募枋龇臄?shù)量設(shè)置為1。因此,無需考慮設(shè)置在第一類路徑402中的庫的數(shù)量和設(shè)置在第二類路徑514中的庫的數(shù)量,都能夠?qū)㈩惣虞d器用來打開庫的文件描述符的數(shù)量設(shè)置為1。

此外,能夠通過在生成整合庫之后刪除整合之前的庫文件的配置,來抑制存儲(chǔ)的使用量。此外,此時(shí),該配置使得直接訪問而不經(jīng)過類加載器訪問的庫文件被保留而不被刪除。因此,即使存在直接訪問庫文件內(nèi)部的處理,也能夠操作而不會(huì)引起錯(cuò)誤發(fā)生。

注意,盡管在本實(shí)施例中存在如下的配置,即在圖像形成裝置的啟動(dòng)時(shí)lib管理模塊執(zhí)行整合庫生成處理等,但是并不限于該配置,也可以配置為在固件更新時(shí)執(zhí)行。

[第二實(shí)施例]

下面,利用圖來給出本發(fā)明第二實(shí)施例的說明。

在第一實(shí)施例中,在第一類路徑402和第二類路徑514中設(shè)置的庫中的所有類被壓縮為一個(gè)整合庫。在該配置中,能夠顯著降低文件描述符的使用數(shù)量,但是如果直接訪問的庫文件的數(shù)量增加則存儲(chǔ)的使用量變得更大。所以,這在具有小存儲(chǔ)容量的設(shè)備中可能是一個(gè)問題。在第二實(shí)施例中,針對如下配置給出說明,即當(dāng)lib管理模塊304整合庫時(shí),只整合不被直接訪問的庫,并且從個(gè)別庫文件執(zhí)行針對直接訪問的庫文件的類加載。

在第二實(shí)施例中,省略了針對圖1、圖2、圖6a、圖6b、圖7和圖8的說明,因?yàn)樯鲜龈綀D與第一實(shí)施例通用,并且以下僅描述區(qū)別部分。

在圖像形成裝置100上執(zhí)行應(yīng)用的應(yīng)用執(zhí)行環(huán)境的配置與圖3類似。然而,lib管理模塊304整合庫并改變類路徑設(shè)置的處理是不同的。特別的,當(dāng)lib管理模塊304整合庫時(shí),執(zhí)行不整合被直接訪問的庫文件的控制。所以,類似于第一實(shí)施例,當(dāng)除了被直接訪問的庫以外的文件被刪除時(shí),在lib管理模塊304執(zhí)行處理之后的全部存儲(chǔ)使用量不從庫整合處理之前改變。正因如此,能夠避免在具有小存儲(chǔ)容量的設(shè)備中存儲(chǔ)變得不足的狀態(tài)。

<啟動(dòng)選項(xiàng)配置文件的示例>

圖11是示例在本實(shí)施例中由lib管理模塊304改變啟動(dòng)選項(xiàng)配置文件1100之后,啟動(dòng)選項(xiàng)配置文件1100的圖。注意,改變之前的啟動(dòng)選項(xiàng)配置文件與第一實(shí)施例的圖4a類似。在圖11中,啟動(dòng)選項(xiàng)配置文件1100是在lib管理模塊304生成整合庫并改變文件的細(xì)節(jié)之后的啟動(dòng)選項(xiàng)配置文件。啟動(dòng)模塊300讀取啟動(dòng)選項(xiàng)配置文件400的細(xì)節(jié),并將讀取的細(xì)節(jié)用作為應(yīng)用執(zhí)行執(zhí)行平臺301的啟動(dòng)選項(xiàng)。庫1101是設(shè)置在第一類路徑中的庫的位置信息。在生成整合庫之后,lib管理模塊304將整合庫的路徑添加到啟動(dòng)選項(xiàng)配置文件400的類路徑設(shè)置中,并且刪除在訪問文件列表中不存在的庫。這里,因?yàn)檎蠋焓钦显谠L問文件列表中不存在的庫,所以變成能夠根據(jù)這些設(shè)置細(xì)節(jié)使用與整合前相同的類。

<應(yīng)用配置文件的示例>

圖12是第二實(shí)施例中在lib管理模塊304刪除在第二類路徑514中設(shè)置的庫的描述之后,在應(yīng)用配置文件中描述的項(xiàng)目的示例的圖。因?yàn)閼?yīng)用配置和被lib管理模塊304刪除之前的應(yīng)用配置文件502與第一實(shí)施例相似,因此省略對其的描述。

當(dāng)啟動(dòng)模塊300向lib管理模塊304發(fā)出命令用以整合庫的生成處理時(shí),lib管理模塊304參照應(yīng)用配置文件502的第二類路徑514和訪問文件列表。在第二類路徑中存在而不在訪問文件列表中存在的應(yīng)用包含庫被擴(kuò)展。然后,lib管理模塊304從設(shè)置在第一類路徑402中的庫整合不在訪問文件列表中存在的類,并且將它們再次壓縮為jar文件格式下的整合庫。然后,lib管理模塊304將新生成的整合庫添加到第一類路徑402中,并刪除不在訪問文件列表中存在的庫的描述。lib管理模塊304然后從應(yīng)用配置文件502的第二類路徑514中設(shè)置的庫中刪除不在訪問文件列表中存在的庫的描述。附圖標(biāo)記1200表示在刪除了第二類路徑514中設(shè)置的庫的描述之后的應(yīng)用配置文件。附圖標(biāo)記1201表示第二類路徑,應(yīng)用可執(zhí)行代碼文件500的路徑的設(shè)置和訪問文件列表中存在的庫被描述。

<類文件布置的示例>

圖13a和圖13b是通過樹形描述的第二實(shí)施例的庫中類文件的布置的示例的構(gòu)成圖。

圖13a是示例針對lib管理模塊304擴(kuò)展以收集并壓縮類文件的庫的內(nèi)部圖。樹1301到1302在第一類路徑402中設(shè)置的庫中且不在訪問文件列表中存在的庫中布置類文件。樹1303到1304在第二類路徑514中設(shè)置的庫中且不在訪問文件列表中存在的庫中布置類文件。

圖13b是示例lib管理模塊304擴(kuò)展庫并壓縮所有擴(kuò)展的類文件之后生成的整合庫的內(nèi)部圖。樹1310是在第一類路徑411中設(shè)置的整合庫中類文件的布置。在與圖9b的比較中,不整合作為在訪問文件列表中記錄的文件的libsystem001.jar和libsystem002.jar的類文件。如果只關(guān)注庫布置,在圖8中,本實(shí)施例與第一實(shí)施例通用。然而,與第一實(shí)施例的不同點(diǎn)在于在訪問文件列表中描述的類文件不包括在整合庫中。

通過這種方式,因?yàn)樵诘诙?shí)施例中的整合庫具有只整合不被直接訪問的庫的配置,所以整合庫的文件尺寸比第一實(shí)施例中的小。此外,關(guān)于不包括在整合庫中的庫,因?yàn)檫@是如下的配置,即沒有被整合的庫的設(shè)置被保留在第一類路徑和第二類路徑中,所以不缺少執(zhí)行處理所需的類。

<庫整合處理>

圖14是第二實(shí)施例中步驟s10208的詳細(xì)流程圖,并且是示例lib管理模塊304整合庫文件并重寫類路徑402和514的處理的流程的流程圖。注意,在步驟s10208,由于步驟s10204至步驟s10207的循環(huán)而已經(jīng)生成訪問文件列表。

在步驟s14101,lib管理模塊304讀取啟動(dòng)選項(xiàng)配置文件400,并擴(kuò)展在第一類路徑402中設(shè)置的庫403中且沒有被注冊到訪問文件列表306中的庫。此時(shí),lib管理模塊304從在描述順序中被最后描述的庫開始按照順序擴(kuò)展庫。例如,如果第一類路徑是圖4a的細(xì)節(jié),并且訪問文件列表是圖7的細(xì)節(jié),lib管理模塊304以libsystem004.jar和libsystem003.jar的順序擴(kuò)展庫。此外,libsystem001.jar和libsystem002.jar因?yàn)樽栽谠L問文件列表而不被擴(kuò)展。接下來,處理進(jìn)行到步驟s14102。

在步驟s14102,lib管理模塊304讀取已安裝應(yīng)用的應(yīng)用配置文件502,并且在第二類路徑514中設(shè)置的應(yīng)用包含庫501中擴(kuò)展未注冊在訪問文件列表306中的庫。此時(shí),lib管理模塊304從在描述順序中最后被描述的庫開始按照順序擴(kuò)展庫。當(dāng)用于應(yīng)用包含庫501的擴(kuò)展處理結(jié)束時(shí),處理進(jìn)行到步驟s14103。在步驟s14103,lib管理模塊304將步驟s14101和步驟s14102中擴(kuò)展的所有類文件壓縮為jar文件格式作為整合庫。結(jié)果,生成了例如圖13b中所示的整合庫1310。

在步驟s14104,lib管理模塊304將在步驟s14103中壓縮并生成的整合庫添加到啟動(dòng)選項(xiàng)配置文件400的第一類路徑402的設(shè)置中,并刪除在訪問文件列表中未注冊的庫文件的設(shè)置。由此,例如使啟動(dòng)選項(xiàng)配置文件400具有圖11所示的如啟動(dòng)選項(xiàng)配置文件1100那樣的描述細(xì)節(jié)。

下面處理進(jìn)行到步驟s14105,并且lib管理模塊304從應(yīng)用配置文件502的第二類路徑514的設(shè)置中刪除訪問文件列表中未注冊的庫文件的設(shè)置。據(jù)此,例如使應(yīng)用配置文件502具有如圖12所示的應(yīng)用配置文件1200中的描述細(xì)節(jié)。當(dāng)用于刪除第二類路徑514的設(shè)置的處理完成時(shí),處理進(jìn)行到步驟s14106。

在步驟s14106,lib管理模塊304刪除在步驟s14101和步驟s14102中擴(kuò)展的文件,并且終止庫整合處理和類路徑改變處理。

如上所述,在本發(fā)明的第二實(shí)施例中,當(dāng)在類路徑中設(shè)置整合庫時(shí),lib管理模塊304通過僅以不被直接訪問的庫為目標(biāo)來執(zhí)行整合。所以,整合庫的文件尺寸比第一實(shí)施例中的小被直接訪問的文件沒有與整合庫重疊的部分。正因如此,能夠?qū)ib管理模塊的處理完成之后的存儲(chǔ)使用量抑制到與處理之前類似的使用量。

此外,針對被直接訪問的庫,配置為在類路徑中保留其設(shè)置并且從個(gè)別庫中加載其類。所以,當(dāng)類加載器302從這些庫中打開一個(gè)庫時(shí)消耗文件描述符,并且使用的文件描述符的數(shù)量比第一實(shí)施例大。然而,因?yàn)閮H通過在整合庫中收集的庫的數(shù)量,能夠降低使用的文件描述符的數(shù)量,所以能夠?qū)崿F(xiàn)文件描述符數(shù)量的降低,即使在具有小存儲(chǔ)容量的設(shè)備中也不會(huì)發(fā)生存儲(chǔ)不足。

[第三實(shí)施例]

下面,利用附圖來給出本發(fā)明第三實(shí)施例的解釋。盡管第一實(shí)施例能夠顯著地降低使用的文件描述符,如果具有大文件尺寸的庫被直接訪問,則存儲(chǔ)的使用量會(huì)變大。相反,盡管第二實(shí)施例能夠抑制存儲(chǔ)的使用量,如果具有小文件尺寸的大量庫被直接訪問,則不能降低消耗的文件描述符的數(shù)量。在第三實(shí)施例中,根據(jù)這個(gè)情況描述如下示例:在第一實(shí)施例的方法和第二實(shí)施例的方法之間分開的處理。

在第三實(shí)施例中,因?yàn)槌藞D10b以外的其他附圖在第一實(shí)施例和第二實(shí)施例中描述的細(xì)節(jié)是通用的,所以省略對其的描述,僅描述不同之處。圖15a和15b是在本實(shí)施例中圖10a的步驟s10101的處理的細(xì)節(jié),并且是例示當(dāng)向啟動(dòng)模塊300給出用于整合庫生成處理的命令時(shí)lib管理模塊304的處理流程的流程圖。換句話說,在本實(shí)施例中,執(zhí)行圖15a和圖15b取代第一實(shí)施例中的圖10b。

在步驟s15101,lib管理模塊304確定多個(gè)庫是否被設(shè)置在第一類路徑402和第二類路徑514中。如果確定一個(gè)庫被設(shè)置,則lib管理模塊304終止處理,而不執(zhí)行整合庫生成處理。然而,如果確定多個(gè)庫被設(shè)置,則處理進(jìn)行到步驟s15102。

在步驟s15102,lib管理模塊304存儲(chǔ)在第一類路徑402和第二類路徑514中設(shè)置的所有庫。目的是在改變第一類路徑402和第二類路徑514之后,參照改變之前的類路徑的設(shè)置信息,所以如果該目的能夠?qū)崿F(xiàn),則可以采用存儲(chǔ)在其他文件中或存儲(chǔ)在內(nèi)存中的配置。當(dāng)設(shè)置在類路徑中的庫信息被存儲(chǔ)時(shí),處理進(jìn)行到步驟s15103。

在步驟s15103,lib管理模塊304清除在訪問文件列表306中注冊的信息以再次生成訪問文件列表306的信息。

下面,在步驟s15104,針對在第一類路徑402中描述的庫和安裝的應(yīng)用,lib管理模塊304開始循環(huán)處理直到步驟s15107。

下面,在步驟s15105,lib管理模塊304讀取配置文件601或配置文件502,并確定直接訪問文件設(shè)置613或516是否分別存在于配置文件中。如果確定直接訪問文件設(shè)置存在,則處理進(jìn)行到步驟s15106,并且如果確定不存在,則處理進(jìn)行到步驟s15107。

在步驟s15106,lib管理模塊304向訪問文件列表306添加直接訪問文件設(shè)置613的信息,并且處理進(jìn)行到步驟s15107。

在步驟s15107,lib管理模塊304確定是否針對所有庫和應(yīng)用已執(zhí)行了循環(huán)處理。如果沒有針對所有庫和應(yīng)用執(zhí)行循環(huán)處理,則處理返回至步驟s15104,并且如果針對所有庫和應(yīng)用已執(zhí)行循環(huán)處理,則處理進(jìn)行到步驟s15108。

在步驟s15108,lib管理模塊304計(jì)算在訪問文件列表中注冊的庫文件的總文件尺寸,并且處理進(jìn)行到步驟s15109。

在步驟s15109,lib管理模塊304確定在步驟s15108中計(jì)算的總文件尺寸是否大于或等于預(yù)定尺寸。在步驟s15109中,如果確定大于或等于預(yù)定尺寸,則處理進(jìn)行到步驟s15111,如果確定小于預(yù)定尺寸,則處理進(jìn)行到步驟s15110。這里,為了簡要描述,盡管這是通過固定的閾值做比較的流程圖,但是,例如,在獲得圖像形成裝置的可用空間之后可以動(dòng)態(tài)確定閾值。

在步驟s15110,lib管理模塊304根據(jù)圖10c的處理執(zhí)行庫整合處理和類路徑改變處理,并且處理進(jìn)行到步驟s15112。換句話說,如在第一實(shí)施例中那樣,在啟動(dòng)選項(xiàng)配置文件400和應(yīng)用配置文件502中描述的庫被整合。

在步驟s15111,lib管理模塊304根據(jù)圖14的處理執(zhí)行庫整合處理和類路徑改變處理,并且處理進(jìn)行到步驟s15112。換句話說,如第二實(shí)施例那樣,在啟動(dòng)選項(xiàng)配置文件400和應(yīng)用配置文件502中描述的庫中,僅整合不被直接訪問的那些庫。

在步驟s15112,lib管理模塊304針對存儲(chǔ)在步驟s15102中的庫啟動(dòng)用于該處理的循環(huán)處理直到步驟s15115。

在步驟s15113,lib管理模塊304確定與訪問文件列表306對應(yīng)的庫是否被注冊。如果確定它們已被注冊,則處理進(jìn)行到步驟s15115,如果確定它們沒有被注冊,則處理進(jìn)行到步驟s15114。

在步驟s15114,lib管理模塊304刪除對應(yīng)的庫文件,并且處理進(jìn)行到步驟s15115。

在步驟s15115,lib管理模塊304確定是否針對在步驟s15102中存儲(chǔ)的所有庫已執(zhí)行了處理。如果沒有針對所有庫執(zhí)行處理,則處理返回到步驟s15112,如果針對所有庫已執(zhí)行了處理,則離開循環(huán)并終止lib管理模塊的處理。

如上所述,在本發(fā)明的第三實(shí)施例中,配置為根據(jù)被直接訪問的庫的總文件尺寸,切換用于庫整合和類路徑改變的處理細(xì)節(jié)。正因如此,由于在被直接訪問的庫的總文件尺寸小于或等于閾值的情況中采用了第一實(shí)施例的方法,因此能夠在抑制存儲(chǔ)使用量的同時(shí),將使用的文件描述符的數(shù)量抑制到最小。此外,因?yàn)樵诒恢苯釉L問的庫的總文件尺寸大于閾值的情況中采用了第二實(shí)施例的方法,所以能夠在抑制文件描述符的使用量的同時(shí),將存儲(chǔ)使用量抑制到最小。由于通過這種方式根據(jù)存儲(chǔ)容量的情況采用適當(dāng)?shù)姆椒?,因此,即使針對具有小存?chǔ)容量的設(shè)備,也變得更容易降低使用的文件描述符的數(shù)量。

[變形例]

在第三實(shí)施例中,在s15109中,將被直接訪問的庫的總文件尺寸與閾值進(jìn)行比較,并且根據(jù)比較的結(jié)果,確定是否整合被直接訪問的庫。與此相反,可以采用如下的配置:要抑制文件描述符或存儲(chǔ)的消耗量的優(yōu)先次序被例如管理員指定,并且根據(jù)該指定來改變確定的基準(zhǔn)。在不需要圖15b的步驟s15108的情況下,在s15109中確定優(yōu)先的資源,并且如果文件描述符優(yōu)先,則處理分支到步驟s15110,否則,換句話說,當(dāng)存儲(chǔ)容量優(yōu)先時(shí),處理分支到步驟s15111。

可選的,在s15109中,在訪問文件列表中描述的文件數(shù)量與預(yù)定閾值(例如,通過從文件描述符的上限值中減去1(整合庫數(shù)量)而獲得的值)之間進(jìn)行比較,并且使處理根據(jù)比較結(jié)果進(jìn)行分支。例如,可以采用如下配置:如果在訪問文件列表中描述的文件數(shù)量小于或等于該閾值,則處理分支到步驟s15111,并且如果超過該閾值,則分支到步驟s15110。此外,可以是如下配置:如果在訪問文件列表中描述的文件數(shù)量超過該閾值,則將訪問文件列表中描述的一些文件整合為整合庫,并且不整合剩余的。這樣做,能夠?qū)崿F(xiàn)文件描述符的消耗量的抑制和存儲(chǔ)的消耗的抑制。

其他實(shí)施例

本發(fā)明的實(shí)施例還可以通過如下的方法來實(shí)現(xiàn),即,通過網(wǎng)絡(luò)或者各種存儲(chǔ)介質(zhì)將執(zhí)行上述實(shí)施例的功能的軟件(程序)提供給系統(tǒng)或裝置,該系統(tǒng)或裝置的計(jì)算機(jī)或是中央處理單元(cpu)、微處理單元(mpu)讀出并執(zhí)行程序的方法。

雖然已經(jīng)結(jié)合示例性實(shí)施例描述了本發(fā)明,應(yīng)當(dāng)認(rèn)識到,本發(fā)明并不局限于公開的示例性實(shí)施例。所附權(quán)利要求的范圍應(yīng)當(dāng)適合最廣泛的解釋,以便囊括所有變形、等同結(jié)構(gòu)和功能。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
龙南县| 金秀| 许昌市| 都昌县| 晋中市| 故城县| 景德镇市| 沙洋县| 深圳市| 那坡县| 伊春市| 壤塘县| 涿州市| 成都市| 曲阳县| 馆陶县| 永丰县| 湖州市| 荥经县| 泾川县| 察哈| 彭山县| 平果县| 乳山市| 临沭县| 河曲县| 丹江口市| 综艺| 衡南县| 枞阳县| 长沙县| 石嘴山市| 汝南县| 麦盖提县| 锦州市| 长岭县| 措勤县| 诏安县| 新巴尔虎右旗| 阿图什市| 吉首市|