亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

圖像處理裝置及其控制方法

文檔序號:7805629閱讀:169來源:國知局
圖像處理裝置及其控制方法
【專利摘要】本發(fā)明提供一種圖像處理裝置及其控制方法。該圖像處理裝置響應(yīng)于應(yīng)用的啟動請求,讀取所述應(yīng)用的類的類文件,在所讀取的類文件中包括的方法的開頭將用于記錄表示所述應(yīng)用的應(yīng)用信息的代碼添加到線程,并加載所述類。此外,所述圖像處理裝置在執(zhí)行所讀取的類文件中包括的所述方法期間,分配要用于待生成的對象的內(nèi)存,并將所述線程記錄中的應(yīng)用信息記錄到所分配的內(nèi)存或文件大小,同時生成所述對象并與內(nèi)存大小或盤使用量相關(guān)聯(lián)地管理所生成的對象的應(yīng)用信息。
【專利說明】圖像處理裝置及其控制方法

【技術(shù)領(lǐng)域】
[0001]本說明書涉及一種操作多個應(yīng)用的圖像處理裝置及其控制方法。

【背景技術(shù)】
[0002]當(dāng)前越來越多的多功能外圍設(shè)備(MFP)具有執(zhí)行除了內(nèi)置在MFP中功能(例如文檔的復(fù)印、掃描和打印)以外的應(yīng)用的功能。許多MFP具有Java執(zhí)行環(huán)境作為應(yīng)用執(zhí)行環(huán)境,并且能夠執(zhí)行以Java (注冊商標(biāo))記述的應(yīng)用。示例性應(yīng)用執(zhí)行環(huán)境包括佳能(注冊商標(biāo))開發(fā)的MEAP (注冊商標(biāo))。
[0003]雖然在PC上的Java的情況下,按照每個應(yīng)用一個處理的方式執(zhí)行應(yīng)用,但是許多MFP由于CPU或者內(nèi)存限制,通過使用OSGi框架等,經(jīng)由一個Java處理執(zhí)行多個應(yīng)用。因此,當(dāng)MFP上正在執(zhí)行的應(yīng)用中的一個應(yīng)用的錯誤(bug)導(dǎo)致內(nèi)存溢出時,可能發(fā)生OutOfMemoryError (內(nèi)存溢出錯誤),從而造成所有應(yīng)用停止。此外,在當(dāng)應(yīng)用請求內(nèi)存時沒有要分配的內(nèi)存的情況下,發(fā)生OutOfMemoryEiror,因此在正常運(yùn)行的應(yīng)用的執(zhí)行期間,也可能發(fā)生OutOfMemoryError。因此,難以指定造成內(nèi)存溢出的應(yīng)用。
[0004]日本特開第2005-269439號公報提出用于逐線程測量內(nèi)存的技術(shù)。然而,在例如如稍后討論的、如圖13所示的一個線程執(zhí)行多個應(yīng)用的代碼的情況下,無法測量各應(yīng)用使用的內(nèi)存。
[0005]目前,為了發(fā)現(xiàn)內(nèi)存溢出,可想到以下兩種方法。一種方法涉及使用稱為分析器(profiler)的工具來監(jiān)視由應(yīng)用生成的對象的狀態(tài)。另一方法涉及將由Java VM使用的堆內(nèi)存的內(nèi)容轉(zhuǎn)存(dumping)(下文中,“堆轉(zhuǎn)存(heap dumping)”)并分析由應(yīng)用生成的對象。
[0006]在這些方法中,由于使用分析器監(jiān)視對象的狀態(tài)極大地降低了應(yīng)用的執(zhí)行速度,因此在CPU或內(nèi)存非常有限的MFP上的應(yīng)用是成問題的。因此,使用了執(zhí)行堆轉(zhuǎn)存并分析由應(yīng)用生成的對象的技術(shù)。同樣,在一些情況下,預(yù)先確定用作應(yīng)用執(zhí)行環(huán)境的可用盤容量。在盤滿(disk full)的情況下,與內(nèi)存溢出不同,即使當(dāng)重啟MFP時,狀況也不會被自動恢復(fù)。因此,在“iR-ADV手冊”(佳能,“安裝應(yīng)用”頁,“使用應(yīng)用”頁(2013年5月17日檢索),互聯(lián)網(wǎng)〈URL:http://cweb.canon, jp/manual/ir-adv/>)中公開了如下技術(shù):應(yīng)用預(yù)先聲明使用量并且實施安裝限制以不超過該使用量。
[0007]然而,在上述傳統(tǒng)技術(shù)中存在以下問題。使用傳統(tǒng)堆轉(zhuǎn)存,從設(shè)備中提取所獲取的堆轉(zhuǎn)存信息并對其進(jìn)行分析以定位造成內(nèi)存溢出的應(yīng)用,并且對由應(yīng)用使用的內(nèi)存量進(jìn)行累計。因此,無法實時獲知各應(yīng)用的內(nèi)存使用量。另一方面,由于應(yīng)用的執(zhí)行速度極大地降低,因此實際上,使用分析器難以實時測量各應(yīng)用使用的內(nèi)存量。
[0008]即使在應(yīng)用預(yù)先聲明盤使用量并且實施安裝限制以不超過該使用量的情況下,MFP上正在執(zhí)行的應(yīng)用中的一個也可能具有錯誤并且整個應(yīng)用執(zhí)行環(huán)境可能處于盤滿狀態(tài)。在該情況下,即使在無錯誤的應(yīng)用中也發(fā)生寫入錯誤,并且不再能夠進(jìn)行正常操作。


【發(fā)明內(nèi)容】

[0009]本發(fā)明使得能夠?qū)崿F(xiàn)在維持性能的同時實時測量各應(yīng)用使用的內(nèi)存或者盤的使用量的機(jī)制。
[0010]本發(fā)明的一個方面提供一種用于執(zhí)行多個應(yīng)用的圖像處理裝置,該圖像處理裝置包括:控制單元,其被配置為響應(yīng)于應(yīng)用的啟動請求,讀取所述應(yīng)用的類的類文件,在所讀取的類文件中包括的方法中添加用于將表示所述應(yīng)用的應(yīng)用信息記錄到線程的代碼,并加載所述類;對象生成單元,其被配置為在執(zhí)行所讀取的類文件中包括的所述方法期間,分配要用于待生成的對象的內(nèi)存,并將所述線程記錄中的應(yīng)用信息記錄到所分配的內(nèi)存,并生成所述對象;以及內(nèi)存管理單元,其被配置為與內(nèi)存大小相關(guān)聯(lián)地管理由所述對象生成單元生成的所述對象的應(yīng)用信息。
[0011]本發(fā)明的另一方面提供一種用于執(zhí)行多個應(yīng)用的圖像處理裝置,該圖像處理裝置包括:控制單元,其被配置為響應(yīng)于應(yīng)用的啟動請求,讀取所述應(yīng)用的類的類文件,在所讀取的類文件中包括的方法中添加用于將表示所述應(yīng)用的應(yīng)用信息記錄到線程的代碼,并加載所述類;對象生成單元,其被配置為在執(zhí)行所讀取的類文件中包括的方法期間,分配要用于待生成的對象的文件大小,并且使用所分配的文件大小作為盤使用量來記錄所述線程中記錄的應(yīng)用信息,并生成所述對象;以及盤管理單元,其被配置為將由所述對象生成單元生成的所述對象的應(yīng)用信息與盤使用量被有聯(lián)系地管理。
[0012]本發(fā)明的又一方面提供一種圖像處理裝置的控制方法,該圖像處理裝置執(zhí)行多個應(yīng)用,所述控制方法包括如下步驟:響應(yīng)于應(yīng)用的啟動請求,通過控制單元讀取所述應(yīng)用的類的類文件,在所讀取的類文件中包括的方法中添加用于將表示所述應(yīng)用的應(yīng)用信息添加到線程的代碼,并加載所述類;在執(zhí)行所讀取的類文件中包括的所述方法期間,通過對象生成單元,分配要用于待生成的對象的內(nèi)存,將所述線程中記錄的應(yīng)用信息記錄到所分配的內(nèi)存,并生成所述對象;以及通過內(nèi)存管理單元,與內(nèi)存大小相關(guān)聯(lián)地管理由所述對象生成單元生成的所述對象的應(yīng)用信息。
[0013]本發(fā)明的再一方面提供一種圖像處理裝置的控制方法,該圖像處理裝置執(zhí)行多個應(yīng)用,所述控制方法包括如下步驟:響應(yīng)于應(yīng)用的啟動請求,通過控制單元讀取所述應(yīng)用的類的類文件,在所讀取的類文件中包括的方法中添加用于將表示所述應(yīng)用的應(yīng)用信息添加到線程的代碼,并加載所述類;在執(zhí)行所讀取的類文件中包括的所述方法期間,通過對象生成單元,分配要用于待生成的對象的文件大小,并且使用所分配的文件大小作為盤使用量來記錄所述線程中記錄的應(yīng)用信息,并生成所述對象;以及通過盤管理單元,與盤使用量相關(guān)聯(lián)地管理由所述對象生成單元生成的所述對象的應(yīng)用信息。
[0014]通過以下參照附圖對示例性實施例的描述,本發(fā)明的其他特征將變得清楚。

【專利附圖】

【附圖說明】
[0015]圖1是示出應(yīng)用管理裝置的配置的圖。
[0016]圖2是示出應(yīng)用管理裝置的軟件配置的圖。
[0017]圖3是示出應(yīng)用管理裝置的模塊配置的圖。
[0018]圖4是清單文件。
[0019]圖5是app (應(yīng)用)類加載器表以及使用內(nèi)存表。
[0020]圖6是類加載處理的流程圖。
[0021]圖7是示出添加了 TASKINF0類方法的示例性代碼的圖。
[0022]圖8是根據(jù)第一實施例的線程結(jié)構(gòu)的圖。
[0023]圖9是根據(jù)第一實施例的執(zhí)行插入了 TASKINF0命令的方法時的流程圖。
[0024]圖10是示出對象結(jié)構(gòu)以及堆內(nèi)存的圖。
[0025]圖11是示出根據(jù)第一實施例的對象生成處理的流程圖。
[0026]圖12是GC處理的流程圖。
[0027]圖13是示出多個應(yīng)用之間的示例性調(diào)用處理的圖。
[0028]圖14是根據(jù)第二實施例的線程結(jié)構(gòu)的圖。
[0029]圖15是根據(jù)第二實施例的執(zhí)行插入了 TASKINF0命令的方法時的流程圖。
[0030]圖16是示出根據(jù)第二實施例的對象生成處理的流程圖。
[0031]圖17是示出根據(jù)第三實施例的應(yīng)用管理裝置的配置的圖。
[0032]圖18是使用內(nèi)存量聲明表。
[0033]圖19是示出根據(jù)第三實施例的對象生成處理的流程圖。
[0034]圖20是示出根據(jù)第四實施例的應(yīng)用管理裝置的配置的圖。
[0035]圖21是示出使用盤表2002以及使用盤量聲明表2003的配置的圖。
[0036]圖22是根據(jù)第四實施例的清單文件的圖。
[0037]圖23是根據(jù)第四實施例的啟動時的流程圖。
[0038]圖24是FileOutputStream對象生成時的流程圖。
[0039]圖25是執(zhí)行FileOutputStream對象write方法時的流程圖。
[0040]圖26是執(zhí)行RandomAccessFile對象setLength方法時的流程圖。
[0041]圖27是執(zhí)行RandomAccessFile對象write方法時的流程圖。
[0042]圖28是執(zhí)行File對象delete方法時的流程圖。

【具體實施方式】
[0043]現(xiàn)在,參照附圖對本發(fā)明的實施例進(jìn)行詳細(xì)描述。應(yīng)當(dāng)指出,除非另外具體說明,這些實施例中描述的部件、數(shù)字表示以及數(shù)值的相對布置不限制本發(fā)明的范圍。
[0044]第一實施例
[0045]應(yīng)用管理裝置的配置
[0046]下文中,參照圖1至圖12描述本發(fā)明的第一實施例。首先,參照圖1描述應(yīng)用管理裝置100的硬件配置。應(yīng)用管理裝置100是圖像處理裝置的示例。應(yīng)用管理裝置100配設(shè)有控制器120、掃描器111、打印機(jī)112以及操作面板113,并且還配設(shè)有可拆卸的IC讀卡器116??刂破?20配設(shè)有CPU101、R0M102、RAM103、外部存儲設(shè)備104、USBH I/F控制器105、掃描器I/F控制器106、打印機(jī)I/F控制器107、NVRAM108、面板控制器109以及網(wǎng)絡(luò)I/F控制器110。
[0047]CPUlOl執(zhí)行應(yīng)用管理裝置100的軟件程序并進(jìn)行裝置的整體控制。R0M102為只讀存儲器并且存儲裝置的引導(dǎo)程序、固定參數(shù)等。RAM103是隨機(jī)存取存儲器,并且在CPUlOl控制裝置時用于臨時數(shù)據(jù)存儲等。外部存儲裝置104用于各種數(shù)據(jù)的存儲,例如所安裝的應(yīng)用、應(yīng)用數(shù)據(jù)以及打印數(shù)據(jù)的存儲。
[0048]USBH I/F控制器105用于控制USB主機(jī)接口,并且控制與各種USB設(shè)備的通信。掃描器I/F控制器106是控制掃描器111的裝置。打印機(jī)I/F控制器107是控制打印機(jī)112的裝置。NVRAM108是非易失性存儲器,并且其中保存應(yīng)用管理裝置100的各種設(shè)定值。
[0049]面板控制器109用于控制操作面板113、顯示各種信息以及接收來自用戶的指令的輸入。網(wǎng)絡(luò)I/F控制器110控制網(wǎng)絡(luò)115的數(shù)據(jù)發(fā)送和接收。CPU101、R0M102、RAM103、外部存儲設(shè)備104、USBH I/F控制器105、掃描器I/F控制器106、打印機(jī)I/F控制器107、NVRAM108、面板控制器109以及網(wǎng)絡(luò)I/F控制器110與總線114連接。此外,總線114是經(jīng)由其發(fā)送和接收來自CPUlOl的控制信號以及不同裝置之間的數(shù)據(jù)信號的系統(tǒng)總線。IC讀卡器116是用于進(jìn)行驗證的USB設(shè)備。
[0050]軟件配置
[0051]接下來,參照圖2描述應(yīng)用管理裝置100的軟件200的示例。硬件201執(zhí)行應(yīng)用管理裝置的軟件。0S202執(zhí)行處理的管理、內(nèi)存管理以及輸入輸出管理。本地應(yīng)用203是實現(xiàn)設(shè)備的基本功能(例如復(fù)印等)的程序。
[0052]應(yīng)用管理裝置100的軟件200由Java VM204和應(yīng)用平臺205構(gòu)成。Java VM204是執(zhí)行Java程序的虛擬機(jī)。應(yīng)用平臺205是管理應(yīng)用的生命周期(即至少一個或者多個應(yīng)用程序在單個Java VM上的啟動、停止、安裝以及卸載)的程序。app A206和app B207是在應(yīng)用平臺205上操作的應(yīng)用程序。Java VM204將應(yīng)用平臺205、app A206和app B207作為單個Java應(yīng)用208來處理。
[0053]模塊配置
[0054]接下來,參照圖3描述構(gòu)成本發(fā)明的應(yīng)用管理裝置100的軟件200的模塊的示例。Java VM204配設(shè)有字節(jié)代碼執(zhí)行單元301、內(nèi)存管理單元302、堆內(nèi)存305以及系統(tǒng)類加載器 306。
[0055]字節(jié)代碼執(zhí)行單元301解釋和執(zhí)行作為Java程序代碼的字節(jié)代碼。堆內(nèi)存305是由Java VM204管理的內(nèi)存區(qū)域,并且保持通過Java程序的執(zhí)行而生成的Java對象。內(nèi)存管理單元302管理應(yīng)用使用的內(nèi)存。內(nèi)存管理單元302由對象生成單元303和GC執(zhí)行單元304構(gòu)成。對象生成單元303根據(jù)由字節(jié)代碼執(zhí)行單元301執(zhí)行的程序代碼的指令來生成Java對象。GC執(zhí)行單元304執(zhí)行用于從保存在堆內(nèi)存305中的Java對象中刪除不再使用的Java對象的垃圾收集。系統(tǒng)類加載器306加載由JavaVM204管理的類。通常,類加載器根據(jù)需要(即,當(dāng)執(zhí)行處理時)首先加載Java類。
[0056]應(yīng)用平臺205由應(yīng)用管理單元308、應(yīng)用內(nèi)存管理單元307以及app類加載器管理單元309構(gòu)成。應(yīng)用內(nèi)存管理單元307具有用于管理各app使用的內(nèi)存的使用內(nèi)存表313,并針對各應(yīng)用管理要使用的內(nèi)存。應(yīng)用管理單元308管理應(yīng)用的生命周期,例如應(yīng)用的安裝、啟動、停止以及卸載。app類加載器管理單元309具有app類加載表310,并且針對各應(yīng)用生成和管理app類加載器。app類加載器從保存在外部存儲設(shè)備104中的應(yīng)用的程序文件312中加載類。
[0057]清單文件
[0058]接下來,將參照圖4描述應(yīng)用的清單文件的內(nèi)容。清單文件是應(yīng)用的Jar文件中包括的文件。在清單文件中記載了如下信息。
[0059]Bundle-Name401是應(yīng)用的名稱。Applicat1n_Id402是作為用于識別應(yīng)用的唯一標(biāo)識符的應(yīng)用ID。MaximumMemoryUsage403是應(yīng)用可用的最大內(nèi)存使用量。這些設(shè)定項目由應(yīng)用平臺205規(guī)定。請注意,上述設(shè)定項目和設(shè)定值是示例并不旨在不限制本發(fā)明,并且除了上述項目和設(shè)定值以外,在清單文件中還可以記載各種設(shè)定項目和設(shè)定值。
[0060]表
[0061 ] 接下來,將參照圖5描述由應(yīng)用平臺205管理的app類加載器表310和使用內(nèi)存表313。app類加載器表310是將作為應(yīng)用的標(biāo)識符的應(yīng)用ID501和應(yīng)用的app類加載器502有聯(lián)系(tie together)地管理的表。使用內(nèi)存表313是將作為應(yīng)用的標(biāo)識符的應(yīng)用ID503和應(yīng)用當(dāng)前正在使用的內(nèi)存量504有聯(lián)系地管理的表。
[0062]加載處理
[0063]接下來,將參照圖6描述根據(jù)本實施例的應(yīng)用平臺205加載應(yīng)用的類時的處理過程。通過CPUlOl將存儲在R0M102或者外部存儲設(shè)備104中的控制程序讀出到RAM103并執(zhí)行該控制程序來實現(xiàn)下文中描述的處理。
[0064]當(dāng)執(zhí)行應(yīng)用的啟動請求時,CPUlOl向app類加載器管理單元309發(fā)出app類加載器請求。在S602中,app類加載器管理單元309開始獲取app類加載器。首先,在S603中,app類加載器管理單元309確定在類加載器表310中是否存在與針對其進(jìn)行了類加載器請求的應(yīng)用的應(yīng)用ID相對應(yīng)的類加載器。如果存在相應(yīng)的類加載器,則處理進(jìn)入S607,而如果不存在相應(yīng)的類加載器,則處理進(jìn)入S604。
[0065]在S604中,app類加載器管理單元309生成app類加載器。然后,在S605中,app類加載器管理單元309針對在S604生成的app類加載器保存應(yīng)用ID。此外,在S606中,app類加載器管理單元309將在S604中生成的app類加載器以及針對其進(jìn)行了類加載器請求的應(yīng)用的應(yīng)用ID登記在app類加載器表310中。之后,處理進(jìn)入S607,并返回到應(yīng)用。
[0066]如果在S603中確定存在相應(yīng)的類加載器或者在S606的處理之后,CPUlOl在S607中使用從app類加載器管理單元309獲取的app類加載器開始應(yīng)用206的啟動。然后,在S608中,啟動的應(yīng)用206開始生成應(yīng)用對象。此外,為了加載應(yīng)用的類,應(yīng)用206在S609中向從app類加載器管理單元309獲取的app類加載器發(fā)出針對應(yīng)用類的類加載請求。
[0067]在S610中,應(yīng)用類加載器在從應(yīng)用206接收到app類的加載請求時,首先請求Java VM中內(nèi)置的系統(tǒng)類加載器306加載類。在S611中,系統(tǒng)類加載器306在接收到類加載請求時,讀取所請求的類的類文件的字節(jié)代碼。然后,在S612中,系統(tǒng)類加載器306確定類文件的讀取是否完成,并且如果完成,則進(jìn)入S613。另一方面,如果類文件的讀取尚未完成,則由于正在加載的應(yīng)用的固有的類,處理返回到app類加載器并進(jìn)入S614。在S613中,系統(tǒng)類加載器306基于在S611中讀取的字節(jié)代碼來加載類,進(jìn)入S619,并向應(yīng)用206返回類對象。
[0068]另一方面,在S614中,app類加載器從app的Jar文件312讀取所請求的類的字節(jié)代碼。然后,在S615中,app類加載器確定是否類文件存在并且讀取成功,如果成功則進(jìn)入S616,如果不成功則進(jìn)入S618。
[0069]在S616中,app類加載器向讀取的字節(jié)代碼中插入TASKINF0命令,并在S617中,基于插入了 TASKINF0命令的字節(jié)代碼來加載類。稍后將使用圖7詳細(xì)討論TASKINF0命令。之后,處理進(jìn)入S619,并且類對象被返回到應(yīng)用206。
[0070]另一方面,如果在S615中確定類文件不存在,則應(yīng)用206在S618中生成ClassNotFoundExc印t1n,并結(jié)束應(yīng)用的啟動。在S619中,應(yīng)用206使用在S617中加載的類,來生成應(yīng)用對象的實例,并結(jié)束app的啟動。
[0071]TASKINF0 命令
[0072]接下來,將參照圖7描述根據(jù)本發(fā)明的在S616中在字節(jié)代碼中插入的TASKINF0命令。附圖標(biāo)記701表示插入TASKINF0命令前的代碼。附圖標(biāo)記702表示插入TASKINF0命令后的代碼。
[0073]如附圖標(biāo)記703所示,在方法的開頭插入“TASKINF0.set (應(yīng)用ID); ”。這里,給出“11-1111-1111”作為示例性應(yīng)用ID。在S605中保存在類加載器中的值被轉(zhuǎn)換為字符串并被插入作為應(yīng)用ID。此外,如附圖標(biāo)記704所示,在方法的末尾,插入“TASKINF0.remove O ; ”。稍后詳細(xì)討論 TASKINF0.set O 方法和 TASKINF0.remove O 方法。
[0074]線程結(jié)構(gòu)
[0075]接下來,將參照圖8描述根據(jù)本發(fā)明的第一實施例的線程的結(jié)構(gòu)。線程的結(jié)構(gòu)801具有用于存儲應(yīng)用ID的字段802。TASKINF0.set O方法和TASKINF0.remove O方法使用字段802。具體地說,TASKINF0.set O方法設(shè)定應(yīng)用ID,TASKINF0.remove O方法去除應(yīng)用ID0
[0076]方法的處理
[0077]接下來,將參照圖9描述根據(jù)本發(fā)明在字節(jié)代碼執(zhí)行單元301中執(zhí)行插入了應(yīng)用的程序中包括的TASKINFO命令的方法時的處理過程。通過CPU101將存儲在R0M102或者外部存儲設(shè)備104中的控制程序讀出到RAM103并執(zhí)行該控制程序來實現(xiàn)下文中描述的處理。
[0078]在開始執(zhí)行應(yīng)用的方法時,應(yīng)用206調(diào)用位于方法的頭(head)的“TASKINF0.set (應(yīng)用ID) ”。此時,應(yīng)用ID被添加作為參數(shù)。之后,處理轉(zhuǎn)變到TASKINFO類的set方法。
[0079]在S903中,TASKINFO類的set方法首先獲取正在執(zhí)行處理的當(dāng)前線程。然后,set方法將作為set方法的參數(shù)傳送的應(yīng)用ID的值保存到在S904中獲取的線程結(jié)構(gòu)的應(yīng)用ID字段802中,并將處理返回到應(yīng)用206。
[0080]在S905中,應(yīng)用206執(zhí)行app的方法中的處理,在S906中,調(diào)用位于方法的末尾的“TASKINF0.remove O ; ”。之后,處理轉(zhuǎn)變到TASKINFO類的remove方法。
[0081]在S907中,TASKINFO類的remove方法首先獲取正在執(zhí)行處理的當(dāng)前線程。在S908中,remove方法將在S907中獲取的線程的線程結(jié)構(gòu)的字段802中設(shè)定的應(yīng)用ID的值去除,并將處理返回到應(yīng)用。應(yīng)用結(jié)束方法的處理。由此在方法的執(zhí)行期間記錄與線程相對應(yīng)的應(yīng)用信息。使用該信息,根據(jù)本實施例的圖像處理裝置能夠?qū)崟r查明內(nèi)存使用量。
[0082]對象結(jié)構(gòu)以及堆內(nèi)存
[0083]接下來,將參照圖10描述本發(fā)明的對象的結(jié)構(gòu)以及堆內(nèi)存。附圖標(biāo)記1001表示用作比較示例的Java VM的堆內(nèi)存。根據(jù)本實施例的對象的結(jié)構(gòu)1002與堆內(nèi)存1001的不同之處在于:除了對象固有的信息以外,還配設(shè)用于保存應(yīng)用ID(應(yīng)用信息)的字段1003。因此,根據(jù)本實施例的Java VM204的堆內(nèi)存305如附圖標(biāo)記1004所示。例如,如圖10所示,堆內(nèi)存305分配對象A至E的結(jié)構(gòu)的區(qū)域。分配的區(qū)域還分別配設(shè)有用于保存結(jié)構(gòu)中包括的應(yīng)用ID的區(qū)域。因此,能夠容易地確認(rèn)與任意對象相關(guān)的應(yīng)用。在圖10中,未使用的內(nèi)存區(qū)域被表示為空余內(nèi)存。
[0084]對象生成處理
[0085]接下來,參照圖11描述根據(jù)第一實施例的對象生成處理的處理過程。在上述圖9的S905的處理期間執(zhí)行對象生成處理。通過CPUlOl將存儲在R0M102或者外部存儲設(shè)備104中的控制程序讀出到RAM103并執(zhí)行該控制程序來實現(xiàn)下文中描述的處理。
[0086]在字節(jié)代碼執(zhí)行單元301正在執(zhí)行進(jìn)行對象生成的應(yīng)用的代碼時,開始對象生成處理,并且Java VM204的對象生成單元303被調(diào)用。在SI 102中,對象生成單元303首先獲取當(dāng)前線程。然后,在S1103中,對象生成單元303讀取在S1102中獲取的線程的結(jié)構(gòu)的應(yīng)用ID字段802,并獲取應(yīng)用ID。
[0087]在S1104中,對象生成單元303獲取用于對象生成的內(nèi)存,并生成對象。此外,在S1105中,對象生成單元303將在S1103中獲取的應(yīng)用ID記錄在對象的結(jié)構(gòu)的應(yīng)用ID字段1003中。在S1106中,為了記錄內(nèi)存增加量,對象生成單元303使用在S1105中記錄的應(yīng)用ID以及在S1104中生成的對象的大小作為參數(shù),來調(diào)用應(yīng)用內(nèi)存管理單元307。
[0088]在SI 107中,應(yīng)用內(nèi)存管理單元307使用在SI 106中被指定為參數(shù)的應(yīng)用ID,搜索使用內(nèi)存表313的應(yīng)用ID字段503。這里,如果存在應(yīng)用ID,則處理進(jìn)入S1109,而如果不存在應(yīng)用ID,則進(jìn)入S1108。
[0089]在SI 108中,應(yīng)用管理單元308生成使用內(nèi)存大小為O的新記錄,將所生成的記錄登記在使用內(nèi)存表313中,然后進(jìn)入S1109。在S1109中,應(yīng)用管理單元308更新與使用內(nèi)存表313中的應(yīng)用ID相對應(yīng)的使用內(nèi)存的值504,并將處理返回到對象生成單元303。在SlllO中,對象生成單元303將所生成的對象返回到應(yīng)用。應(yīng)用206接收所生成的對象并結(jié)束對象生成處理。以這種方式,根據(jù)本實施例的應(yīng)用管理裝置在生成對象時,通過應(yīng)用內(nèi)存管理單元307來管理相應(yīng)的應(yīng)用ID和分配的內(nèi)存大小。
[0090]GC 處理
[0091]接下來,將參照圖12描述根據(jù)本發(fā)明的第一實施例的GC處理的處理過程。當(dāng)對象生成沒有足夠的空余內(nèi)存時,Java VM204通過釋放不再需要的對象來進(jìn)行用于增加空余內(nèi)存的處理。該處理被稱為垃圾收集(GC)。通過CPUlOl將存儲在R0M102或者外部存儲設(shè)備104中的控制程序讀出到RAM103并執(zhí)行該控制程序來實現(xiàn)下文中描述的處理。
[0092]當(dāng)對象生成單元303的對象生成沒有足夠空余內(nèi)存時,GC執(zhí)行單元304開始GC處理。在S1202中,GC執(zhí)行單元304在堆內(nèi)存305中搜索作為GC目標(biāo)的、任何人未在參照的任意對象。在S1203中,GC執(zhí)行單元304確定是否找到目標(biāo)對象。這里,如果存在目標(biāo)對象,則處理進(jìn)入S1204,而如果不存在目標(biāo)對象,則處理結(jié)束。
[0093]在S1204中,GC執(zhí)行單元304從堆內(nèi)存305中獲取目標(biāo)對象的內(nèi)容。然后,GC執(zhí)行單元304獲取在S1204中獲取的對象的應(yīng)用ID字段的值。此外,在S1206,為了記錄內(nèi)存減少量,GC執(zhí)行單元304使用在S1205中記錄的應(yīng)用ID以及在S1204中獲取的對象的大小作為參數(shù),來調(diào)用應(yīng)用內(nèi)存管理單元307。
[0094]在S1207中,應(yīng)用內(nèi)存管理單元307更新與在S1206中被指定為參數(shù)的應(yīng)用ID相對應(yīng)的使用內(nèi)存表313中的使用內(nèi)存的值504,并將處理返回到GC執(zhí)行單元304。當(dāng)處理從應(yīng)用內(nèi)存管理單元307返回時,GC執(zhí)行單元304在S1208中釋放對象,并進(jìn)入S1202以找到作為GC目標(biāo)的下一對象。
[0095]如上所述,根據(jù)本實施例的圖像處理裝置響應(yīng)于應(yīng)用的啟動請求,讀取應(yīng)用的類的類文件,在所讀取的類文件中包括的方法的開頭添加用于將表示應(yīng)用的應(yīng)用信息記錄到線程的代碼,并加載該類。此外,該圖像處理裝置在方法的執(zhí)行期間,分配要用于待生成的對象的內(nèi)存,將線程中記錄的應(yīng)用信息記錄到分配的內(nèi)存,同時生成對象并將生成的對象的應(yīng)用信息與內(nèi)存大小有聯(lián)系地管理。因此,通過該圖像處理裝置,能夠在維持性能的同時實時測量各應(yīng)用的內(nèi)存使用量或者盤使用量。
[0096]第二實施例
[0097]以下,參照圖13至圖16描述本發(fā)明的第二實施例。請注意,將省略與第一實施例類似的配置和控制的描述。與第一實施例類似地執(zhí)行類加載處理。首先,將參照圖13描述多個應(yīng)用在應(yīng)用平臺205上協(xié)同操作的序列。
[0098]用作本發(fā)明的圖像處理裝置的應(yīng)用管理裝置100以及由網(wǎng)絡(luò)連接的設(shè)備操作瀏覽器1301。設(shè)備是PC、智能手機(jī)或者平板。HTTP服務(wù)器appl302是在應(yīng)用平臺205上操作的HTTP服務(wù)器程序,并且具有應(yīng)用ID “44-4444-4444”。servlet appl303是與HTTP服務(wù)器appl302協(xié)同操作的servlet型應(yīng)用,并且具有應(yīng)用ID “11-1111-1111”。
[0099]在S1304中,瀏覽器1301通過網(wǎng)絡(luò)向HTTP服務(wù)器app 1302發(fā)送HTTP請求。然后,在S1305中,HTTP服務(wù)器appl302在接收到HTTP請求時,生成用于進(jìn)行HTTP請求響應(yīng)處理的一個線程,并進(jìn)行HTTP請求分析處理。
[0100]如果HTTP請求針對servlet appl303,則HTTP服務(wù)器appl302在S1306中將信息附在 HTTP 請求上并調(diào)用 servlet appl303。在 S1307 中,servlet appl303 執(zhí)行由 servlet實施的固有處理,并且在S1308中,將servlet的處理結(jié)果返回到HTTP服務(wù)器appl302。
[0101]在S1309中,HTTP服務(wù)器app 1302基于接收到的servlet的處理結(jié)果來生成HTTP響應(yīng),并且在S1310中,將HTTP響應(yīng)通過網(wǎng)絡(luò)返回到瀏覽器。此時,通過一個線程處理S1305至 S1309。
[0102]在應(yīng)用平臺205上如圖所示的多個應(yīng)用協(xié)同操作是常見的。通過HTTP請求處理(S1305)、servlet處理(S1307)或者HTTP響應(yīng)處理(S1309)或者上述全部處理來進(jìn)行對象生成。因此,需要區(qū)分對象是由HTTP服務(wù)器appl302生成還是servlet appl303生成。
[0103]線程結(jié)構(gòu)
[0104]接下來,將參照圖14描述根據(jù)本發(fā)明的第二實施例的線程的結(jié)構(gòu)。線程結(jié)構(gòu)1401具有應(yīng)用ID棧1402作為字段。當(dāng)在圖13的處理中正在執(zhí)行作為servlet固有處理的S1307時,正在執(zhí)行的應(yīng)用的應(yīng)用ID被堆棧。在該情況下,servlet appl303的應(yīng)用ID1403和HTTP服務(wù)器appl302的應(yīng)用ID1404從頂部依次堆棧在應(yīng)用ID棧1402中。
[0105]方法的處理
[0106]接下來,將參照圖15描述根據(jù)本發(fā)明的第二實施例的在字節(jié)代碼執(zhí)行單元301中執(zhí)行插入了應(yīng)用的程序中包括的TASKINFO命令的方法時的處理過程。通過CPUlOl將存儲在R0M102或者外部存儲設(shè)備104中的控制程序讀出到RAM103并執(zhí)行該控制程序來實現(xiàn)下文中描述的處理。
[0107]當(dāng)開始執(zhí)行應(yīng)用的方法時,應(yīng)用206調(diào)用位于方法的頭的“TASKINF0.set (應(yīng)用ID) ; ”703,處理進(jìn)入TASKINFO類的set方法。在S903中,TASKINFO類的set方法首先獲取正在執(zhí)行處理的當(dāng)前線程。然后,在S1501中,set方法將作為set方法的參數(shù)傳送的應(yīng)用ID的值添加到獲取的線程結(jié)構(gòu)的應(yīng)用ID棧1402的頭,并將處理返回到應(yīng)用。
[0108]在S905中,應(yīng)用206執(zhí)行應(yīng)用的方法中的處理,調(diào)用位于方法的末尾的“TASKINF0.remove O ; ” 704,并且處理進(jìn)入 TASKINFO 類的 remove 方法。在 S907 中,TASKINFO類的remove方法首先獲取正在執(zhí)行處理的當(dāng)前線程。然后,在S1502中,remove方法刪除在S907中獲取的線程的線程結(jié)構(gòu)的應(yīng)用ID棧的頭的應(yīng)用ID,并將處理返回到應(yīng)用。之后,應(yīng)用206結(jié)束方法的處理。
[0109]對象生成處理
[0110]接下來,將參照圖16描述根據(jù)本發(fā)明的第二實施例的對象生成處理。通過CPU101將存儲在R0M102或者外部存儲設(shè)備104中的控制程序讀出到RAM103并執(zhí)行該控制程序來實現(xiàn)下文中描述的處理。在字節(jié)代碼執(zhí)行單元301正在執(zhí)行進(jìn)行對象生成的應(yīng)用的代碼時,開始對象生成處理,并且Java VM204的對象生成單元303被調(diào)用。
[0111]在S1102中,對象生成單元303首先獲取當(dāng)前線程。然后,在S1601中,對象生成單元303獲取位于在S1102中獲取的線程的結(jié)構(gòu)的應(yīng)用ID棧的頭的應(yīng)用ID。
[0112]在S1104中,對象生成單元303獲取用于對象生成的內(nèi)存,并生成對象。然后,在S1105中,對象生成單元303將在S1601中獲取的應(yīng)用ID記錄在對象的結(jié)構(gòu)的應(yīng)用ID字段1003中。此外,在S1106,為了記錄內(nèi)存增加量,對象生成單元303使用在S1105中記錄的應(yīng)用ID以及在S1104中生成的對象的大小作為參數(shù),來調(diào)用應(yīng)用內(nèi)存管理單元307。
[0113]在S1107中,應(yīng)用內(nèi)存管理單元308使用應(yīng)用ID搜索使用內(nèi)存表313的應(yīng)用ID字段503,并確定是否存在應(yīng)用ID。如果存在應(yīng)用ID,則處理進(jìn)入S1109,而如果不存在應(yīng)用ID,則進(jìn)入S1108。在S1108中,應(yīng)用管理單元308生成使用內(nèi)存大小為O的新記錄,將所生成的記錄登記在使用內(nèi)存表313中,并使處理進(jìn)入S1109。在S1109中,應(yīng)用管理單元308更新與使用內(nèi)存表313的應(yīng)用ID相對應(yīng)的使用內(nèi)存的值504,并將處理返回到對象生成單元303。
[0114]在SlllO中,對象生成單元303將所生成的對象返回到應(yīng)用。應(yīng)用206接收所生成的對象并結(jié)束對象生成處理。由于GC處理與第一實施例類似,因此省略其描述。
[0115]如上所述,根據(jù)本實施例,在多個應(yīng)用協(xié)同操作的情況下,在線程中記錄的應(yīng)用信息將具有棧結(jié)構(gòu)。由此,即使在如圖13所示的情況下,與第一實施例類似,也能夠在維持性能的同時測量各應(yīng)用的內(nèi)存使用量或者盤使用量。
[0116]第三實施例
[0117]下文中,將參照圖17至圖19描述本發(fā)明的第三實施例。請注意,下文中,將省略與第一實施例和第二實施例類似的配置和控制的描述。首先,參照圖17描述本實施例的應(yīng)用管理裝置的軟件200的模塊的示例性配置。
[0118]如圖17所示,除了圖3所示的配置以外,應(yīng)用內(nèi)存管理單元307還配設(shè)有使用內(nèi)存量聲明表1701。與第一實施例類似地執(zhí)行類加載處理。與第一實施例類似地執(zhí)行插入了TASKINFO命令的方法執(zhí)行時的處理。
[0119]使用內(nèi)存量聲明表
[0120]接下來,將參照圖18描述使用內(nèi)存量聲明表1701。使用內(nèi)存量聲明表1701是將應(yīng)用ID1801與示出由應(yīng)用ID識別的應(yīng)用使用的最大內(nèi)存量的最大使用內(nèi)存1802有聯(lián)系地管理的表。
[0121]在圖4所示的應(yīng)用的清單文件的MaximumMemoryUsage設(shè)定403中記載應(yīng)用的最大內(nèi)存使用量。當(dāng)安裝應(yīng)用時,應(yīng)用管理單元308從應(yīng)用的Jar文件讀取Applicat1n-1d設(shè)定402和MaximumMemoryUsage設(shè)定403。此外,應(yīng)用管理單元308將所讀取的值添加到使用內(nèi)存量聲明表1701中。
[0122]對象生成處理
[0123]接下來,將參照圖19描述根據(jù)本實施例的對象生成處理的處理過程。通過CPUlOl將存儲在R0M102或者外部存儲設(shè)備104中的控制程序讀出到RAM103并執(zhí)行該控制程序來實現(xiàn)下文中描述的處理。
[0124]在字節(jié)代碼執(zhí)行單元301正在執(zhí)行進(jìn)行對象生成的應(yīng)用的代碼時開始對象生成處理,并且Java VM204的對象生成單元303被調(diào)用。在SI 102中,對象生成單元303首先獲取當(dāng)前線程。然后,在S1601中,對象生成單元303讀取在S1102中獲取的線程的結(jié)構(gòu)的應(yīng)用ID字段802,并獲取應(yīng)用ID。
[0125]在S1104中,對象生成單元303獲取用于對象生成的內(nèi)存,并生成對象。然后,在S1105中,對象生成單元303將在S1103中獲取的應(yīng)用ID記錄在對象結(jié)構(gòu)的應(yīng)用ID字段1003中。此外,在S1106,為了記錄內(nèi)存增加量,對象生成單元303使用在S1105中記錄的應(yīng)用ID以及在S1104中生成的對象的大小作為參數(shù),來調(diào)用應(yīng)用內(nèi)存管理單元307。
[0126]在SI 107中,應(yīng)用內(nèi)存管理單元307使用應(yīng)用ID搜索使用內(nèi)存表313的應(yīng)用ID字段503,并確定是否存在應(yīng)用ID。如果存在應(yīng)用ID,則處理進(jìn)入S1901,而如果不存在應(yīng)用ID,則進(jìn)入S1108。在S1108中,應(yīng)用內(nèi)存管理單元307生成使用內(nèi)存大小為O的新記錄,將所生成的記錄登記在使用內(nèi)存表313中,并使處理進(jìn)入S1901。
[0127]在S1901中,應(yīng)用內(nèi)存管理單元307使用應(yīng)用ID搜索使用內(nèi)存表313的應(yīng)用ID字段503,并獲取當(dāng)前使用內(nèi)存大小。
[0128]接下來,在S1902中,應(yīng)用內(nèi)存管理單元307通過應(yīng)用ID搜索使用內(nèi)存量聲明表1701,并獲取與應(yīng)用ID相對應(yīng)的應(yīng)用的使用內(nèi)存聲明量。在S1903中,應(yīng)用內(nèi)存管理單元307確定在S1106中從對象生成單元303傳送的對象大小與在S1901中獲取的當(dāng)前使用內(nèi)存大小的總和是否小于或等于在S1902中獲取的最大內(nèi)存使用量。如果總和小于或等于最大內(nèi)存使用量,則處理進(jìn)入S1109,如果總和超過最大內(nèi)存使用量,則進(jìn)入S1904。
[0129]在SI 109中,應(yīng)用內(nèi)存管理單元307更新與使用內(nèi)存表313的應(yīng)用ID相對應(yīng)的使用內(nèi)存的值504,并將處理返回到對象生成單元303。在SlllO中,對象生成單元303將所生成的對象返回到應(yīng)用。應(yīng)用接收所生成的對象并結(jié)束對象生成處理。
[0130]另一方面,當(dāng)在S1903中確定總和超過最大內(nèi)存使用量時,應(yīng)用內(nèi)存管理單元307在S1904中產(chǎn)生內(nèi)存錯誤。然后,在S1905中,應(yīng)用內(nèi)存管理單元307請求應(yīng)用管理單元308進(jìn)行用于停止與應(yīng)用ID相對應(yīng)的應(yīng)用的處理,并將處理返回到應(yīng)用。應(yīng)用結(jié)束對象生成處理。
[0131]如上所述,根據(jù)本實施例,除了第一實施例和第二實施例中的至少一個的配置以夕卜,還配設(shè)有定義各應(yīng)用的最大內(nèi)存使用量的表。此外,圖像處理裝置能夠根據(jù)對象生成時分配的存儲器大小來進(jìn)行控制,以在當(dāng)前已經(jīng)正在使用的內(nèi)存使用量與分配的內(nèi)存大小的總和超過最大內(nèi)存使用量的情況下,停止對象的生成。
[0132]第四實施例
[0133]下文中,參照圖20至圖28描述本發(fā)明的第四實施例。在本實施例中,將描述與內(nèi)存類似地使用第一至第三實施例的機(jī)構(gòu)限制外部存儲設(shè)備104的盤使用量的實施例。因此,本實施例能夠分別與第一至第三實施例組合。請注意,下文中,將省略與第一至第三實施例類似的配置和控制的描述。與第一實施例類似地執(zhí)行類加載處理。與第一實施例類似地執(zhí)行插入了 TASKINFO命令的方法執(zhí)行時的處理。
[0134]在本實施例中,由應(yīng)用管理單元308安裝的應(yīng)用被存儲在外部存儲設(shè)備104的預(yù)定目錄中。此外,假定應(yīng)用被限制為僅能夠使用安裝了應(yīng)用自身的目錄下的容量。
[0135]模塊配置
[0136]首先,將參照圖20描述根據(jù)本實施例的應(yīng)用管理裝置100的軟件200的模塊的示例性配置。除了圖17的配置以外,應(yīng)用平臺205配設(shè)有應(yīng)用盤管理單元2001,Java VM204配設(shè)有文件訪問管理單元2004。
[0137]應(yīng)用盤管理單元2001由稍后描述的使用盤表2002和使用盤量聲明表2003構(gòu)成。文件訪問管理單元2004由訪問控制器2005構(gòu)成,并且通過應(yīng)用206控制對外部存儲設(shè)備104的文件訪問。
[0138]使用盤表及使用盤量聲明表
[0139]圖21示出了使用盤表2002以及使用盤量聲明表2003的配置。在使用盤表2002中,將應(yīng)用ID2101與相應(yīng)的應(yīng)用的當(dāng)前盤使用量2102有聯(lián)系地管理。在使用盤量聲明表2003中,將應(yīng)用ID2201與相應(yīng)的應(yīng)用的最大使用量2202有聯(lián)系地管理。使用盤表2002和使用盤量聲明表2003可以作為單個表來管理,并且不限于本實施例的配置,只要管理等價信息即可。
[0140]圖22示出了本實施例的應(yīng)用的清單文件的內(nèi)容。表示應(yīng)用的最大盤使用量的MaximumFilespaceUsage2301已經(jīng)被添加到圖4所示的內(nèi)容。請注意,這里,還包括MaximumMemoryUsage設(shè)定403,但是本發(fā)明不限于此,例如可以采用僅包括MaximumFiIespaceUsage2301 的配置。
[0141]初始化處理
[0142]接下來,將參照圖23描述當(dāng)本實施例的應(yīng)用平臺205啟動時應(yīng)用管理單元308的初始化處理。通過CPUlOl將存儲在R0M102或者外部存儲設(shè)備104中的控制程序讀出到RAM103并執(zhí)行該控制程序來實現(xiàn)下文中描述的處理。
[0143]當(dāng)應(yīng)用平臺205啟動時,應(yīng)用管理單元308在S2401中獲取安裝的應(yīng)用的數(shù)量。應(yīng)用管理單元308在S2402中將變量i初始化為0,在S2403中將變量i與應(yīng)用的數(shù)量j進(jìn)行比較,如果i〈j,則進(jìn)入S2404,并結(jié)束處理,如果不是這種情況,則判定針對所有應(yīng)用進(jìn)行了稍后討論的處理。在S2404中,應(yīng)用管理單元308獲取應(yīng)用ID,并且在S2405中獲取由應(yīng)用聲明的盤使用量。然后,調(diào)用應(yīng)用盤管理單元2001。
[0144]在2406中,應(yīng)用盤管理單元2001確定在使用盤量聲明表中是否登記了相應(yīng)的應(yīng)用ID,并且如果未登記,則在S2407中添加記錄,并進(jìn)入S2408。另一方面,如果已登記,則處理直接進(jìn)入S2408。在S2408中,在將處理返回到應(yīng)用管理單元308之前,應(yīng)用盤管理單元2001將應(yīng)用ID2201的數(shù)據(jù)與最大使用量2202聯(lián)系起來,并將該數(shù)據(jù)添加到使用盤量聲明表2003。
[0145]接下來,在S2409中,應(yīng)用管理單元308獲取安裝應(yīng)用的文件夾下的容量,并再次調(diào)用應(yīng)用盤管理單元2001。在2410中,應(yīng)用盤管理單元2001確定在使用盤表中是否登記了相應(yīng)的應(yīng)用ID,并且如果未登記,則在S2411中添加記錄,并進(jìn)入S2412。另一方面,如果已登記,則處理直接進(jìn)入S2412。在S2412中,在將處理返回到應(yīng)用管理單元308之前,應(yīng)用盤管理單元2001將應(yīng)用ID2101的數(shù)據(jù)與最大使用量2102聯(lián)系起來,并將該數(shù)據(jù)添加到使用盤表2002。在S2413中,應(yīng)用管理單元308將變量i遞增1,并返回到S2403的確定。
[0146]請注意,當(dāng)新安裝應(yīng)用時,應(yīng)用管理單元308將應(yīng)用安裝在外部存儲設(shè)備104的預(yù)定文件夾中。顯然,之后,進(jìn)行與該流程圖類似的處理,將該信息添加到使用盤量聲明表2003和使用盤表2002。此外,當(dāng)卸載應(yīng)用時,應(yīng)用管理單元308刪除安裝了應(yīng)用的文件夾。顯然,此時從使用盤量聲明表2003和使用盤表2002中刪除與應(yīng)用相關(guān)的信息。
[0147]本流程圖的處理使得在啟動用作圖像處理裝置的應(yīng)用管理裝置100時,能夠管理由應(yīng)用管理單元308管理的應(yīng)用的啟動初始狀態(tài)下的盤使用量。
[0148]對象生成處理
[0149]圖24是生成用于進(jìn)行文件的生成和寫入的FileOutputStream對象的流程圖。通過CPUlOl將存儲在R0M102或者外部存儲設(shè)備104中的控制程序讀出到RAM103并執(zhí)行該控制程序來實現(xiàn)下文中描述的處理。這里,描述與第一實施例中描述的圖11的控制不同的部分。
[0150]當(dāng)在SI 103中獲取應(yīng)用ID時,對象生成單元303在S2501中確定要生成的對象是否為FileOutputStream。如果是FileOutputStream,則處理進(jìn)入S2502,而在生成其他對象的情況下,處理進(jìn)入SI 104。
[0151]在S2502中,對象生成單元303獲取用于生成FileOutputStream對象的參數(shù),并且在S2503中,根據(jù)獲取的參數(shù)獲取操作目標(biāo)的文件大小。然后,在2504中,對象生成單元303調(diào)用用于生成原始FileOutputStream對象的處理。然后,在S2505中,對象生成單元303基于在S2502中獲取的參數(shù)或者生成對象的方法確定是否正在以Append模式生成FileOutputStream對象。Java中的FileOutputStream對象的規(guī)范是:如果為Append模式則操作以將數(shù)據(jù)添加到現(xiàn)有文件的末尾,而如果不是這種情況,則操作以將文件大小返回至O并進(jìn)行重寫。如果確定結(jié)果表示Append模式,則處理進(jìn)入S1110。
[0152]另一方面,如果不是Append模式,則判定操作目標(biāo)的文件大小為0,處理進(jìn)入S2506。在S2506中,應(yīng)用盤管理單元2001從使用盤表2002中的當(dāng)前應(yīng)用的使用量2102中減去在S2503中獲取的大小,將處理返回到對象生成單元303并進(jìn)入S1110。
[0153]在SlllO中,對象生成單元303將處理返回到應(yīng)用,應(yīng)用結(jié)束對象生成處理。
[0154]FileOutputStream 對象的 write 方法
[0155]接下來,將參照圖25描述應(yīng)用206調(diào)用FileOutputStream對象的write方法時的處理過程。在圖9和圖15中的S905的處理期間執(zhí)行下文中描述的處理。此外,通過CPU101將存儲在R0M102或者外部存儲設(shè)備104中的控制程序讀出到RAM103并執(zhí)行該控制程序來實現(xiàn)下文中描述的處理。在執(zhí)行時,字節(jié)代碼執(zhí)行單元301調(diào)用文件訪問管理單元2004的訪問控制器2005的處理。
[0156]在S2601中,字節(jié)代碼執(zhí)行單元301確定方法是否是FileOutputStream對象的write方法。如果方法是FileOutputStream對象的write方法,則處理進(jìn)入S2602,而如果不是這種情況,則在S2611中調(diào)用其他方法的處理,并結(jié)束當(dāng)前處理。
[0157]在執(zhí)行write方法時,文件訪問管理單元2004在S2602中讀取當(dāng)前線程的線程結(jié)構(gòu)的應(yīng)用ID字段802。然后,在S2603中,文件訪問管理單元2004獲取被傳送到write方法的寫入數(shù)據(jù)的大小(=a),并將處理傳送到應(yīng)用盤管理單元2001。
[0158]接下來,在S2604中,應(yīng)用盤管理單元2001使用在S2602中獲取的應(yīng)用ID,并從使用盤表2002中獲取應(yīng)用的使用量2012( = X)。此外,在S2605中,應(yīng)用盤管理單元2001從使用盤量聲明表2003中獲取最大使用量2202 ( = Y),并將處理返回到文件訪問管理單元2004。
[0159]在S2606中,文件訪問管理單元2004確定通過將應(yīng)用的使用量X與寫入數(shù)據(jù)大小a相加而獲得的大小是否超過最大使用量Y。如果超過最大使用量Y,則處理進(jìn)入S2608,文件訪問管理單元2004判定要進(jìn)行的寫入超過由應(yīng)用聲明的最大使用量2202,通知預(yù)定錯誤(盤錯誤),并結(jié)束當(dāng)前處理。
[0160]如果未超過最大使用量Y,則處理進(jìn)入S2607,文件訪問管理單元2004調(diào)用原始write方法,并執(zhí)行文件的寫入。之后,在S2609中,文件訪問管理單元2004確定文件的寫入是否失敗。如果文件的寫入失敗,則處理結(jié)束,并將處理傳送到應(yīng)用盤管理單元2001,而如果文件的寫入成功,則處理進(jìn)入S2610。在S2610中,應(yīng)用盤管理單元2001將寫入數(shù)據(jù)大小(=a)與使用盤表2002中的應(yīng)用的使用量2102相加,并結(jié)束處理。
[0161]Java具有與FileOutputStream類似的FileWriter類。由于在使用的情況下通過采用與FileOutputStream相同的配置能夠支持FileWriter類,因此在本實施例中省略其描述。
[0162]RandomAccessFile 對象的 setLength 方法
[0163]接下來,將參照圖26描述應(yīng)用206調(diào)用RandomAccessFile對象的setLength方法時的處理過程。在圖9和圖15中的S905的處理期間執(zhí)行下文中描述的處理。此外,通過CPUlOl將存儲在R0M102或者外部存儲設(shè)備104中的控制程序讀出到RAM103并執(zhí)行該控制程序來實現(xiàn)下文中描述的處理。在執(zhí)行時,字節(jié)代碼執(zhí)行單元301調(diào)用文件訪問管理單元2004的訪問控制器2005的處理。Java中的RandomAccessFile對象的setLength規(guī)范是:操作以將操作目標(biāo)的文件大小改變?yōu)橛蓅etLength指定的大小。
[0164]在S2701中,字節(jié)代碼執(zhí)行單元301確定方法是否是RandomAccessFile對象的setLength方法。如果方法是RandomAccessFile對象的setLength方法,則處理進(jìn)入S2702,而如果不是這種情況,則處理進(jìn)入S2716并調(diào)用其他方法的處理,之后結(jié)束當(dāng)前處理。
[0165]在執(zhí)行setLength方法時,文件訪問管理單元2004在S2702中讀取當(dāng)前線程的線程結(jié)構(gòu)的應(yīng)用ID字段802。然后,在S2703中,文件訪問管理單元2004獲取setLength方法的目標(biāo)文件的大小(=a),并在S2704中獲取在setLength方法中指定的大小(=b)。之后,在S2705中,文件訪問管理單元2004比較a和b,并且如果b較大,即如果文件大小較大,則進(jìn)入S2709。如果不是這種情況,則文件訪問管理單元2004進(jìn)入S2706,調(diào)用原始setLength方法,并在S2707中確定setLength方法的執(zhí)行結(jié)果。如果成功,則處理進(jìn)入S2708,如果未成功,則處理結(jié)束。在S2708中,應(yīng)用盤管理單元2001從使用盤表2002中的應(yīng)用的使用量2102中減去通過a-b得到的值,并結(jié)束處理。
[0166]另一方面,如果在S2705中確定文件大小較大,則應(yīng)用盤管理單元2001在S2709中獲取在S2701中獲取的應(yīng)用ID的盤使用量2102( = X)。然后,在S2710中,應(yīng)用盤管理單元2001獲取最大使用量2202( = Y)。然后,在S2711中,文件訪問管理單元2004確定當(dāng)前使用量X中由setLength方法產(chǎn)生的增加是否超過最大使用量Y (X+(b_a) >Y)。
[0167]如果超過最大使用量Y,則處理進(jìn)入S2715,并且文件訪問管理單元2004判定要進(jìn)行的寫入超過由應(yīng)用206聲明的最大使用量2202,通知預(yù)定錯誤,并結(jié)束當(dāng)前處理。另一方面,如果判定未超過最大使用量Y,則處理進(jìn)入S2712,文件訪問管理單元2004調(diào)用原始setLength方法。然后,在S2713中,文件訪問管理單元2004確定setLength方法的執(zhí)行結(jié)果,并且如果成功,則進(jìn)入S2714。在S2714中,應(yīng)用盤管理單元2001將使用盤表2002中的應(yīng)用的使用量2102與通過b-a得到的值相加,并結(jié)束處理。另一方面,如果在S2713中確定執(zhí)行結(jié)果錯誤,則結(jié)束處理。
[0168]RandomAccessFile 對象的 write 方法
[0169]接著,將參照圖27描述應(yīng)用206調(diào)用RandomAccessFile對象的write方法時的處理過程。在圖9和圖15中的S905的處理期間執(zhí)行下文中描述的處理。此外,通過CPUlOl將存儲在R0M102或者外部存儲設(shè)備104中的控制程序讀出到RAM103并執(zhí)行該控制程序來實現(xiàn)在下文中描述的處理。在執(zhí)行時,字節(jié)代碼執(zhí)行單元301調(diào)用文件訪問管理單元2004的訪問控制器2005的處理。Java中的RandomAccessFile對象的write規(guī)范是:操作以從作為操作目標(biāo)的文件的文件指針的位置寫入數(shù)據(jù)。此時,write規(guī)范是:在寫入大小超過文件大小的情況下操作,使得文件大小增加。
[0170]在S2801中,字節(jié)代碼執(zhí)行單元301確定方法是否是RandomAccessFile對象的write方法。如果方法是RandomAccessFile對象的write方法,則處理進(jìn)入S2802,而如果不是這種情況,則在S2815中調(diào)用其他方法的處理,并結(jié)束當(dāng)前處理。
[0171]在執(zhí)行write方法時,文件訪問管理單元2004在S2802中讀取當(dāng)前線程的線程結(jié)構(gòu)的應(yīng)用ID字段802。然后,在S2803中,文件訪問管理單元2004獲取被傳送到write方法的寫入數(shù)據(jù)的大小(=a),并且在S2804中獲取文件指針的當(dāng)前位置(=b)。此外,在S2805中,文件訪問管理單元2004獲取操作目標(biāo)文件的大小(=c)。之后,在S2806中,文件訪問管理單元2004將文件指針的位置b與寫入大小a相加,并確定文件大小是否增加(a+b>c)。如果文件大小增加,則處理進(jìn)入S2808,而如果不是這種情況,則在S2807中調(diào)用原始write方法,由于文件大小未改變,因此當(dāng)前處理結(jié)束。
[0172]在S2808中,應(yīng)用管理單元2001獲取在S2801中獲取的應(yīng)用ID的盤使用量2102( = X),在S2809中獲取最大使用量(=Y),并進(jìn)入S2810。在S2810中,文件訪問管理單元2004確定當(dāng)前使用量X中由write方法產(chǎn)生的增加是否超過最大使用量Y((a+b)-c+X>Y)。如果超過最大使用量Y,則處理進(jìn)入S2814,并且文件訪問管理單元2004判定要進(jìn)行的寫入超過由應(yīng)用聲明的最大使用量2202,通知預(yù)定錯誤,并結(jié)束當(dāng)前處理。
[0173]另一方面,如果判定未超過最大使用量Y,則處理進(jìn)入S2811,并且文件訪問管理單元2004調(diào)用原始write方法。之后,在S2812中,文件訪問管理單元2004確定write方法的執(zhí)行結(jié)果。如果成功,則處理進(jìn)入S2813,應(yīng)用盤管理單元2001將通過a+b-c得到的值與使用盤表2002中的應(yīng)用的使用量2102相加,并結(jié)束處理。另一方面,如果在S2811中確定write方法未被成功執(zhí)行,則結(jié)束該處理。
[0174]File 對象的 delete 方法
[0175]接下來,將參照圖28描述當(dāng)應(yīng)用206調(diào)用File對象的delete方法時的處理過程。在圖9和圖15中的S905的處理期間執(zhí)行下文中描述的處理。此外,通過CPUlOl將存儲在R0M102或者外部存儲設(shè)備104中的控制程序讀出到RAM103并執(zhí)行該控制程序來實現(xiàn)下文中描述的處理。
[0176]在S2901中,字節(jié)代碼執(zhí)行單元301確定方法是否是File對象的delete方法。如果方法是File對象的delete方法,則處理進(jìn)入S2902,而如果不是這種情況,則處理進(jìn)入S2907,并調(diào)用其他方法的處理,之后結(jié)束當(dāng)前處理。
[0177]在S2902中,文件訪問管理單元2004在執(zhí)行delete方法時,讀取當(dāng)前線程的線程結(jié)構(gòu)的應(yīng)用ID字段802。然后,在S2903中,文件訪問管理單元2004獲取delete方法的目標(biāo)文件的大小(=a),并在S2904中調(diào)用原始delete方法。
[0178]在S2905中,文件訪問管理單元2004確定delete方法的執(zhí)行結(jié)果,并且如果確定delete方法未被成功執(zhí)行,則結(jié)束當(dāng)前處理。另一方面,如果確定delete方法被成功執(zhí)行,則處理進(jìn)入S2906。在S2906中,應(yīng)用盤管理單元2001從使用盤表2002中的應(yīng)用的使用量2102中減去操作目標(biāo)的文件大小,并結(jié)束處理。
[0179]請注意,在本實施例中,如果超過應(yīng)用206生成的最大使用量,則通知預(yù)定錯誤(S2608、S2715、S2814)。應(yīng)用管理單元308還可以被構(gòu)成為在檢測到該通知的情況下停止相應(yīng)的應(yīng)用。
[0180]如上所述,根據(jù)本實施例的圖像處理裝置響應(yīng)于應(yīng)用啟動請求,讀取應(yīng)用的類的類文件,在所讀取的類文件中包括的方法的開頭添加用于記錄表示應(yīng)用的應(yīng)用信息的代碼,并加載類。此外,該圖像處理裝置在方法的執(zhí)行期間,分配要用于待生成的對象的文件大小,并且使用分配的文件大小作為盤使用量,記錄在線程中記錄的應(yīng)用信息,同時生成對象,并將所生成的對象的應(yīng)用信息與盤使用量有聯(lián)系地管理。由此,在本實施例中,關(guān)于盤使用量也能夠獲得與第一至第三實施例類似的效果。
[0181]其他實施例
[0182]本發(fā)明的實施例還能夠由讀出并執(zhí)行記錄在存儲介質(zhì)(例如非暫時性計算機(jī)可讀存儲介質(zhì))上的用于執(zhí)行本發(fā)明的上述實施例的一個或者多個功能的計算機(jī)可執(zhí)行指令的系統(tǒng)或裝置的計算機(jī)來實現(xiàn),以及通過由系統(tǒng)或裝置的計算機(jī)例如讀出并執(zhí)行來自存儲介質(zhì)的用于執(zhí)行上述實施例的一個或者多個功能的計算機(jī)可執(zhí)行指令來執(zhí)行的方法來實現(xiàn)。計算機(jī)可以包括中央處理單元(CPU)、微處理單元(MPU)或者其他電路中的一個或者多個,并且可以包括獨(dú)立的計算機(jī)或者獨(dú)立的計算機(jī)處理器的網(wǎng)絡(luò)。計算機(jī)可執(zhí)行指令可以從例如網(wǎng)絡(luò)或者存儲介質(zhì)提供給計算機(jī)。存儲介質(zhì)可以包括例如硬盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、分布式計算機(jī)系統(tǒng)的存儲、光盤(例如光盤(⑶)、數(shù)字通用盤(DVD)或者藍(lán)光盤(BD)?)、閃存設(shè)備、存儲器卡等中的一個或者多個。
[0183]雖然參照示例性實施例描述了本發(fā)明,但是應(yīng)當(dāng)理解,本發(fā)明不限于所公開的示例性實施例。應(yīng)對所附權(quán)利要求的范圍給予最寬的解釋,以使其覆蓋所有變型例以及等同結(jié)構(gòu)和功能。
【權(quán)利要求】
1.一種用于執(zhí)行多個應(yīng)用的圖像處理裝置,該圖像處理裝置包括: 控制單元,其被配置為響應(yīng)于應(yīng)用的啟動請求,讀取所述應(yīng)用的類的類文件,在所讀取的類文件中包括的方法中添加用于將表示所述應(yīng)用的應(yīng)用信息記錄到線程的代碼,并加載所述類; 對象生成單元,其被配置為在執(zhí)行所讀取的類文件中包括的所述方法期間,分配要用于待生成的對象的內(nèi)存,并將所述線程記錄中的應(yīng)用信息記錄到所分配的內(nèi)存,并生成所述對象;以及 內(nèi)存管理單元,其被配置為與內(nèi)存大小相關(guān)聯(lián)地管理由所述對象生成單元生成的所述對象的應(yīng)用信息。
2.根據(jù)權(quán)利要求1所述的圖像處理裝置,其中,所述控制單元還在所讀取的類文件中包括的所述方法的末尾,添加用于刪除所述線程中記錄的應(yīng)用信息的代碼。
3.根據(jù)權(quán)利要求1所述的圖像處理裝置,其中,所述內(nèi)存管理單元在釋放所述對象時,根據(jù)所述對象的應(yīng)用信息刪除所管理的應(yīng)用信息和內(nèi)存大小。
4.根據(jù)權(quán)利要求1所述的圖像處理裝置,其中,在多個應(yīng)用協(xié)同操作的情況下,所述線程中記錄的所述應(yīng)用信息具有棧結(jié)構(gòu)。
5.根據(jù)權(quán)利要求1所述的圖像處理裝置,所述圖像處理裝置還包括: 表,其中所述應(yīng)用信息與所述應(yīng)用可用的內(nèi)存大小被有聯(lián)系地定義; 確定單元,其被配置為在所述對象生成單元分配了用于生成對象的內(nèi)存的情況下,確定與由所述內(nèi)存管理單元管理的所述應(yīng)用信息相對應(yīng)的應(yīng)用正在使用的內(nèi)存大小與所分配的內(nèi)存大小的總和是否超過所述相應(yīng)的可用內(nèi)存大??;以及 限制單元,其被配置為在所述確定單元確定所述總和超過所述可用內(nèi)存大小的情況下,生成內(nèi)存錯誤。
6.一種用于執(zhí)行多個應(yīng)用的圖像處理裝置,該圖像處理裝置包括: 控制單元,其被配置為響應(yīng)于應(yīng)用的啟動請求,讀取所述應(yīng)用的類的類文件,在所讀取的類文件中包括的方法中添加用于將表示所述應(yīng)用的應(yīng)用信息記錄到線程的代碼,并加載所述類; 對象生成單元,其被配置為在執(zhí)行所讀取的類文件中包括的方法期間,分配要用于待生成的對象的文件大小,并且使用所分配的文件大小作為盤使用量來記錄所述線程中記錄的應(yīng)用信息,并生成所述對象;以及 盤管理單元,其被配置為將由所述對象生成單元生成的所述對象的應(yīng)用信息與盤使用量有聯(lián)系地管理。
7.根據(jù)權(quán)利要求6所述的圖像處理裝置,其中,所述控制單元還在所讀取的類文件中包括的所述方法的末尾,添加用于刪除所述線程中記錄的應(yīng)用信息的代碼。
8.根據(jù)權(quán)利要求6所述的圖像處理裝置,其中,所述盤管理單元在釋放所述對象時,根據(jù)所述對象的應(yīng)用信息刪除所管理的應(yīng)用信息和盤使用量。
9.根據(jù)權(quán)利要求6所述的圖像處理裝置,其中,在多個應(yīng)用協(xié)同操作的情況下,所述線程中記錄的所述應(yīng)用信息具有棧結(jié)構(gòu)。
10.根據(jù)權(quán)利要求6所述的圖像處理裝置,所述圖像處理裝置還包括: 表,其中所述應(yīng)用信息與所述應(yīng)用可用的盤使用量被有聯(lián)系地定義; 確定單元,其被配置為在所述對象生成單元分配了用于生成對象的文件大小的情況下,確定與由所述盤管理單元管理的所述應(yīng)用信息相對應(yīng)的應(yīng)用正在使用的盤使用量與所分配的文件大小的總和是否超過所述相應(yīng)的可用盤使用量;以及 限制單元,其被配置為在所述確定單元確定所述總和超過所述可用盤使用量的情況下,生成盤錯誤。
11.一種圖像處理裝置的控制方法,該圖像處理裝置執(zhí)行多個應(yīng)用,所述控制方法包括如下步驟: 響應(yīng)于應(yīng)用的啟動請求,通過控制單元讀取所述應(yīng)用的類的類文件,在所讀取的類文件中包括的方法中添加用于將表示所述應(yīng)用的應(yīng)用信息添加到線程的代碼,并加載所述類; 在執(zhí)行所讀取的類文件中包括的所述方法期間,通過對象生成單元分配要用關(guān)于待生成的對象的內(nèi)存,將所述線程中記錄的應(yīng)用信息記錄到所分配的內(nèi)存,并生成所述對象;以及 通過內(nèi)存管理單元,與內(nèi)存大小相關(guān)聯(lián)地管理由所述對象生成單元生成的所述對象的應(yīng)用信息。
12.—種圖像處理裝置的控制方法,該圖像處理裝置執(zhí)行多個應(yīng)用,所述控制方法包括如下步驟: 響應(yīng)于應(yīng)用的啟動請求,通過控制單元讀取所述應(yīng)用的類的類文件,在所讀取的類文件中包括的方法中添加用于將表示所述應(yīng)用的應(yīng)用信息添加到線程的代碼,并加載所述類; 在執(zhí)行所讀取的類文件中包括的所述方法期間,通過對象生成單元分配要用于待生成的對象的文件大小,并且使用所分配的文件大小作為盤使用量來記錄所述線程中記錄的應(yīng)用信息,并生成所述對象;以及 通過盤管理單元,將由所述對象生成單元生成的所述對象的應(yīng)用信息與盤使用量相關(guān)聯(lián)地管理。
【文檔編號】H04N1/00GK104243743SQ201410251275
【公開日】2014年12月24日 申請日期:2014年6月6日 優(yōu)先權(quán)日:2013年6月6日
【發(fā)明者】藤澤邦匡, 長田守 申請人:佳能株式會社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1