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

內(nèi)存管理方法、裝置、以及記錄內(nèi)存管理程序的記錄媒體的制作方法

文檔序號(hào):6476385閱讀:115來源:國知局
專利名稱:內(nèi)存管理方法、裝置、以及記錄內(nèi)存管理程序的記錄媒體的制作方法
技術(shù)領(lǐng)域
本發(fā)明,涉及存內(nèi)存理方法、內(nèi)存管理裝置、以及記錄內(nèi)存管理程序的記 錄媒體。
背景技術(shù)
利用Java語言等動(dòng)態(tài)生成數(shù)據(jù)的編程語言編寫的程序(以下,稱為主程序), 由于將生成的數(shù)據(jù)動(dòng)態(tài)地記錄在內(nèi)存區(qū)域中,所以如果不清除內(nèi)存區(qū)域中因主 程序的執(zhí)行而變?yōu)椴恍枰臄?shù)據(jù)的話,主程序能夠利用的空閑區(qū)域(以下,稱 為可用區(qū)域)就會(huì)不足。所以, 一直以來,大家所熟知的方法是清除掉內(nèi)存中 不需要的數(shù)據(jù),重復(fù)利用內(nèi)存區(qū)域。
清除內(nèi)存區(qū)域中不需要的數(shù)據(jù),能夠重復(fù)利用該區(qū)域的處理被稱為垃圾回 收機(jī)制(以下,稱為GC)。將通過GC處理而變?yōu)榭稍俅卫玫目捎脜^(qū)域集中在 一處組成連續(xù)區(qū)域的處理稱為壓縮。為能夠重復(fù)利用內(nèi)存區(qū)域所執(zhí)行的這一系 列處理,都是運(yùn)行主程序時(shí)不可或缺的處理。當(dāng)主程序執(zhí)行必須實(shí)時(shí)性的處理 時(shí),GC處理以及壓縮處理,有必要和主程序處理一道實(shí)質(zhì)的并行執(zhí)行。
壓縮處理是,為了將可用區(qū)域集中到一處, -使內(nèi)存中的必要數(shù)據(jù)移動(dòng)之后, 將引用移動(dòng)源凄t據(jù)位置的指針的引用地址更新成移動(dòng)目標(biāo)凄t據(jù)位置的處理。在 壓縮處理進(jìn)行到移動(dòng)數(shù)據(jù)之后,更新指針的引用地址之前,在主程序調(diào)用移動(dòng) 源數(shù)據(jù)時(shí),由于此處不存在數(shù)據(jù),所以主程序就會(huì)出現(xiàn)處理異常。因此,在引 用移動(dòng)源數(shù)據(jù)位置的指針的引用地址全部更新成移動(dòng)目標(biāo)數(shù)據(jù)位置之前,不能 中斷壓縮處理。其結(jié)果是,損害了主程序的實(shí)時(shí)性。
用本發(fā)明者中的一人所提出的專利第3530887號(hào)發(fā)明,能夠不損害主程序 的實(shí)時(shí)性執(zhí)行GC處理。但是,該發(fā)明不能中斷生成連續(xù)可用區(qū)域的壓縮處理, 在壓縮處理結(jié)束之前不能執(zhí)行主程序處理。
目前,在移動(dòng)電話等小型機(jī)器中,大多使用作為嵌入式Java處理平臺(tái)的KVM (K virtual machine )。在KVM中,普遍釆用了執(zhí)-f亍上述GC處理以及壓縮處理的程序(以下,稱為內(nèi)存管理程序),該程序通常在內(nèi)存區(qū)域中的可用區(qū)域不足 時(shí),自動(dòng)執(zhí)行。其結(jié)果是,由于無法中斷內(nèi)存管理程序的處理,所以主程序的 運(yùn)行會(huì)被中斷幾毫秒~幾秒鐘時(shí)間。
對(duì)此,現(xiàn)有的移動(dòng)電話,在主程序執(zhí)行必須要實(shí)時(shí)性的處理,例如,在畫 面上運(yùn)動(dòng)必須要流暢動(dòng)作的動(dòng)畫、游戲的人物的處理時(shí),為在主程序的運(yùn)行過 程中使內(nèi)存管理程序不被自動(dòng)執(zhí)行,需要在執(zhí)行必須要實(shí)時(shí)性的處理之前,強(qiáng) 制執(zhí)行內(nèi)存管理程序。因此,由于可用區(qū)域的大小變大,沒有必要在短時(shí)間內(nèi) 執(zhí)行內(nèi)存管理程序,所以主程序能夠不破壞實(shí)時(shí)性地執(zhí)行處理。
但是,由于必須要實(shí)時(shí)性的處理的內(nèi)容不同,由移動(dòng)電話的機(jī)種所造成的 內(nèi)存區(qū)域大小、處理主程序的運(yùn)行處理速度的不同,會(huì)導(dǎo)致強(qiáng)制執(zhí)行內(nèi)存管理 程序的時(shí)間不同。因此,開發(fā)者考慮到這些不同,必須設(shè)定強(qiáng)制執(zhí)行內(nèi)存管理 程序的時(shí)間,出現(xiàn)開發(fā)繁瑣,開發(fā)效率低下這樣的問題。
在非專利文獻(xiàn)l中,^^開了一種壓縮處理,該壓縮處理對(duì)于GC處理后的所 有內(nèi)存區(qū)域,例如將分成16塊的內(nèi)存區(qū)域中的l塊區(qū)域作為限定區(qū)域,將該限 定區(qū)域內(nèi)的數(shù)據(jù)一并移動(dòng)到限定區(qū)域外的內(nèi)存區(qū)域后, 一起更新引用限定區(qū)域 內(nèi)數(shù)據(jù)的指針的引用地址。但是,這種壓縮處理,必須一并執(zhí)行在移動(dòng)數(shù)據(jù)之 后、更新所有引用移動(dòng)源指針的引用地址之前的處理,所以不能夠中斷壓縮處 理,執(zhí)行主程序的處理。因此,損害了主程序的實(shí)時(shí)性。
另外,在非專利文獻(xiàn)2中,將內(nèi)存區(qū)域分成任意多塊,將其中之一設(shè)定成 數(shù)據(jù)移動(dòng)目標(biāo)區(qū)域,主程序?qū)?shù)據(jù)記錄在數(shù)據(jù)移動(dòng)目標(biāo)區(qū)域之外的內(nèi)存區(qū)域中。 并且,將數(shù)據(jù)移動(dòng)目標(biāo)區(qū)域之外的內(nèi)存區(qū)域中的1塊作為數(shù)據(jù)移動(dòng)源區(qū)域,通 過將該數(shù)據(jù)移動(dòng)源區(qū)域的數(shù)據(jù)移動(dòng)到數(shù)據(jù)移動(dòng)目標(biāo)區(qū)域來生成連續(xù)的可用區(qū) 域。但是,該處理也同非專利文獻(xiàn)l一樣,不能夠中斷壓縮處理,執(zhí)行主程序。 因此,損害了主程序的實(shí)時(shí)性。另外,在該處理中,主程序在向內(nèi)存區(qū)域中記 錄數(shù)據(jù)之前,必須設(shè)定數(shù)據(jù)移動(dòng)目標(biāo)區(qū)域,因此,加上記錄在內(nèi)存區(qū)域中數(shù)據(jù) 的記錄狀態(tài)等之后,無法設(shè)定數(shù)據(jù)移動(dòng)目標(biāo)區(qū)域,也就無法高效生成可用區(qū)域。
一般的,主程序從內(nèi)存區(qū)域中讀出數(shù)據(jù)的次數(shù),遠(yuǎn)多于主程序向內(nèi)存區(qū)域 中寫入數(shù)據(jù)的次數(shù)。為此,若在數(shù)據(jù)讀出處理中增加特別處理的話,數(shù)據(jù)讀出時(shí)產(chǎn)生開銷,主程序處理的運(yùn)行效率就會(huì)降低。在上述非專利文獻(xiàn)2的處理中,
已知在各個(gè)數(shù)據(jù)的頭部添加指向最新數(shù)據(jù)位置的前向指針,主程序讀出數(shù)據(jù)單 元時(shí),溯尋前向指針,就能從最新的數(shù)據(jù)位置讀出數(shù)據(jù)單元的方法。但是,該 處理在數(shù)據(jù)讀出時(shí)產(chǎn)生開銷,也會(huì)降低主程序處理的運(yùn)行效率。
非專利文獻(xiàn)l: Parallel Incremental Compaction (US 2004/0128329 Al) 非專利文獻(xiàn) 2 : Incremental Incrementally Compacting Garbage Collection (SIGPLAN Notice 22 (7) pp. 253-263)

發(fā)明內(nèi)容
本發(fā)明,為解決上述問題,旨在提供一種能夠中斷生成連續(xù)可用區(qū)域的處 理,執(zhí)行主程序處理的內(nèi)存管理方法、內(nèi)存管理裝置、以及記錄內(nèi)存管理程序 的記錄媒體。
為達(dá)到上述目的,本發(fā)明內(nèi)存管理方法,在內(nèi)存中設(shè)置有數(shù)據(jù)記錄區(qū)域和 堆區(qū)域,所述數(shù)據(jù)記錄區(qū)域,用于記錄動(dòng)態(tài)生成數(shù)據(jù)的程序(以下,稱為主程 序)運(yùn)行等所利用的數(shù)據(jù),所述堆區(qū)域,用于記錄包含主程序運(yùn)行中所使用的 數(shù)據(jù)單元的數(shù)據(jù)(以下,稱為對(duì)象);清除因主程序的運(yùn)行而成為不需要的所述 堆區(qū)域的對(duì)象,在該堆區(qū)域中生成可用的空閑區(qū)域(以下,稱為可用區(qū)域)的 同時(shí),為在該堆區(qū)域中生成連續(xù)的可用區(qū)域,移動(dòng)記錄于該堆區(qū)域中的對(duì)象; 所述對(duì)象進(jìn)一步包括復(fù)制位置指針,所述復(fù)制位置指針用于記錄所述對(duì)象的復(fù) 制目標(biāo)的位置或者復(fù)制源的位置;在所述數(shù)據(jù)記錄區(qū)域中記錄引用所述對(duì)象位 置的對(duì)象位置指針;所述內(nèi)存管理方法,包括范圍設(shè)定步驟,設(shè)定在所述堆 區(qū)域中生成連續(xù)可用區(qū)域的限定范圍;對(duì)象復(fù)制步驟,將包含在所述限定范圍 內(nèi)的復(fù)制源對(duì)象作為復(fù)制目標(biāo)對(duì)象復(fù)制到該限定范圍外的可用區(qū)域的同時(shí),將 該復(fù)制源對(duì)象以及該復(fù)制目標(biāo)對(duì)象的復(fù)制位置指針的引用地址設(shè)定成相互的對(duì) 象的位置;第1指針更新步驟,將記錄在所述數(shù)據(jù)記錄區(qū)域中的,引用所述復(fù) 制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成由所述對(duì)象復(fù)制步驟復(fù)制的 復(fù)制目標(biāo)對(duì)象的位置;限定范圍可用化步驟,將所述限定范圍區(qū)域作為可用區(qū) 域;復(fù)制判斷步驟,在執(zhí)行所述對(duì)象復(fù)制步驟的過程中,所述主程序向記錄在所述堆區(qū)域中的對(duì)象的記錄區(qū)域執(zhí)行數(shù)據(jù)的寫入處理時(shí),或者執(zhí)行寫入處理之 后,判斷數(shù)據(jù)寫入地址的記錄區(qū)域,是否是所述復(fù)制源對(duì)象的記錄區(qū)域或者所
述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域中的一個(gè);復(fù)制寫入步驟,通過所述復(fù)制判斷步驟 判斷寫入地址是所述復(fù)制源對(duì)象的記錄區(qū)域或者所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域 中的一個(gè)時(shí),將所述主程序執(zhí)行寫入處理的數(shù)據(jù),同時(shí)寫入所述復(fù)制源對(duì)象的 記錄區(qū)域以及所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域。
根據(jù)這種構(gòu)成,主程序在向復(fù)制源對(duì)象的記錄區(qū)域或者復(fù)制目標(biāo)對(duì)象的記 錄區(qū)域中執(zhí)行數(shù)據(jù)的寫入處理時(shí),或者執(zhí)行寫入處理之后,能夠?qū)?zhí)行寫入處 理的數(shù)據(jù),同時(shí)寫入復(fù)制源數(shù)據(jù)的記錄區(qū)域以及復(fù)制目標(biāo)數(shù)據(jù)的記錄區(qū)域。因 此,能夠保持復(fù)制源數(shù)據(jù)和復(fù)制目標(biāo)數(shù)據(jù)的數(shù)據(jù)一致性,能夠中斷生成連續(xù)的 可用區(qū)域的處理,執(zhí)行主程序處理。因此,能夠不損害主程序處理的實(shí)時(shí)性, 在堆區(qū)域中生成連續(xù)的可用區(qū)域。
所述內(nèi)存管理方法,在內(nèi)存中設(shè)置有數(shù)據(jù)記錄區(qū)域和堆區(qū)域,所述數(shù)據(jù)記 錄區(qū)域,用于記錄動(dòng)態(tài)生成數(shù)據(jù)的程序(以下,稱為主程序)運(yùn)行等所利用的 數(shù)據(jù),所述堆區(qū)域,用于記錄包含主程序運(yùn)行中所使用的數(shù)據(jù)單元的數(shù)據(jù)(以 下,稱為對(duì)象);清除因主程序的運(yùn)行而成為不需要的所述堆區(qū)域的對(duì)象,在該 堆區(qū)域中生成可用的空閑區(qū)域(以下,稱為可用區(qū)域)的同時(shí),為在該堆區(qū)域 中生成連續(xù)的可用區(qū)域,移動(dòng)記錄于該堆區(qū)域中的對(duì)象;在所述凝:據(jù)記錄區(qū)域 中記錄引用所述對(duì)象位置的對(duì)象位置指針;在所述內(nèi)存中,進(jìn)一步設(shè)置有記錄 對(duì)象位置的對(duì)象位置記錄區(qū)域;所述內(nèi)存管理方法,包括范圍設(shè)定步驟,設(shè) 定在所述堆區(qū)域中生成連續(xù)可用區(qū)域的限定范圍;對(duì)象復(fù)制步驟,將包含在所 述限定范圍內(nèi)的復(fù)制源對(duì)象作為復(fù)制目標(biāo)對(duì)象復(fù)制到該限定范圍外的可用區(qū)域 的同時(shí),將該復(fù)制源對(duì)象的位置以及該復(fù)制目標(biāo)對(duì)象的位置記錄到所述對(duì)象位 置記錄區(qū)域;第1指針更新步驟,將記錄在所述數(shù)據(jù)記錄區(qū)域中的,引用所述 復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成由所述對(duì)象復(fù)制步驟復(fù)制 的復(fù)制目標(biāo)對(duì)象的位置;限定范圍可用化步驟,將所述限定范圍的區(qū)域作為可 用區(qū)域;復(fù)制判斷步驟,在執(zhí)行所述對(duì)象復(fù)制步驟的過程中,所述主程序向記 錄在所述堆區(qū)域中的對(duì)象的記錄區(qū)域執(zhí)行數(shù)據(jù)的寫入處理時(shí),或者執(zhí)行寫入處述復(fù)制源對(duì)象的記錄區(qū)域或
者所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域中的一個(gè);復(fù)制寫入步驟,通過所述復(fù)制判斷 步驟判斷寫入地址是所述復(fù)制源對(duì)象的記錄區(qū)域或者所述復(fù)制目標(biāo)對(duì)象的記錄 區(qū)域中的一個(gè)時(shí),將所述主程序執(zhí)行寫入處理的數(shù)據(jù),同時(shí)寫入所述復(fù)制源對(duì) 象的記錄區(qū)域以及所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域。
根據(jù)這種構(gòu)成,主程序在向復(fù)制源對(duì)象的記錄區(qū)域或者復(fù)制目標(biāo)對(duì)象的記 錄區(qū)域中執(zhí)行數(shù)據(jù)的寫入處理時(shí),或者執(zhí)行寫入處理之后,能夠?qū)?zhí)行寫入處 理的數(shù)據(jù),同時(shí)寫入復(fù)制源數(shù)據(jù)的記錄區(qū)域以及復(fù)制目標(biāo)數(shù)據(jù)的記錄區(qū)域,所 以,能夠取得與權(quán)利要求l相同的效果。另外,由于對(duì)對(duì)象位置記錄區(qū)域進(jìn)行 引用,能夠獲取復(fù)制源對(duì)象的位置以及復(fù)制目標(biāo)對(duì)象的位置、復(fù)制源對(duì)象的記 錄區(qū)域以及復(fù)制目標(biāo)對(duì)象的記錄區(qū)域,所以對(duì)象沒有必要設(shè)置復(fù)制位置指針。 因此,能夠提高堆區(qū)域的使用效率。
本發(fā)明,在上述發(fā)明中,所迷對(duì)象,進(jìn)一步包括作為所述數(shù)據(jù)單元的所述 對(duì)象位置指針;所述內(nèi)存管理方法,進(jìn)一步包括第2指針更新步驟和引用地址 變更步驟和同一判斷步驟;所述第2指針更新步驟,將引用所述復(fù)制源對(duì)象位 置的所述堆區(qū)域內(nèi)的對(duì)象位置指針的引用地址,更新成由所述對(duì)象復(fù)制步驟復(fù) 制的復(fù)制目標(biāo)對(duì)象的位置;所述引用地址變更步驟,在所迷第2指針更新步驟 執(zhí)行過程中,所述主程序向所述堆區(qū)域中執(zhí)行引用所述復(fù)制源對(duì)象位置的對(duì)象 位置指針的寫入處理時(shí),或者執(zhí)行寫入處理之后,將該對(duì)象位置指針的引用地 址變更成所述復(fù)制目標(biāo)對(duì)象的位置;所述同一判斷步驟,在所述第2指針更新 步驟執(zhí)行過程中,所述主程序檢查2個(gè)對(duì)象位置指針的引用地址是否是同一對(duì) 象位置時(shí),當(dāng)該2個(gè)對(duì)象位置指針中的一個(gè)引用所述復(fù)制源對(duì)象的位置,另一 個(gè)引用所述復(fù)制目標(biāo)對(duì)象的位置時(shí),判斷引用同一個(gè)對(duì)象;所述復(fù)制判斷步驟, 在所述對(duì)象復(fù)制步驟、或者所述第2指針更新步驟執(zhí)行過程中,所述主程序向 記錄于所述堆區(qū)域中的對(duì)象的記錄區(qū)域執(zhí)行數(shù)據(jù)的寫入處理時(shí),或者執(zhí)行寫入 處理之后,判斷數(shù)據(jù)寫入地址的記錄區(qū)域,是否是所述復(fù)制源對(duì)象的記錄區(qū)域 或者所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域中的一個(gè)。
根據(jù)這種構(gòu)成,主程序向堆區(qū)域執(zhí)行引用復(fù)制源對(duì)象位置的對(duì)象位置指針的寫入處理時(shí),或者執(zhí)行寫入處理之后,能夠?qū)?duì)象位置指針的引用地址,更 新成復(fù)制目標(biāo)對(duì)象的位置。因此,能夠防止在這些處理(壓縮處理)結(jié)束之后 在對(duì)象位置指針的引用地址中沒有數(shù)據(jù),所以能夠防止發(fā)生主程序處理異常, 能夠中斷生成連續(xù)可用區(qū)域的處理,執(zhí)行主程序處理。因此,可以不損害主程 序處理的實(shí)時(shí)性,在堆區(qū)域中生成連續(xù)的可用區(qū)域。
本發(fā)明,在上述發(fā)明中,在所述數(shù)據(jù)記錄區(qū)域中,設(shè)置有棧區(qū)域,所述棧
區(qū)域用于累積配置臨時(shí)記錄所述主程序運(yùn)行的函數(shù)的運(yùn)行結(jié)果等的函數(shù)幀;,所 述內(nèi)存管理方法,進(jìn)一步包括第3指針更新步驟和邊界設(shè)定步驟;所述第3指 針更新步驟,從上位向下位掃描所述棧區(qū)域內(nèi)的所述函數(shù)幀,將以該順序記錄 于該棧區(qū)域中的,引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新 成由所述對(duì)象復(fù)制步驟復(fù)制的復(fù)制目標(biāo)對(duì)象的位置;所述邊界設(shè)定步驟,在中 斷所述第3指針更新步驟所做的對(duì)象位置指針的更新處理時(shí),在最后執(zhí)行該第3 指針更新步驟處理的所述函數(shù)幀中設(shè)定控制函數(shù)運(yùn)行的邊界;所述第1指針更 新步驟,將記錄于所述棧區(qū)域以外的所述數(shù)據(jù)記錄區(qū)域中的,引用所述復(fù)制源 對(duì)象位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置;所述 邊界,在函數(shù)運(yùn)行結(jié)束之后,重新開始所述第3指針更新步驟執(zhí)行的處理。
根據(jù)這種構(gòu)成,在最后執(zhí)行對(duì)象位置指針的更新處理的函數(shù)幀中設(shè)定邊界, 函數(shù)運(yùn)行結(jié)束后,利用邊界,重新開始對(duì)象位置指針的更新處理。因此,能夠 中斷棧區(qū)域內(nèi)的對(duì)象位置指針的更新處理,主程序執(zhí)行函數(shù),能夠不損害主程 序處理的實(shí)時(shí)性,更新棧區(qū)域的對(duì)象位置指針。
本發(fā)明,在上述實(shí)施例中,將所述數(shù)據(jù)記錄區(qū)域的一部分或者全部分配進(jìn) 所述堆區(qū)域內(nèi),將該堆區(qū)域內(nèi)的該數(shù)據(jù)記錄區(qū)域外的區(qū)域,作為權(quán)利要求1至3 中任意一個(gè)所述的堆區(qū)域;所述范圍設(shè)定步驟,能夠針對(duì)所述堆區(qū)域內(nèi)的所述 數(shù)據(jù)記錄區(qū)域被分配的區(qū)域設(shè)定限定范圍;所述第1指針更新步驟,將記錄于 所述限定范圍內(nèi)的所述數(shù)據(jù)記錄區(qū)域中的,引用所述復(fù)制源對(duì)象位置的對(duì)象位 置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置的同時(shí),將該限定范圍內(nèi) 的所述數(shù)據(jù)記錄區(qū)域,移動(dòng)至所述堆區(qū)域內(nèi)的可用區(qū)域中,將記錄于所述限定 范圍外的所述數(shù)據(jù)記錄區(qū)域中的,引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的
17引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置。
根據(jù)這種構(gòu)成,將數(shù)據(jù)記錄區(qū)域分配進(jìn)堆區(qū)域內(nèi),將堆區(qū)域內(nèi)的數(shù)據(jù)記錄
區(qū)域外的區(qū)域,作為權(quán)利要求1至權(quán)利要求3任意一個(gè)所述的堆區(qū)域,所以能 夠取得和權(quán)利要求1至權(quán)利要求3任意一個(gè)發(fā)明相同的效果。
本發(fā)明,在上述發(fā)明中,將除所述棧區(qū)域以外的所述數(shù)據(jù)記錄區(qū)域的一部 分或者全部分配進(jìn)所述堆區(qū)域內(nèi),將該堆區(qū)域內(nèi)的該數(shù)據(jù)記錄區(qū)域以外的區(qū)域, 作為權(quán)利要求1至3任意一個(gè)所述的堆區(qū)域;所述范圍設(shè)定步驟,能夠針對(duì)所 述堆區(qū)域內(nèi)的所述數(shù)據(jù)記錄區(qū)域被分配的區(qū)域設(shè)定限定范圍;所述第1指針更 新步驟,將記錄于所述限定范圍內(nèi)的所述數(shù)據(jù)記錄區(qū)域中的,引用所述復(fù)制源 對(duì)象位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置的同時(shí), 將該限定范圍內(nèi)的所述凄t據(jù)記錄區(qū)域,移動(dòng)至所述堆區(qū)域內(nèi)的可用區(qū)域,將記 錄于所述限定范圍以及所述棧區(qū)域以外的所述數(shù)據(jù)記錄區(qū)域中的,引用所述復(fù) 制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置。
根據(jù)這種構(gòu)成,將除棧區(qū)域以外的數(shù)據(jù)記錄區(qū)域分配進(jìn)堆區(qū)域中,將堆區(qū) 域內(nèi)的數(shù)據(jù)記錄區(qū)域外的區(qū)域作為權(quán)利要求1至權(quán)利要求3任意一個(gè)所述的堆 區(qū)域,所以能夠取得和權(quán)利要求4的發(fā)明相同的效果。
本發(fā)明,在上述發(fā)明中,將包含所述棧區(qū)域的所述數(shù)據(jù)記錄區(qū)域的一部分 或者全部分配進(jìn)所述堆區(qū)域內(nèi),將該堆區(qū)域內(nèi)的該數(shù)據(jù)記錄區(qū)域外的區(qū)域,作 為權(quán)利要求1至權(quán)利要求3任意一個(gè)所述的堆區(qū)域;所述范圍設(shè)定步驟,能夠 針對(duì)所述堆區(qū)域內(nèi)的所述數(shù)據(jù)記錄區(qū)域的被分配的區(qū)域設(shè)定限定范圍;所述第1 指針更新步驟,將記錄于除所述限定范圍內(nèi)的所述棧區(qū)域以外的所述數(shù)據(jù)記錄 區(qū)域中的,引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成所述 復(fù)制目標(biāo)對(duì)象的位置的同時(shí),將分配進(jìn)該限定范圍內(nèi)的,除所述棧區(qū)域以外的 該數(shù)據(jù)記錄區(qū)域,移動(dòng)至所述堆區(qū)域內(nèi)的可用區(qū)域中,將記錄于所述限定范圍 外的除所述棧區(qū)域以外的所述數(shù)據(jù)記錄區(qū)域中的,引用所述復(fù)制源對(duì)象位置的 對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置;所述第3指針更 新步驟,從上位向下位掃描分配進(jìn)所述堆區(qū)域內(nèi)的所述棧區(qū)域內(nèi)的所述函數(shù)幀, 將記錄于所述限定范圍內(nèi)的所述函數(shù)幀中的,引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置的同時(shí),將該限定范圍 內(nèi)的該函數(shù)幀,移動(dòng)至該堆區(qū)域內(nèi)的可用區(qū)域,將記錄于所述限定范圍外的所 述函數(shù)幀中的,引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成
所述復(fù)制目標(biāo)對(duì)象的位置;所述邊界i殳定步驟,在中斷所述第3指針更新處理, 運(yùn)行所述主程序時(shí),將所述邊界,設(shè)定在最后執(zhí)行該第3指針更新處理的所述
函數(shù)幀中。
根據(jù)這種構(gòu)成,將包含棧區(qū)域的數(shù)據(jù)記錄區(qū)域分配進(jìn)堆區(qū)域內(nèi),將堆區(qū)域 內(nèi)的數(shù)據(jù)記錄區(qū)域外的區(qū)域,作為權(quán)利要求1至權(quán)利要求3任意一個(gè)所述的堆 區(qū)域,所以能夠取得和權(quán)利要求4的發(fā)明相同的效果。另外,能夠中斷使限定 范圍內(nèi)的棧區(qū)域移動(dòng)至堆區(qū)域內(nèi)的可用區(qū)域的處理,執(zhí)行主程序處理。因此, 能夠不損害主程序處理的實(shí)時(shí)性,執(zhí)行使限定范圍內(nèi)的棧區(qū)域移動(dòng)至堆區(qū)域內(nèi) 的可用區(qū)域的處理。
本發(fā)明內(nèi)存管理裝置,在內(nèi)存中設(shè)置有數(shù)據(jù)記錄區(qū)域和堆區(qū)域,所述數(shù)據(jù) 記錄區(qū)域,用于記錄動(dòng)態(tài)生成數(shù)據(jù)的程序(以下,稱為主程序)運(yùn)行等所利用 的數(shù)據(jù),所述堆區(qū)域,用于記錄包含主程序運(yùn)行中所使用的數(shù)據(jù)單元的數(shù)據(jù)(以 下,稱為對(duì)象);清除因主程序的運(yùn)行而成為不需要的所述堆區(qū)域的對(duì)象,在該 堆區(qū)域中生成可用的空閑區(qū)域(以下,稱為可用區(qū)域)的同時(shí),為在該堆區(qū)域 中生成連續(xù)的可用區(qū)域,移動(dòng)記錄于該堆區(qū)域中的對(duì)象;所述對(duì)象,進(jìn)一步包 括復(fù)制位置指針,所述復(fù)制位置指針用于記錄所述對(duì)象的復(fù)制目標(biāo)的位置或者 復(fù)制源的位置;在所述凝:據(jù)記錄區(qū)域中記錄引用所述對(duì)象位置的對(duì)象位置指針; 所述內(nèi)存管理裝置,包括范圍設(shè)定單元,用于設(shè)定在所述堆區(qū)域中生成連續(xù) 可用區(qū)域的限定范圍;對(duì)象復(fù)制單元,用于將包含在所述限定范圍內(nèi)的復(fù)制源 對(duì)象作為復(fù)制目標(biāo)對(duì)象復(fù)制到該限定范圍外的可用區(qū)域的同時(shí),將該復(fù)制源對(duì) 象以及該復(fù)制目標(biāo)對(duì)象的復(fù)制位置指針的引用地址設(shè)定成相互的對(duì)象的位置; 第1指針更新單元,用于將記錄在所述數(shù)據(jù)記錄區(qū)域中的,引用所述復(fù)制源對(duì) 象位置的對(duì)象位置指針的引用地址,更新成由所述對(duì)象復(fù)制單元復(fù)制的復(fù)制目 標(biāo)對(duì)象的位置;限定范圍可用化單元,用于將所述限定范圍的區(qū)域作為可用區(qū) 域;復(fù)制判斷單元,用于在執(zhí)行所述對(duì)象復(fù)制單元的過程中,所述主程序向記錄在所述堆區(qū)域中的對(duì)象的記錄區(qū)域執(zhí)行數(shù)據(jù)的寫入處理時(shí),或者執(zhí)行寫入處 理之后,判斷數(shù)據(jù)寫入地址的記錄區(qū)域,是否是所述復(fù)制源對(duì)象的記錄區(qū)域或
者所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域中的一個(gè);復(fù)制寫入單元,用于通過所述復(fù)制 判斷單元判斷寫入地址是所述復(fù)制源對(duì)象的記錄區(qū)域或者所述復(fù)制目標(biāo)對(duì)象的 記錄區(qū)域中的一個(gè)時(shí),將所述主程序執(zhí)行寫入處理的數(shù)據(jù),同時(shí)寫入所述復(fù)制 源對(duì)象的記錄區(qū)域以及所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域。
本發(fā)明內(nèi)存管理裝置,在內(nèi)存中設(shè)置有數(shù)據(jù)記錄區(qū)域和堆區(qū)域,所述數(shù)據(jù) 記錄區(qū)域,用于記錄動(dòng)態(tài)生成數(shù)據(jù)的程序(以下,稱為主程序)運(yùn)行等所利用 的數(shù)據(jù),所述堆區(qū)域,用于記錄包含主程序運(yùn)行中所使用的數(shù)據(jù)單元的數(shù)據(jù)(以 下,稱為對(duì)象);清除因主程序的運(yùn)行而成為不需要的所述堆區(qū)域的對(duì)象,在該 堆區(qū)域中生成可用的空閑區(qū)域(以下,稱為可用區(qū)域)的同時(shí),為在該堆區(qū)域 中生成連續(xù)的可用區(qū)域,移動(dòng)記錄于該堆區(qū)域中的對(duì)象;在所述數(shù)據(jù)記錄區(qū)域 中記錄引用所述對(duì)象位置的對(duì)象位置指針;在所述內(nèi)存中,進(jìn)一步設(shè)置有記錄 對(duì)象位置的對(duì)象位置記錄區(qū)域;所述內(nèi)存管理裝置,包括范圍設(shè)定單元,用 于設(shè)定在所述堆區(qū)域中生成連續(xù)可用區(qū)域的限定范圍;對(duì)象復(fù)制單元,用于將 包含在所述限定范圍內(nèi)的復(fù)制源對(duì)象作為復(fù)制目標(biāo)對(duì)象復(fù)制到該限定范圍外的 可用區(qū)域的同時(shí),將該復(fù)制源對(duì)象的位置以及該復(fù)制目標(biāo)對(duì)象的位置記錄到所 述對(duì)象位置記錄區(qū)域;第1指針更新單元,用于將記錄在所述數(shù)據(jù)記錄區(qū)域中 的,引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成由所述對(duì)象 復(fù)制單元復(fù)制的復(fù)制目標(biāo)對(duì)象的位置;限定范圍可用化單元,用于將所述限定 范圍的區(qū)域作為可用區(qū)域;復(fù)制判斷單元,用于在執(zhí)行所述對(duì)象復(fù)制單元的過 程中,所述主程序向記錄在所述堆區(qū)域中的對(duì)象的記錄區(qū)域執(zhí)行數(shù)據(jù)的寫入處 理時(shí),或者執(zhí)行寫入處理之后,判斷數(shù)據(jù)寫入地址的記錄區(qū)域,是否是所述復(fù) 制源對(duì)象的記錄區(qū)域或者所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域中的一個(gè);復(fù)制寫入單 元,用于通過所述復(fù)制判斷單元判斷寫入地址是所述復(fù)制源對(duì)象的記錄區(qū)域或 者所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域中的一個(gè)時(shí),將所述主程序執(zhí)行寫入處理的數(shù) 據(jù),同時(shí)寫入所述復(fù)制源對(duì)象的記錄區(qū)域以及所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域。
本發(fā)明,在上述發(fā)明中,所述對(duì)象,進(jìn)一步包括作為所述數(shù)據(jù)單元的所述對(duì)象位置指針;所述內(nèi)存管理裝置,進(jìn)一步包括第2指針更新單元和引用地址 變更單元和同一判斷單元;所述第2指針更新單元,用于將引用所述復(fù)制源對(duì) 象位置的所述堆區(qū)域內(nèi)的對(duì)象位置指針的引用地址,更新成由所述對(duì)象復(fù)制單 元復(fù)制的復(fù)制目標(biāo)對(duì)象的位置;所述引用地址變更單元,用于在所述第2指針 更新單元執(zhí)行過程中,所述主程序向所述堆區(qū)域執(zhí)行引用所述復(fù)制源對(duì)象位置 的對(duì)象位置指針的寫入處理時(shí),或者執(zhí)行寫入處理之后,將該對(duì)象位置指針的 引用地址變更成所述復(fù)制目標(biāo)對(duì)象的位置;所述同一判斷單元,用于在所述第2 指針更新單元執(zhí)行過程中,所述主程序檢查2個(gè)對(duì)象位置指針的引用地址是否 是同一對(duì)象位置時(shí),當(dāng)該2個(gè)對(duì)象位置指針中的一個(gè)引用所述復(fù)制源對(duì)象的位 置,另一個(gè)引用所述復(fù)制目標(biāo)對(duì)象的位置時(shí),判斷為引用同一個(gè)對(duì)象;所述復(fù) 制判斷單元,還用于在所述對(duì)象復(fù)制單元,或者所述第2指針更新單元執(zhí)行過 程中,所述主程序向記錄于所述堆區(qū)域中的對(duì)象的記錄區(qū)域中執(zhí)行數(shù)據(jù)的寫入 處理時(shí),或者執(zhí)行寫入處理之后,判斷數(shù)據(jù)寫入地址的記錄區(qū)域,是否是所述 復(fù)制源對(duì)象的記錄區(qū)域或者所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域中的一個(gè)。
本發(fā)明,在上述發(fā)明中,在所述數(shù)據(jù)記錄區(qū)域中,設(shè)置有棧區(qū)域,所述棧 區(qū)域用于累積配置臨時(shí)記錄所述主程序運(yùn)行的函數(shù)的運(yùn)行結(jié)果等的函數(shù)幀;所 述內(nèi)存管理裝置,進(jìn)一步包括第3指針更新單元和邊界設(shè)定單元;所述第3指 針更新單元,用于/人上位向下位掃描所述棧區(qū)域內(nèi)的所述函數(shù)幀,將以該順序 記錄于該棧區(qū)域中的,引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址, 更新成由所述對(duì)象復(fù)制單元復(fù)制的復(fù)制目標(biāo)對(duì)象的位置;所述邊界設(shè)定單元, 用于在中斷所述第3指針更新單元所做的對(duì)象位置指針的更新處理時(shí),在最后 執(zhí)行該第3指針更新單元處理的所述函數(shù)幀中設(shè)定控制函數(shù)運(yùn)行的邊界;所述 第l指針更新單元,還用于將記錄于所述棧區(qū)域以外的所述數(shù)據(jù)記錄區(qū)域中的, 引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì) 象的位置;所述邊界,在函數(shù)運(yùn)行結(jié)束之后,重新開始所述第3指針更新單元 執(zhí)行的處理。
本發(fā)明,在上述發(fā)明中,將所述數(shù)據(jù)記錄區(qū)域的一部分或者全部分配進(jìn)所 述堆區(qū)域內(nèi),將該堆區(qū)域內(nèi)的該數(shù)據(jù)記錄區(qū)域以外的區(qū)域,作為權(quán)利要求8至
2110中任意一個(gè)所述的堆區(qū)域;所述范圍設(shè)定單元,還用于能夠針對(duì)所述堆區(qū)域 內(nèi)的所述數(shù)據(jù)記錄區(qū)域被分配的區(qū)域設(shè)定限定范圍;所述第1指針更新單元, 還用于將記錄于所述限定范圍內(nèi)的所述數(shù)據(jù)記錄區(qū)域中的,引用所述復(fù)制源對(duì) 象位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置的同時(shí), 將該限定范圍內(nèi)的所述數(shù)據(jù)記錄區(qū)域,移動(dòng)至所述堆區(qū)域內(nèi)的可用區(qū)域中,將 記錄于所述限定范圍外的所述數(shù)據(jù)記錄區(qū)域中的,引用所述復(fù)制源對(duì)象位置的 對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置。
本發(fā)明,在上述發(fā)明中,將除所述棧區(qū)域以外的所述凄t據(jù)記錄區(qū)域的一部 分或者全部分配進(jìn)所述堆區(qū)域內(nèi),將該堆區(qū)域內(nèi)的該數(shù)據(jù)記錄區(qū)域以外的區(qū)域, 作成權(quán)利要求8至IO任意一個(gè)所述的堆區(qū)域;所述范圍設(shè)定單元,還用于能夠 針對(duì)所述堆區(qū)域內(nèi)的所述數(shù)據(jù)記錄區(qū)域被分配的區(qū)域設(shè)定限定范圍;所述第1 指針更新單元,還用于將記錄于所述限定范圍內(nèi)的所述數(shù)據(jù)記錄區(qū)域中的,引 用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象 的位置的同時(shí),將該限定范圍內(nèi)的所述數(shù)據(jù)記錄區(qū)域,移動(dòng)至所述堆區(qū)域內(nèi)的 可用區(qū)域,將記錄于所述限定范圍以及所述棧區(qū)域以外的所述數(shù)據(jù)記錄區(qū)域中 的,引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目 標(biāo)對(duì)象的位置。
本發(fā)明,在上述發(fā)明中,將包含所述棧區(qū)域的所述數(shù)據(jù)記錄區(qū)域的一部分 或者全部分配進(jìn)所述堆區(qū)域內(nèi),將該堆區(qū)域內(nèi)的該數(shù)據(jù)記錄區(qū)域外的區(qū)域,作 為權(quán)利要求8至權(quán)利要求10任意一個(gè)所述的堆區(qū)域;所述范圍設(shè)定單元,還用 于能夠針對(duì)所述堆區(qū)域內(nèi)的所述數(shù)據(jù)記錄區(qū)域的被分配的區(qū)域設(shè)定限定范圍; 所述第1指針更新單元,還用于將記錄于除所述限定范圍內(nèi)的所述棧區(qū)域以外 的所述數(shù)據(jù)記錄區(qū)域中的,引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地 址,更新成所述復(fù)制目標(biāo)對(duì)象的位置的同時(shí),將分配進(jìn)該限定范圍內(nèi)的,除所 述棧區(qū)域以外的該數(shù)據(jù)記錄區(qū)域,移動(dòng)至所述堆區(qū)域內(nèi)的可用區(qū)域中,將記錄 于所述限定范圍外的除所述棧區(qū)域以外的所述數(shù)據(jù)記錄區(qū)域中的,引用所述復(fù) 制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置; 所述第3指針更新單元,還用于從上位向下位掃描分配進(jìn)所述堆區(qū)域內(nèi)的所述棧區(qū)域內(nèi)的所述函數(shù)幀,將記錄于所述限定范圍內(nèi)的所述函數(shù)幀中的,引用所 述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位 置的同時(shí),將該限定范圍內(nèi)的該函數(shù)幀,移動(dòng)至該堆區(qū)域內(nèi)的可用區(qū)域,將記 錄于所述限定范圍外的所述函數(shù)幀中的,引用所述復(fù)制源對(duì)象位置的對(duì)象位置
指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置;所述邊界"&定單元,還用 于在中斷所述第3指針更新處理,運(yùn)行所述主程序時(shí),將所述邊界,設(shè)定在最 后執(zhí)行該第3指針更新處理的所述函數(shù)幀中。
本發(fā)明,提供一種計(jì)算機(jī)可讀取記錄媒體,所述計(jì)算機(jī)可讀取記錄媒體, 用于記錄在計(jì)算機(jī)上運(yùn)行上述發(fā)明的內(nèi)存管理方法的內(nèi)存管理程序。


圖l是本發(fā)明的第1實(shí)施例提供的移動(dòng)電話的構(gòu)成示意框圖。 圖2是上述移動(dòng)電話的閃存的構(gòu)成示意框圖。 圖3是上述移動(dòng)電話的數(shù)據(jù)記錄區(qū)域的構(gòu)成示意框圖。 圖4是上述移動(dòng)電話的棧區(qū)域的構(gòu)成說明圖。 圖5是記錄在上述移動(dòng)電話的堆區(qū)域中的對(duì)象的構(gòu)成說明圖。 圖6是在上述移動(dòng)電話中的內(nèi)存管理處理順序的示意流程圖。 圖7是在上述內(nèi)存管理處理中的壓縮處理順序的示意流程圖。 圖8是在上述內(nèi)存管理處理中的對(duì)象位置指針更新順序的示意流程圖。 圖9A-9C是在上述移動(dòng)電話的堆區(qū)域中的壓縮處理的說明圖。 圖IO是在上述移動(dòng)電話的堆區(qū)域的壓縮處理中寫入數(shù)據(jù)的處理順序的示意 流程圖。
圖11是在上述移動(dòng)電話的堆區(qū)域的壓縮處理中寫入對(duì)象位置指針的處理順 序的示意流程圖。
圖12是在上述移動(dòng)電話的棧區(qū)域中的對(duì)象位置指針更新處理順序的示意流程圖。
圖13A、 13B是在上述移動(dòng)電話的棧區(qū)域中的邊界設(shè)定處理的說明圖。 圖14是上述移動(dòng)電話的對(duì)象位置指針的同一判斷處理順序的示意流程圖。圖15是本發(fā)明的第2實(shí)施例提供的移動(dòng)電話的構(gòu)成示意框圖。
圖16是上述移動(dòng)電話的位置記錄列表的一例示意圖。
圖17是上述移動(dòng)電話的堆區(qū)域的壓縮處理順序的示意流程圖。
圖18是本發(fā)明的第3實(shí)施例提供的移動(dòng)電話的構(gòu)成示意框圖。
圖19是上述移動(dòng)電話的堆區(qū)域和數(shù)據(jù)記錄區(qū)域和棧區(qū)域的狀態(tài)說明示意圖。
圖20是上述移動(dòng)電話的數(shù)據(jù)記錄區(qū)域的壓縮處理順序的示意流程圖。 圖21是本發(fā)明的第3實(shí)施例提供的移動(dòng)電話的堆區(qū)域和數(shù)據(jù)記錄區(qū)域和棧 區(qū)域的狀態(tài)說明示意圖。
圖22是上述移動(dòng)電話的數(shù)據(jù)記錄區(qū)域的壓縮處理順序的示意流程圖。 圖23是上述移動(dòng)電話的棧區(qū)域的壓縮處理順序的示意流程圖。
具體實(shí)施例方式
以下,參照?qǐng)D1-圖3對(duì)本發(fā)明的第1實(shí)施例提供的移動(dòng)電話(內(nèi)存管理裝 置)進(jìn)行說明。在以下的實(shí)施例中,針對(duì)將本發(fā)明的內(nèi)存管理裝置應(yīng)用于移動(dòng) 電話的情況進(jìn)行說明。圖l表示的是移動(dòng)電話l的構(gòu)成,圖2表示的是閃存(記 錄媒體)17的構(gòu)成,圖3表示的是數(shù)據(jù)記錄區(qū)域21的構(gòu)成。移動(dòng)電話l,能夠 運(yùn)行用動(dòng)態(tài)生成數(shù)據(jù)的Java語言編寫的程序(以下,稱為主程序)91,以及運(yùn) 行本發(fā)明的內(nèi)存管理程序9 3 。
移動(dòng)電話1,包括輸入聲音用的麥克等的輸入部12,和輸出聲音用的揚(yáng)聲 器等的輸出部13,和具有由用戶操作的按鍵的操作部14,和進(jìn)行聲音數(shù)據(jù)等的 收發(fā)用的通信部15,和顯示菜單、通信狀態(tài)等用的顯示部16。另外,移動(dòng)電話 1,還包括記錄程序以及數(shù)據(jù)信息的閃存17,和臨時(shí)記錄各種信息的內(nèi)存部(內(nèi) 存)18,和對(duì)裝置各部分進(jìn)行控制用的CPUll。
在閃存17中,如2所示,記錄著主程序91,和主程序91運(yùn)行所必需 的Java VM (Java Virtual Machine)等運(yùn)行環(huán)境程序92,和作為運(yùn)行環(huán)境程 序92的一部分的內(nèi)存管理程序93,和各種設(shè)定信息等的ft據(jù)94等。移動(dòng)電話 1,從內(nèi)存部18中讀取內(nèi)存管理程序93,通過用CPUll運(yùn)行,作為本發(fā)明的內(nèi)存管理裝置運(yùn)作。另外,內(nèi)存管理程序93,在閃存17中,既可以作為主程序 91的一部分被記錄,也可以作為獨(dú)立的程序被記錄。
在內(nèi)存部18中,設(shè)置有數(shù)據(jù)記錄區(qū)域21、堆區(qū)域22和空閑列表(FreeList ) 23,數(shù)據(jù)記錄區(qū)域21,用于記錄用于主程序91運(yùn)行等的數(shù)據(jù),堆區(qū)域22用于 記錄包含主程序91在執(zhí)行過程中所用的數(shù)據(jù)單元的數(shù)據(jù)(以下,稱為對(duì)象)。 數(shù)據(jù)記錄區(qū)域21,記錄著引用特殊對(duì)象等的位置的對(duì)象位置指針、表示棧區(qū)域 27位置的指針、記錄表示程序執(zhí)行位置的數(shù)據(jù)等的固定數(shù)據(jù)記錄區(qū)域(圖中未 表示)、記錄臨時(shí)數(shù)據(jù)的臨時(shí)數(shù)據(jù)記錄區(qū)域(圖中未表示)等。
堆區(qū)域22,通過主程序91的運(yùn)行記錄對(duì)象,在主程序91的運(yùn)行過程中可 用的空閑區(qū)域(以下,稱為可用區(qū)域)會(huì)逐漸不足。因此,堆區(qū)域22,通過內(nèi) 存管理程序93,進(jìn)行包括垃圾回收(以下,稱為GC)處理和壓縮處理的內(nèi)存管 理處理,所述GC處理,用于清除在主程序91的運(yùn)行進(jìn)程中成為不需要對(duì)象, 所述壓縮處理,用于在GC處理之后根據(jù)需要生成連續(xù)可用區(qū)域??臻e列表23, 用于記錄堆區(qū)域22內(nèi)可用區(qū)域的位置。
下面,參照?qǐng)D4對(duì)棧區(qū)域27的構(gòu)成進(jìn)行說明。圖4概念地表示棧區(qū)域27 中所記錄的函數(shù)幀。函數(shù)幀是記錄主程序91運(yùn)行所必須的函數(shù)(Java語言中稱 為方法)的區(qū)域。棧區(qū)域27填充配置有臨時(shí)記錄主程序91執(zhí)行函數(shù)的執(zhí)行結(jié) 果等的函數(shù)幀60 a 60c。執(zhí)行中的函數(shù)幀被稱為當(dāng)前幀,在圖4中,函數(shù)幀 60a即為當(dāng)前幀70。
主程序91的函數(shù),其執(zhí)行中的函數(shù),調(diào)用必須執(zhí)行的函數(shù)進(jìn)行處理。函數(shù) 調(diào)用函數(shù)時(shí),針對(duì)被確保在棧區(qū)域27內(nèi)的執(zhí)行中函數(shù)的函數(shù)幀,調(diào)用函數(shù)以填 充新函數(shù)幀的形式確保,執(zhí)行被調(diào)用的函數(shù)。并且,在被調(diào)用的函數(shù)執(zhí)行結(jié)束 之后,調(diào)用函數(shù)的函數(shù)幀即成為無用,因此廢棄被填充的不需要的函數(shù)幀。另 外,被填充入棧區(qū)域27中的函數(shù)幀,不需要其各自位置在數(shù)據(jù)記錄區(qū)域21中 的記錄區(qū)域內(nèi)鄰接。
下面,參照?qǐng)D5對(duì)堆區(qū)域22所記錄的對(duì)象的構(gòu)成進(jìn)行說明。圖5概念地表 示堆區(qū)域22中所記錄的對(duì)象30的其中一例。對(duì)象30由復(fù)制位置指針50的引 用地址lll,和數(shù)據(jù)單元121~123,和數(shù)據(jù)單元131構(gòu)成。數(shù)據(jù)單元121-123,用于記錄數(shù)值、文字等值,數(shù)據(jù)單元131用于記錄對(duì)象位置指針40的引用地址。 對(duì)象位置指針40,作為數(shù)據(jù)單元,用于引用其他的對(duì)象,數(shù)據(jù)單元121-123和對(duì)象位置指針40被主程序91所使用。復(fù)制位置指針50用于記錄對(duì)象30 的復(fù)制目標(biāo)的位置或復(fù)制源的位置。復(fù)制位置指針50的引用地址111記錄在對(duì) 像30的開頭,不被主程序91使用。當(dāng)對(duì)象未被復(fù)制時(shí),在復(fù)制位置指針50的 引用地址lll中,記錄一個(gè)表示"對(duì)象未被復(fù)制"意思的特殊的值。
下面,參照?qǐng)D6對(duì)基于內(nèi)存管理程序93的內(nèi)存管理處理進(jìn)行說明。移動(dòng)電 話1,在堆區(qū)域22的可用區(qū)域不足時(shí),通過執(zhí)行內(nèi)存管理程序93進(jìn)行內(nèi)存管理 處理。移動(dòng)電話l,在堆區(qū)域22的可用區(qū)域處于基準(zhǔn)值以下時(shí),判斷出堆區(qū)域 22的可用區(qū)域不足。另外,判斷堆區(qū)域22的可用區(qū)域不足的基準(zhǔn)值可以任意 設(shè)定。
首先,內(nèi)存管理程序93,清除堆區(qū)域22中不需要的對(duì)象,進(jìn)行生成可用區(qū) 域的GC處理之后(S1),將堆區(qū)域22中的可用區(qū)域登記在空閑列表23中(S2)。 另外,可以根據(jù)本發(fā)明人在專利第3530887號(hào)提出的發(fā)明,不損害主程序?qū)崟r(shí) 性地進(jìn)行GC處理,-f旦不限于此,也可以利用其他的能夠不損害主程序?qū)崟r(shí)性地 進(jìn)行GC處理的方法進(jìn)行GC處理。
并且,上述S2處理之后,為在堆區(qū)域22內(nèi)生成連續(xù)的可用區(qū)域執(zhí)行壓縮 處理(S3)。關(guān)于壓縮處理的詳情見后述。上述S3處理之后,內(nèi)存管理程序92, 進(jìn)行數(shù)據(jù)記錄區(qū)域21內(nèi)的對(duì)象位置指針更新處理(S4)。關(guān)于對(duì)象位置指針更 新處理的詳情見后述。上述S4處理之后,將堆區(qū)域22內(nèi)的限定范圍(參照?qǐng)D7 ) 作為連續(xù)的可用區(qū)域登記在空閑列表23中(S5:限定范圍可用化步驟),結(jié)束內(nèi) 存管理處理。
下面,參照?qǐng)D7對(duì)上述S3的壓縮處理進(jìn)行說明。首先,內(nèi)存管理程序93, 設(shè)定在堆區(qū)域22中生成連續(xù)的可用區(qū)域的限定范圍(Sll:范圍設(shè)定步驟),將 該限定范圍內(nèi)所含的對(duì)象(以下,稱為復(fù)制源對(duì)象)作為復(fù)制目標(biāo)的對(duì)象(以 下,稱為復(fù)制目標(biāo)對(duì)象)復(fù)制到該限定范圍之外的可用區(qū)域內(nèi)的同時(shí),將復(fù)制 源對(duì)象以及復(fù)制目標(biāo)對(duì)象的復(fù)制位置指針的引用地址設(shè)定成相互的對(duì)象的位置 (S12:對(duì)象復(fù)制步驟)。當(dāng)然,復(fù)制源對(duì)象以及復(fù)制目標(biāo)對(duì)象,作為對(duì)象的一種,為方便起見,如上稱呼。
并且,將堆區(qū)域22內(nèi)的引用復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址, 更新成由上述S12復(fù)制的復(fù)制目標(biāo)對(duì)象的位置(S13:第2指針更新步驟),結(jié) 束壓縮處理。另外,在本處理中,通過上述S11設(shè)定限定范圍后,執(zhí)行上述S12 的處理,但并不限于此,也可以在上述S12的處理中設(shè)定限定范圍。再者,由 上述Sll進(jìn)行的限定范圍設(shè)定處理,也可以是不含在內(nèi)存管理程序93中的獨(dú)立 的程序。當(dāng)上述Sll進(jìn)行的限定范圍設(shè)定處理為獨(dú)立的程序時(shí),該程序要在內(nèi) 存管理程序93執(zhí)行前執(zhí)行。
下面,參照?qǐng)D8對(duì)上述S4的對(duì)象位置指針更新處理進(jìn)^f亍說明。內(nèi)存管理程 序93記錄在數(shù)據(jù)記錄區(qū)域21中。將引用復(fù)制源對(duì)象位置的對(duì)象位置指針的引 用地址,更新成由對(duì)象復(fù)制步驟復(fù)制的復(fù)制目標(biāo)對(duì)象的位置(S21:第l指針更 新步驟),結(jié)束處理。對(duì)于數(shù)據(jù)記錄區(qū)域21內(nèi)的棧區(qū)域27的對(duì)象位置指針更新 處理,內(nèi)存管理程序93從上位向下位掃描棧區(qū)域27的函數(shù)幀。并且,以該順 序記錄到棧區(qū)域27中,將引用復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更 新成由對(duì)象復(fù)制步驟復(fù)制的復(fù)制目標(biāo)對(duì)象的位置(S21:第3指針更新步驟)。
下面,參照?qǐng)D9對(duì)內(nèi)存管理處理中的堆區(qū)域22的狀態(tài)進(jìn)行說明。圖9A-9C 概念地表示進(jìn)行內(nèi)存管理處理時(shí)的堆區(qū)域22的狀態(tài),圖9A相當(dāng)于進(jìn)行上述S11 的處理時(shí)的狀態(tài)、圖9B相當(dāng)于進(jìn)行上述S12的處理時(shí)的狀態(tài)、圖9C相當(dāng)于進(jìn) 行上述S13的處理時(shí)的狀態(tài)。
在圖9中,31~37、 34a、 35a表示對(duì)象、41 ~ 44表示對(duì)象位置指針、51 ~ 54表示復(fù)制位置指針、R表示限定范圍。另外,34和35為復(fù)制源對(duì)象,34a和 35a為復(fù)制目標(biāo)對(duì)象。
如圖9A所示,在限定范圍R中,包括復(fù)制源對(duì)象34、 35,對(duì)象31的對(duì)象 位置指針41引用復(fù)制源對(duì)象34的位置,對(duì)象37的對(duì)象位置指針42引用復(fù)制 源對(duì)象35的位置。對(duì)象32 ~ 36未保持有對(duì)象位置指針。另外,對(duì)象31-37的 對(duì)象未被復(fù)制,對(duì)象31 ~ 37的復(fù)制位置指針未引用其他對(duì)象的位置。
如果復(fù)制復(fù)制源對(duì)象34、 35,就如圖9B所示,在堆區(qū)域22內(nèi)的可用區(qū)域 中被復(fù)制為復(fù)制目標(biāo)對(duì)象34a、 35a。此時(shí),設(shè)定復(fù)制位置指針51以及復(fù)制位置
27指針53,使復(fù)制目標(biāo)對(duì)象34a的復(fù)制位置指針51引用復(fù)制源對(duì)象34的位置, 復(fù)制源對(duì)象34的復(fù)制位置指針53引用復(fù)制目標(biāo)對(duì)象34a的位置。另外,設(shè)定 復(fù)制位置指針52以及復(fù)制位置指針54,使復(fù)制目標(biāo)對(duì)象35a的復(fù)制位置指針 52引用復(fù)制源對(duì)象35的位置,復(fù)制源對(duì)象35的復(fù)制位置指針54引用復(fù)制目標(biāo) 對(duì)象35a的位置。
并且,掃描堆區(qū)域22,當(dāng)對(duì)象31~37的對(duì)象位置指針引用限定范圍R內(nèi)的 復(fù)制源對(duì)象34、 35時(shí),將該對(duì)象位置指針的引用地址更新成復(fù)制目標(biāo)對(duì)象34a、 35a的位置。在此,如9C所示,將對(duì)象31的對(duì)象位置指針43的引用地址 更新成復(fù)制目標(biāo)對(duì)象34a的位置,將對(duì)象37的對(duì)象位置指針44的引用地址更 新成復(fù)制目標(biāo)對(duì)象35a的位置。
下面,參照?qǐng)D10對(duì)在上述壓縮處理的上述S12以及S13的處理中,主程序 91向堆區(qū)域22中寫入數(shù)據(jù)時(shí)的處理進(jìn)行說明。首先,內(nèi)存管理程序93在主程 序91向堆區(qū)域22進(jìn)行數(shù)據(jù)的寫入處理時(shí),或者進(jìn)行寫入處理之后,判斷數(shù)據(jù) 的寫入地址的記錄區(qū)域是否為復(fù)制源對(duì)象的記錄區(qū)域或者復(fù)制目標(biāo)對(duì)象的記錄 區(qū)域中的一個(gè)(S31:復(fù)制判斷步驟)。并且,當(dāng)判斷數(shù)據(jù)的寫入地址為復(fù)制源 對(duì)象的記錄區(qū)域或者復(fù)制目標(biāo)對(duì)象的記錄區(qū)域中的一個(gè)時(shí)(S32中的是),內(nèi)存 管理程序93將主程序91寫入的數(shù)據(jù)同時(shí)寫入復(fù)制源對(duì)象的記錄區(qū)域以及復(fù)制 目標(biāo)對(duì)象的記錄區(qū)域(S33:復(fù)制寫入步驟)。
另一方面,通過上述S31,判斷數(shù)據(jù)的寫入地址既不是復(fù)制源對(duì)象的記錄區(qū) 域,也不是復(fù)制目標(biāo)對(duì)象的記錄區(qū)域時(shí)(S32中的否),不進(jìn)行上述S33的處理, 主程序91寫入凄t據(jù)(S34)。另外,上述S31至上述S33的處理也可以通過以下 處理實(shí)現(xiàn)主程序91向記錄在堆區(qū)域22中的對(duì)象的記錄區(qū)域進(jìn)行數(shù)據(jù)的寫入 處理之后,內(nèi)存管理程序93判斷主程序91是否只向復(fù)制源對(duì)象記錄區(qū)域或是 復(fù)制目標(biāo)對(duì)象記錄區(qū)域的任意一個(gè)寫入數(shù)據(jù)(相當(dāng)于上述S31),該判斷的結(jié)果 為存在數(shù)據(jù)寫入時(shí)(相當(dāng)于上述S32中的是),內(nèi)存管理程序93,向沒被寫入數(shù) 據(jù)的復(fù)制源對(duì)象記錄區(qū)域或復(fù)制目標(biāo)對(duì)象記錄區(qū)域中的任意一個(gè),寫入已被主 程序91寫入的數(shù)據(jù)(相當(dāng)于上述S33)。
下面,參考圖11對(duì)在上述壓縮處理的上述S13的處理中,主程序91向堆區(qū)域22寫入引用復(fù)制源對(duì)象位置的對(duì)象位置指針時(shí)的處理進(jìn)行說明。首先,內(nèi) 存管理程序93在主程序91向堆區(qū)域22進(jìn)行對(duì)象位置指針的寫入處理時(shí),或者 進(jìn)行寫入處理之后,判斷該對(duì)象位置指針的引用地址是否是復(fù)制源對(duì)象的位置 (S41)。并且,當(dāng)該對(duì)象位置指針的引用地址為堆區(qū)域22的復(fù)制源對(duì)象的位置 時(shí)(S42中的是),將該對(duì)象位置指針的引用地址變更成復(fù)制目標(biāo)對(duì)象的位置 (S43),按照上述圖10的處理順序?qū)懭胱兏艘玫刂返膶?duì)象位置指針(S44)。 此時(shí),變更了引用地址的對(duì)象位置指針,相當(dāng)于上述圖IO處理中的數(shù)據(jù)。
另一方面,通過上述S41,當(dāng)對(duì)像位置指針的引用地址不是復(fù)制源對(duì)象的位 置時(shí)(S42中的否),不進(jìn)行上述S43的處理,按照上述圖10的處理順序主程序 91將對(duì)象位置指針寫入堆區(qū)域22中(S44)。另外,圖IO以及圖ll的處理,也 可以由主程序91或者運(yùn)行環(huán)境程序92執(zhí)行。
如上所述,移動(dòng)電話1能夠在主程序91向復(fù)制源對(duì)象的記錄區(qū)域或者復(fù)制 目標(biāo)對(duì)象的記錄區(qū)域進(jìn)行數(shù)據(jù)的寫入處理時(shí),或者進(jìn)行寫入處理之后,將進(jìn)行 寫入處理的數(shù)據(jù),同時(shí)寫入復(fù)制源數(shù)據(jù)的記錄區(qū)域以及復(fù)制目標(biāo)數(shù)據(jù)的記錄區(qū) 域。因此,能夠保持復(fù)制源對(duì)象和復(fù)制目標(biāo)對(duì)象的數(shù)據(jù)一致性。因此,能夠中 斷對(duì)象的復(fù)制處理,執(zhí)行主程序91處理。
另外,可以在主程序91向堆區(qū)域22進(jìn)行引用復(fù)制源對(duì)象位置的對(duì)象位置 指針的寫入處理時(shí),或者進(jìn)行寫入處理之后,將對(duì)象位置指針的引用地址變更 成復(fù)制目標(biāo)對(duì)象的位置。因此,能夠防止對(duì)象位置指針的引用地址中沒有數(shù)據(jù), 所以就能夠防止主程序91發(fā)生處理異常。因此,移動(dòng)電話l,能夠中斷壓縮處 理,進(jìn)行主程序91的處理,能夠在不損害主程序91處理的實(shí)時(shí)性的前提下, 在堆區(qū)域22中生成連續(xù)的可用區(qū)域。
下面,參照?qǐng)D12對(duì)在針對(duì)棧區(qū)域27的上述對(duì)象位置指針更新處理的上述 S21的處理中,主程序91執(zhí)行函數(shù)時(shí)的處理進(jìn)行說明。首先,在內(nèi)存管理程序 93中斷對(duì)象位置指針的更新處理時(shí),內(nèi)存管理程序93在最后進(jìn)行對(duì)象位置指針 的更新處理的函數(shù)幀中,設(shè)定控制函數(shù)運(yùn)行的邊界(S51:邊界設(shè)定步驟)。并 且,主程序91執(zhí)行函數(shù),該函數(shù)執(zhí)行結(jié)束后廢棄函數(shù)幀時(shí)(S52),主程序91 判斷是否在該函數(shù)幀中設(shè)定有邊界(S53)。上述S53的結(jié)果為設(shè)定有邊界時(shí)(S54中的是),邊界通過內(nèi)存管理程序93, 重新開始棧區(qū)域27的對(duì)象位置指針的更新處理,內(nèi)存管理程序93,將位于該函 數(shù)幀下位的函數(shù)幀內(nèi)的引用復(fù)制源對(duì)象的對(duì)象位置指針的引用地址,更新成復(fù) 制目標(biāo)對(duì)象的位置(S55)。并且,在最后進(jìn)行對(duì)象位置指針的更新處理的函數(shù) 幀中,再次設(shè)定控制函數(shù)執(zhí)行的邊界,將當(dāng)前幀移動(dòng)至下位函數(shù)幀中,運(yùn)行當(dāng) 前幀移動(dòng)過的函數(shù)幀的函數(shù)(S56)。
另一方面,通過上述S53,當(dāng)函數(shù)幀中沒有設(shè)定邊界時(shí)(S54中的否),不 執(zhí)行上述S55的處理,執(zhí)4亍上述S56的處理。另外,也可以運(yùn)行環(huán)境程序進(jìn)行 上述邊界的設(shè)定處理,以及是否設(shè)定邊界的判斷處理。再有,由本處理進(jìn)行棧 區(qū)域27的對(duì)象位置指針進(jìn)行的更新時(shí),也可以針對(duì)除棧區(qū)域27以外的數(shù)據(jù)記 錄區(qū)域21,進(jìn)4亍基于上述圖8的對(duì)象位置指針的更新處理。
下面,參照?qǐng)D13對(duì)上述圖12所示的對(duì)象位置指針處理中的棧區(qū)域27的狀 態(tài)進(jìn)行說明。圖13是概念地表示棧區(qū)域27的圖,(a)相當(dāng)于上述S52的處理, (b)相當(dāng)于上述S56的處理。在圖13中,61 64表示的是函數(shù)幀,70表示的 是當(dāng)前幀,80表示的是邊界。
如圖13A所示,當(dāng)前幀70位于函數(shù)幀61中,此時(shí),函數(shù)幀61的對(duì)象位置 指針已經(jīng)被更新。當(dāng)該函數(shù)幀61的函數(shù)執(zhí)行結(jié)束時(shí),根據(jù)設(shè)定的邊界80,內(nèi)存 管理程序93進(jìn)行函數(shù)幀62的對(duì)象位置指針的更新處理。并且,在函數(shù)幀62的 對(duì)象位置指針更新后,如圖13B所示,內(nèi)存管理程序93,針對(duì)函數(shù)幀62設(shè)定邊 界80,將當(dāng)前幀70移動(dòng)到函數(shù)幀62中,主程序91執(zhí)行函數(shù)幀62的函數(shù)。另 外,在上述S55中,也可以更新多個(gè)函數(shù)幀的對(duì)象位置指針。
如上所述,移動(dòng)電話l,在最后進(jìn)行對(duì)象位置指針的更新處理的函數(shù)幀中設(shè) 定邊界,函數(shù)執(zhí)行結(jié)束后,根據(jù)邊界,重新開始對(duì)象位置指針的更新處理。因 此,能夠中斷對(duì)象位置指針的更新處理,執(zhí)行主程序要執(zhí)行的函數(shù),能夠在不 損害主程序91的函數(shù)處理的實(shí)時(shí)性的前提下,更新棧區(qū)域的對(duì)象位置指針。另 外,由于可以分開進(jìn)行棧區(qū)域27內(nèi)的對(duì)象位置指針的更新處理,所以不會(huì)損害 主程序91處理的實(shí)時(shí)性。
下面,參照?qǐng)D14對(duì)在上述壓縮處理的上述S13的處理中的2個(gè)對(duì)象位置指
30針的比較處理進(jìn)行說明。在此,主程序91,通過從堆區(qū)域22中進(jìn)行讀出處理等, 獲取到2個(gè)對(duì)象位置指針。首先,主程序91,比較2個(gè)對(duì)象位置指針(S61), 當(dāng)引用同一個(gè)對(duì)象時(shí)(S62中的是),判斷引用同一個(gè)對(duì)象(S65),結(jié)束同一判 斷處理。
另一方面,未引用同一個(gè)對(duì)象時(shí)(S62中的否),比較引用其中一個(gè)對(duì)象位 置指針的對(duì)象的復(fù)制位置指針和另一個(gè)對(duì)象位置指針(S63)。并且,當(dāng)這些指 針引用同一個(gè)對(duì)象時(shí)(S64中的是),進(jìn)行上述S65的判斷,結(jié)束同一判斷處理。 再有,在上述S63中,當(dāng)這些指針未引用同一個(gè)對(duì)象時(shí)(S64中的否),判斷引 用不同對(duì)象(S66),結(jié)束同一判斷處理。另外,上述圖14的處理也可以由運(yùn)行 環(huán)境程序92進(jìn)行。
上述S61的結(jié)果為,2個(gè)對(duì)象位置指針中的一個(gè)引用復(fù)制源對(duì)象的位置,另 一個(gè)引用復(fù)制目標(biāo)對(duì)象的位置時(shí)(S62中的是),內(nèi)存管理程序93,判斷2個(gè)對(duì) 象位置指針引用同一個(gè)對(duì)象(S63:同一判斷步驟),結(jié)束處理。另一方面,上 述S61的結(jié)杲為,2個(gè)對(duì)象位置指針中的一個(gè)未引用復(fù)制源對(duì)象的位置,另一個(gè) 未引用復(fù)制目標(biāo)對(duì)象的位置時(shí)(S62中的否),不進(jìn)^f亍上述S63的處理,處理結(jié) 束。因此,移動(dòng)電話l能夠判斷出2個(gè)對(duì)象位置指針是否引用同一個(gè)對(duì)象。
如上所述,本實(shí)施例提供的移動(dòng)電話1,能夠中斷在堆區(qū)域22內(nèi)生成連續(xù) 可用區(qū)域的處理,執(zhí)行主程序91處理,所以不會(huì)損害主程序91處理的實(shí)時(shí)性。 因此,開發(fā)人員,沒有必要如以前一樣,根據(jù)因移動(dòng)電話的每種機(jī)種而內(nèi)存部 18大小的不同等,設(shè)定強(qiáng)制執(zhí)行內(nèi)存管理程序9 3的時(shí)間,所以提高了開發(fā)效率, 縮短了開發(fā)時(shí)間。
另外,在主程序91向堆區(qū)域22寫入數(shù)據(jù)、對(duì)象位置指針時(shí),增加判斷寫 入地址的記錄區(qū)域和寫入指針的引用地址的處理。 一般情況下,主程序91對(duì)堆 區(qū)域22進(jìn)行的寫入處理的次數(shù)要少于讀取處理的次數(shù),所以與在從堆區(qū)域22 讀取對(duì)象時(shí)增加處理相比,主程序91運(yùn)行時(shí)的開銷要小得多。
另夕卜,在進(jìn)行了 GC處理之后,能夠設(shè)定限定范圍,所以可以摻入可用區(qū)域、 利用的數(shù)據(jù)量等各種因素設(shè)定限定范圍,所以能夠高效生成可用區(qū)域。
下面,參照?qǐng)D15對(duì)本發(fā)明第2實(shí)施例提供的移動(dòng)電話進(jìn)行說明。圖15表示的是本實(shí)施例的移動(dòng)電話1的構(gòu)成。移動(dòng)電話1除了內(nèi)存部18進(jìn)一步包括位 置記錄列表(對(duì)象位置記錄區(qū)域)24,以及記錄于堆區(qū)域22中的對(duì)象不包含復(fù) 制位置指針以外,和第1實(shí)施例所示的移動(dòng)電話1的構(gòu)造相同。位置記錄列表 24,相當(dāng)于第1實(shí)施例中的復(fù)制位置指針,是用于記錄堆區(qū)域22內(nèi)對(duì)象的位置 的列表。記錄于堆區(qū)域22中的對(duì)象,由數(shù)據(jù)單元和對(duì)象位置指針構(gòu)成。
下面,參照?qǐng)D16對(duì)位置記錄列表24進(jìn)行說明。圖16表示的是記錄著復(fù)制 源對(duì)象的位置以及復(fù)制目標(biāo)對(duì)象的位置的位置記錄列表24的一個(gè)事例。如圖16 所示,位置記錄列表24,將相鄰的多個(gè)復(fù)制源對(duì)象作為復(fù)制源對(duì)象群,將相鄰 的多個(gè)復(fù)制目標(biāo)對(duì)象作為復(fù)制目標(biāo)對(duì)象群,進(jìn)行歸納記錄,用表示堆區(qū)域22內(nèi) 地址的數(shù)值記錄復(fù)制源對(duì)象群的起點(diǎn)以及終點(diǎn)的位置,和與該復(fù)制源對(duì)象群對(duì) 應(yīng)的復(fù)制目標(biāo)對(duì)象群的起點(diǎn)以及終點(diǎn)的位置。因此,當(dāng)獲取復(fù)制源對(duì)象的位置、 復(fù)制目標(biāo)對(duì)象的位置、復(fù)制源對(duì)象的記錄區(qū)域、或者復(fù)制目標(biāo)對(duì)象的記錄區(qū)域 時(shí),內(nèi)存管理程序93要參照位置記錄列表24。
下面,參照?qǐng)D17對(duì)移動(dòng)電話1的壓縮處理進(jìn)行說明。首先,內(nèi)存管理程序 93,設(shè)定在堆區(qū)域22中生成連續(xù)可用區(qū)域的限定范圍(S71),將包括在該限定 范圍內(nèi)的復(fù)制源對(duì)象作為復(fù)制目標(biāo)對(duì)象復(fù)制到該限定范圍外的可用區(qū)域的同 時(shí),將復(fù)制源對(duì)象的位置以及復(fù)制目標(biāo)對(duì)象的位置記錄到位置記錄列表24中 (S72)。
并且,內(nèi)存管理程序93,參考位置記錄列表24,將堆區(qū)域22內(nèi)引用復(fù)制 源對(duì)象位置的對(duì)象位置指針的引用地址,更新成由上述S72復(fù)制的復(fù)制目標(biāo)對(duì) 象的位置(S73),結(jié)束堆區(qū)域22的壓縮處理。
如上所述,本實(shí)施例提供的移動(dòng)電話1,能夠得到與第1實(shí)施例提供的移動(dòng) 電話相同的效果。另外,能夠參考位置記錄列表24,獲取復(fù)制源對(duì)象的位置以 及復(fù)制目標(biāo)對(duì)象的位置、復(fù)制源對(duì)象的記錄區(qū)域以及復(fù)制目標(biāo)對(duì)象的記錄區(qū)域, 所以對(duì)象不需要有復(fù)制位置指針。因此,提高了堆區(qū)域22的使用效率。
下面,參照?qǐng)D18以及圖19對(duì)本發(fā)明第3實(shí)施例提供的移動(dòng)電話進(jìn)行說明。 圖18表示的是本實(shí)施例的移動(dòng)電話1的構(gòu)成,圖19表示的是堆區(qū)域25內(nèi)的數(shù) 據(jù)記錄區(qū)域26的分配狀態(tài)。移動(dòng)電話l,除數(shù)據(jù)記錄區(qū)域26的一部分被分配在堆區(qū)域25中以外,和第1實(shí)施例所示的移動(dòng)電話1的構(gòu)成一樣。棧區(qū)域27, 如圖19所示,未被分配到堆區(qū)域25內(nèi)。
移動(dòng)電話l,可以將堆區(qū)域25內(nèi)的數(shù)據(jù)記錄區(qū)域26以外的區(qū)域,作為第1 實(shí)施例沖是供的移動(dòng)電話的堆區(qū)域。內(nèi)存管理程序93,對(duì)于在堆區(qū)域25內(nèi)的所述 數(shù)據(jù)記錄區(qū)域26被分配的區(qū)域也能夠設(shè)定限定范圍。
下面,參照?qǐng)D20對(duì)由內(nèi)存管理程序93進(jìn)行的限定范圍內(nèi)的數(shù)據(jù)記錄區(qū)域 26的壓縮處理進(jìn)行說明。首先,內(nèi)存管理程序93將記錄在限定范圍內(nèi)的數(shù)據(jù)記 錄區(qū)域26中的,引用復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成復(fù)制 目標(biāo)對(duì)象的位置的同時(shí),將限定范圍內(nèi)的數(shù)據(jù)記錄區(qū)域26移動(dòng)至堆區(qū)域25內(nèi) 的可用區(qū)域中(S81)。
并且,將記錄于除限定范圍以及棧區(qū)域27以外的數(shù)據(jù)記錄區(qū)域26中的, 引用復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成復(fù)制目標(biāo)對(duì)象的位置 (S82),結(jié)束處理。因此,對(duì)于被分配到堆區(qū)域25中的數(shù)據(jù)記錄區(qū)域26也能 夠進(jìn)行壓縮處理,所以能夠高效地在堆區(qū)域25中生成連續(xù)的可用區(qū)域。
如上所述,通過本實(shí)施例提供的移動(dòng)電話1,即使數(shù)據(jù)記錄區(qū)域26的一部 分被分配到堆區(qū)域25中的情況,也能取得和第1實(shí)施例的移動(dòng)電話相同的效果。 另外,在此,表示了數(shù)據(jù)記錄區(qū)域26的一部分被分配到堆區(qū)域25中的情況, 但也可以除了棧區(qū)域27以外的數(shù)據(jù)記錄區(qū)域26全部被分配到堆區(qū)域25中。即 使在此情況下,移動(dòng)電話1也能取得和第1實(shí)施例的移動(dòng)電話相同的效果。
另外,本實(shí)施例提供的移動(dòng)電話1的內(nèi)存部18,進(jìn)一步包括記錄對(duì)象位置 用的位置記錄列表24,記錄于堆區(qū)域25中的對(duì)象沒有復(fù)制位置指針時(shí),本實(shí)施 例提供的移動(dòng)電話1,也能夠取得和第2實(shí)施例提供的移動(dòng)電話相同的效果。
下面,參照?qǐng)D21對(duì)本發(fā)明第4實(shí)施例提供的移動(dòng)電話進(jìn)行說明。圖21表 示的是堆區(qū)域25內(nèi)的數(shù)據(jù)記錄區(qū)域26的分配狀態(tài)。移動(dòng)電話l,除了數(shù)據(jù)記 錄區(qū)域26的一部分^L分配到堆區(qū)域25內(nèi)的同時(shí),棧區(qū)域27也#1分配到堆區(qū)域 25內(nèi)以外,和第3實(shí)施例所示的移動(dòng)電話1的構(gòu)成相同。
下面,參照?qǐng)D22對(duì)由內(nèi)存管理程序93進(jìn)行的限定范圍內(nèi)的數(shù)據(jù)記錄區(qū)域 26的壓縮處理進(jìn)行說明。首先,內(nèi)存管理程序93,將記錄在除限定范圍內(nèi)的棧區(qū)域27以外的數(shù)據(jù)記錄區(qū)域26中的,引用復(fù)制源對(duì)象位置的對(duì)象位置指針的 引用地址,更新成復(fù)制目標(biāo)對(duì)象的位置的同時(shí),將分配到限定范圍內(nèi)的除棧區(qū) 域27以外的數(shù)據(jù)記錄區(qū)域26,移動(dòng)至堆區(qū)域25內(nèi)的可用區(qū)域中(S91)。
并且,將記錄在除限定范圍外的棧區(qū)域27以外的數(shù)據(jù)記錄區(qū)域26中的引 用復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成復(fù)制目標(biāo)對(duì)象的位置 (S92),結(jié)束處理。因此,對(duì)于被分配到堆區(qū)域25中的除棧區(qū)域27以外的數(shù) 據(jù)記錄區(qū)域26也能夠進(jìn)行壓縮處理,所以可以高效地在堆區(qū)域25內(nèi)生成連續(xù) 的可用區(qū)域。
下面,參照?qǐng)D23對(duì)由內(nèi)存管理程序93進(jìn)行的限定范圍內(nèi)的棧區(qū)域27的壓 縮處理進(jìn)行說明。首先,內(nèi)存管理程序93決定限定范圍內(nèi)的函數(shù)幀的移動(dòng)地址
(5101) ,從上位向下位掃描被分配到堆區(qū)域25內(nèi)的棧區(qū)域27內(nèi)的函數(shù)幀
(5102) 。并且,將記錄在限定范圍內(nèi)的函數(shù)幀中的引用復(fù)制源對(duì)象位置的對(duì)象 位置指針的引用地址,更新成復(fù)制目標(biāo)對(duì)象的位置的同時(shí),將限定范圍內(nèi)的函 數(shù)幀移動(dòng)到堆區(qū)域25內(nèi)的可用區(qū)域中(S103)。
并且,將記錄在限定范圍外的函數(shù)幀中的引用復(fù)制源對(duì)象位置的對(duì)象位置 指針的引用地址,更新成復(fù)制目標(biāo)對(duì)象的位置(S104),結(jié)束處理。因此,對(duì)于 堆區(qū)域25內(nèi)的棧區(qū)域27也能夠進(jìn)行壓縮處理,所以可以高效地在堆區(qū)域25中 生成連續(xù)的可用區(qū)域。
如上所述,本實(shí)施例提供的移動(dòng)電話1,即使棧區(qū)域27被分配到堆區(qū)域25 內(nèi)的情況,也能夠取得和第3實(shí)施例的移動(dòng)電話同樣的效果。另外,在此,表 示的是數(shù)據(jù)記錄區(qū)域26的一部分被分配到堆區(qū)域26中的情況,但也可以數(shù)據(jù) 記錄區(qū)域26全部被分配到堆區(qū)域26中。即使在此情況下,移動(dòng)電話1也能夠 取得和第3實(shí)施例的移動(dòng)電話同樣的效果。再者,即使棧區(qū)域27的一部分被分 配到堆區(qū)域25以外的情況也可以,即使在此情況下,移動(dòng)電話l,也能夠得到 和第3實(shí)施例的移動(dòng)電話相同的效果。
下面,針對(duì)在計(jì)算機(jī)上執(zhí)行內(nèi)存管理程序93時(shí)主程序最大停止時(shí)間的實(shí)驗(yàn) 結(jié)果進(jìn)行說明。本實(shí)驗(yàn)所使用的計(jì)算機(jī)的性能為CPU為[Xeon 3. 2GHz]、內(nèi)存 為1GB。實(shí)驗(yàn)方法是在該計(jì)算機(jī)上安裝堆區(qū)域?yàn)?MB的Java運(yùn)行環(huán)境,通過在JAKLD (參考Java Application Kumikomi Lisp Driver: LISP處理系信息 處理協(xié)會(huì)論文志程序編制44巻pl-16)上執(zhí)行Boyer基準(zhǔn)測試,測定基于內(nèi) 存管理程序93的主程序的最大停止時(shí)間。另外,內(nèi)存管理程序93的GC處理, 使用本發(fā)明人在專利3530887號(hào)中提出的處理。再者,在本實(shí)驗(yàn)中,數(shù)據(jù)記錄 區(qū)域以及棧區(qū)域被分配到堆區(qū)域內(nèi)。
首先,現(xiàn)有的所有進(jìn)行壓縮處理的方法,主程序的最大停止時(shí)間為9. 5ms。 另一方面,通過基于本發(fā)明的內(nèi)存管理程序93的主程序的最大停止時(shí)間為 0. 7ms。
另外,本發(fā)明并不限于上述各實(shí)施例的構(gòu)成,在不變更本發(fā)明宗旨的范圍 內(nèi)可以有各種變形。例如,在上述各個(gè)實(shí)施例中,表示了將本發(fā)明的內(nèi)存管理 裝置用在移動(dòng)電話中,但并不限于此,例如也可以是用在計(jì)算機(jī)中。另外,在 上述各實(shí)施例提供的移動(dòng)電話1中,表示了在閃存17中記錄內(nèi)存管理程序93 的例子,但并不限于此,也可以在其他的存儲(chǔ)i某體中記錄內(nèi)存管理程序93。再 者,也可以利用通信部15,從因特網(wǎng)上下載內(nèi)存管理程序93,在移動(dòng)電話中運(yùn) 行。另外,也可以將CPUll中的寄存器作為數(shù)據(jù)區(qū)域,內(nèi)存管理程序93對(duì)寄存 器進(jìn)行處理。
另外,上述各實(shí)施例的內(nèi)存管理程序93,將記錄于數(shù)據(jù)記錄區(qū)域中的,引 用復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成復(fù)制目標(biāo)對(duì)象的位置, 在該更新處理中,還可以進(jìn)一步執(zhí)行以下兩種變更處理主程序91將引用復(fù)制 源對(duì)象位置的對(duì)象位置指針寫入數(shù)據(jù)記錄區(qū)域中時(shí),或者進(jìn)行寫入處理之后, 將對(duì)象位置指針的引用地址變更成復(fù)制目標(biāo)對(duì)象的位置的處理,和主程序91將
引用復(fù)制源對(duì)象位置的對(duì)象位置指針寫入堆區(qū)域中時(shí),或者進(jìn)行寫入處理之后, 將對(duì)象位置指針的引用地址變更成復(fù)制目標(biāo)對(duì)象的位置的處理。
本發(fā)明是基于日本國專利申請(qǐng)2007-026111號(hào),其內(nèi)容,參考上述專利申 請(qǐng)的說明書以及附圖,其結(jié)果應(yīng)該結(jié)合在本發(fā)明中。
另外,本發(fā)明根據(jù)參考附圖的實(shí)施例進(jìn)行充分地描述,但也會(huì)出現(xiàn)各種變 更、變形,對(duì)本領(lǐng)域普通技術(shù)人員來講顯而易見。因此,那樣的變更以及變形, 并沒有脫離本發(fā)明的范圍,應(yīng)該理解為包含在本發(fā)明的范圍中。
權(quán)利要求
1、一種內(nèi)存管理方法,在內(nèi)存中設(shè)置有數(shù)據(jù)記錄區(qū)域和堆區(qū)域,所述數(shù)據(jù)記錄區(qū)域,用于記錄動(dòng)態(tài)生成數(shù)據(jù)的程序(以下,稱為主程序)運(yùn)行等所利用的數(shù)據(jù),所述堆區(qū)域,用于記錄包含主程序運(yùn)行中所使用的數(shù)據(jù)單元的數(shù)據(jù)(以下,稱為對(duì)象);清除因主程序的運(yùn)行而成為不需要的所述堆區(qū)域的對(duì)象,在該堆區(qū)域中生成可用的空閑區(qū)域(以下,稱為可用區(qū)域)的同時(shí),為在該堆區(qū)域中生成連續(xù)的可用區(qū)域,移動(dòng)記錄于該堆區(qū)域中的對(duì)象;其特征在于,所述對(duì)象,進(jìn)一步包括復(fù)制位置指針,所述復(fù)制位置指針用于記錄所述對(duì)象的復(fù)制目標(biāo)的位置或者復(fù)制源的位置;,在所述數(shù)據(jù)記錄區(qū)域中記錄引用所述對(duì)象位置的對(duì)象位置指針;所述內(nèi)存管理方法,包括范圍設(shè)定步驟,設(shè)定在所述堆區(qū)域中生成連續(xù)可用區(qū)域的限定范圍;對(duì)象復(fù)制步驟,將包含在所述限定范圍內(nèi)的復(fù)制源對(duì)象作為復(fù)制目標(biāo)對(duì)象復(fù)制到該限定范圍外的可用區(qū)域的同時(shí),將該復(fù)制源對(duì)象以及該復(fù)制目標(biāo)對(duì)象的復(fù)制位置指針的引用地址設(shè)定成相互的對(duì)象的位置;第1指針更新步驟,將記錄在所述數(shù)據(jù)記錄區(qū)域中的,引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成由所述對(duì)象復(fù)制步驟復(fù)制的復(fù)制目標(biāo)對(duì)象的位置;限定范圍可用化步驟,將所述限定范圍區(qū)域作為可用區(qū)域;復(fù)制判斷步驟,在執(zhí)行所述對(duì)象復(fù)制步驟的過程中,所述主程序向記錄在所述堆區(qū)域中的對(duì)象的記錄區(qū)域執(zhí)行數(shù)據(jù)的寫入處理時(shí),或者執(zhí)行寫入處理之后,判斷數(shù)據(jù)寫入地址的記錄區(qū)域,是否是所述復(fù)制源對(duì)象的記錄區(qū)域或者所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域中的一個(gè);復(fù)制寫入步驟,通過所述復(fù)制判斷步驟判斷寫入地址是所述復(fù)制源對(duì)象的記錄區(qū)域或者所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域中的一個(gè)時(shí),將所述主程序執(zhí)行寫入處理的數(shù)據(jù),同時(shí)寫入所述復(fù)制源對(duì)象的記錄區(qū)域以及所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域。
2、 一種內(nèi)存管理方法,在內(nèi)存中設(shè)置有數(shù)據(jù)記錄區(qū)域和堆區(qū)域,所述數(shù)據(jù)記錄區(qū)域,用于記錄動(dòng) 態(tài)生成數(shù)據(jù)的程序(以下,稱為主程序)運(yùn)行等所利用的數(shù)據(jù),所述堆區(qū)域,用于記錄包含主程序運(yùn)行中所使用的數(shù)據(jù)單元的數(shù)據(jù)(以下,稱為對(duì)象);清除因主程序的運(yùn)行而成為不需要的所述堆區(qū)域的對(duì)象,在該堆區(qū)域中生成可用的空閑區(qū)域(以下,稱為可用區(qū)域)的同時(shí),為在該堆區(qū)域中生成連續(xù)的可用區(qū)域,移動(dòng)記錄于該堆區(qū)域中的對(duì)象; 其特征在于,在所述數(shù)據(jù)記錄區(qū)域中記錄引用所述對(duì)象位置的對(duì)象位置指針; 在所述內(nèi)存中,進(jìn)一步設(shè)置有記錄對(duì)象位置的對(duì)象位置記錄區(qū)域; 所述內(nèi)存管理方法,包括范圍設(shè)定步驟,設(shè)定在所述堆區(qū)域中生成連續(xù)可用區(qū)域的限定范圍; 對(duì)象復(fù)制步驟,將包含在所述限定范圍內(nèi)的復(fù)制源對(duì)象作為復(fù)制目標(biāo)對(duì)象復(fù)制到該限定范圍外的可用區(qū)域的同時(shí),將該復(fù)制源對(duì)象的位置以及該復(fù)制目標(biāo)對(duì)象的位置記錄到所述對(duì)象位置記錄區(qū)域;第1指針更新步驟,將記錄在所述數(shù)據(jù)記錄區(qū)域中的,引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成由所述對(duì)象復(fù)制步驟復(fù)制的復(fù)制目標(biāo)對(duì)象的位置;限定范圍可用化步驟,將所述限定范圍區(qū)域作為可用區(qū)域; 復(fù)制判斷步驟,在執(zhí)行所述對(duì)象復(fù)制步驟的過程中,所述主程序向記錄在 所述堆區(qū)域中的對(duì)象的記錄區(qū)域執(zhí)行數(shù)據(jù)的寫入處理時(shí),或者執(zhí)行寫入處理之 后,判斷數(shù)據(jù)寫入地址的記錄區(qū)域,是否是所述復(fù)制源對(duì)象的記錄區(qū)域或者所 述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域中的一個(gè);復(fù)制寫入步驟,通過所述復(fù)制判斷步驟判斷寫入地址是所述復(fù)制源對(duì)象的 記錄區(qū)域或者所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域中的一個(gè)時(shí),將所述主程序執(zhí)行寫 入處理的數(shù)據(jù),同時(shí)寫入所述復(fù)制源對(duì)象的記錄區(qū)域以及所述復(fù)制目標(biāo)對(duì)象的^己錄區(qū):fe戈。
3、 根據(jù)權(quán)利要求1或2所述的內(nèi)存管理方法,其特征在于,所述對(duì)象,進(jìn)一步包括作為所述數(shù)據(jù)單元的所述對(duì)象位置指針; 所述內(nèi)存管理方法,進(jìn)一步包括第2指針更新步驟和引用地址變更步驟和同一判斷步驟;所述第2指針更新步驟,將引用所述復(fù)制源對(duì)象位置的所述堆區(qū)域內(nèi)的對(duì) 象位置指針的引用地址,更新成由所述對(duì)象復(fù)制步驟復(fù)制的復(fù)制目標(biāo)對(duì)象的位置;所述引用地址變更步驟,在所述第2指針更新步驟執(zhí)行過程中,所述主程 序向在所述堆區(qū)域執(zhí)行引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的寫入處理 時(shí),或者執(zhí)行寫入處理之后,將該對(duì)象位置指針的引用地址變更成所述復(fù)制目 標(biāo)對(duì)象的位置;所述同一判斷步驟,在所述第2指針更新步驟執(zhí)行過程中,所述主程序檢 查2個(gè)對(duì)象位置指針的引用地址是否是同一對(duì)象位置時(shí),當(dāng)該2個(gè)對(duì)象位置指 針中的一個(gè)引用所述復(fù)制源對(duì)象的位置,另 一個(gè)引用所述復(fù)制目標(biāo)對(duì)象的位置 時(shí),判斷引用同一個(gè)對(duì)象;,所述復(fù)制判斷步驟,在所述對(duì)象復(fù)制步驟、或者所述第2指針更新步驟執(zhí) 行過程中,所述主程序向記錄于所述堆區(qū)域中的對(duì)象的記錄區(qū)域執(zhí)行數(shù)據(jù)的寫 入處理時(shí),或者執(zhí)行寫 入處理之后,判斷數(shù)據(jù)寫入地址的記錄區(qū)域,是否是所 述復(fù)制源對(duì)象的記錄區(qū)域或者是所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域中的一個(gè)。
4、根據(jù)權(quán)利要求1至3任意一個(gè)所述的內(nèi)存管理方法,其特征在于,在所述數(shù)據(jù)記錄區(qū)域中,設(shè)置有棧區(qū)域,所述棧區(qū)域用于累積配置臨時(shí)記 錄所述主程序運(yùn)行的函數(shù)的運(yùn)行結(jié)果等的函數(shù)幀;所述內(nèi)存管理方法,進(jìn)一步包括第3指針更新步驟和邊界設(shè)定步驟;所述第3指針更新步驟,從上位向下位掃描所述棧區(qū)域內(nèi)的所述函數(shù)幀, 將以該順序記錄于該棧區(qū)域中的,引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的 引用地址,更新成由所述對(duì)象復(fù)制步驟復(fù)制的復(fù)制目標(biāo)對(duì)象的位置;所述邊界設(shè)定步驟,在中斷所述第3指針更新步驟所做的對(duì)象位置指針的 更新處理時(shí),在最后執(zhí)行該第3指針更新步驟處理的所述函數(shù)幀中設(shè)定控制函 數(shù)運(yùn)行的邊界;所述第1指針更新步驟,將記錄于所述棧區(qū)域以外的所述數(shù)據(jù)記錄區(qū)域中 的,引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置;所述邊界,在函數(shù)運(yùn)行結(jié)束之后,重新開始所述第3指針更新步驟執(zhí)行的處理。
5、 根據(jù)權(quán)利要求1至3任意一個(gè)所述的內(nèi)存管理方法,其特征在于, 將所述數(shù)據(jù)記錄區(qū)域的一部分或者全部分配進(jìn)所述堆區(qū)域內(nèi),將該堆區(qū)域內(nèi)的該數(shù)據(jù)記錄區(qū)域外的區(qū)域,作為權(quán)利要求1至3中任意一個(gè)所述的堆區(qū)域; 所述范圍設(shè)定步驟,能夠針對(duì)所述堆區(qū)域內(nèi)的所述數(shù)據(jù)記錄區(qū)域被分配的區(qū)域設(shè)定限定范圍;所述第1指針更新步驟,將記錄于所述限定范圍內(nèi)的所述數(shù)據(jù)記錄區(qū)域中的,引用所述復(fù)制源對(duì)象 位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置的同時(shí),將 該限定范圍內(nèi)的所述數(shù)據(jù)記錄區(qū)域,移動(dòng)至所述堆區(qū)域內(nèi)的可用區(qū)域中,將記錄于所述限定范圍外的所述lt據(jù)記錄區(qū)域中的,引用所述復(fù)制源對(duì)象 位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置。
6、 根據(jù)權(quán)利要求4所述的內(nèi)存管理方法,其特征在于, 將除所述棧區(qū)域以外的所述數(shù)據(jù)記錄區(qū)域的一部分或者全部分配進(jìn)所述堆區(qū)域內(nèi),將該堆區(qū)域內(nèi)的該數(shù)據(jù)記錄區(qū)域以外的區(qū)域,作為權(quán)利要求1至3任 意一個(gè)所述的堆區(qū)域;所述范圍設(shè)定步驟,能夠針對(duì)所述堆區(qū)域內(nèi)的所述數(shù)據(jù)記錄區(qū)域被分配的 區(qū)域設(shè)定限定范圍;所述第l指針更新步驟,將記錄于所述限定范圍內(nèi)的所述數(shù)據(jù)記錄區(qū)域中的,引用所述復(fù)制源對(duì)象 位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置的同時(shí),將 該限定范圍內(nèi)的所述數(shù)據(jù)記錄區(qū)域,移動(dòng)至所述堆區(qū)域內(nèi)的可用區(qū)域,將記錄于所述限定范圍以及所述棧區(qū)域以外的所述數(shù)據(jù)記錄區(qū)域中的,引 用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置。
7、 根據(jù)權(quán)利要求4所述的內(nèi)存管理方法,其特征在于,將包含所述棧區(qū)域的所述數(shù)據(jù)記錄區(qū)域的 一部分或者全部分配進(jìn)所述堆區(qū)域內(nèi),將該堆區(qū)域內(nèi)的該數(shù)據(jù)記錄區(qū)域外的區(qū)域,作為權(quán)利要求1至權(quán)利要求3 任意一個(gè)所述的堆區(qū)域;所述范圍設(shè)定步驟,能夠針對(duì)所述堆區(qū)域內(nèi)的所述數(shù)據(jù)記錄區(qū)域^^皮分配的 區(qū)域設(shè)定限定范圍;,所述第1指針更新步驟,將記錄于除所述限定范圍內(nèi)的所述棧區(qū)域以外的所述數(shù)據(jù)記錄區(qū)域中的, 引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì) 象的位置的同時(shí),將分配進(jìn)該限定范圍內(nèi)的,除所述棧區(qū)域以外的該數(shù)據(jù)記錄 區(qū)域,移動(dòng)至所述堆區(qū)域內(nèi)的可用區(qū)域中,將記錄于所述限定范圍外的除所述棧區(qū)域以外的所述數(shù)據(jù)記錄區(qū)域中的, 引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì) 象的位置;所述第3指針更新步驟,從上位向下位掃描分配進(jìn)所述堆區(qū)域內(nèi)的所述棧區(qū)域內(nèi)的所述函凄丈幀,將 記錄于所述限定范圍內(nèi)的所述函數(shù)幀中的,引用所述復(fù)制源對(duì)象位置的對(duì)象位 置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置的同時(shí),將該限定范圍內(nèi) 的該函數(shù)幀,移動(dòng)至該堆區(qū)域內(nèi)的可用區(qū)域,將記錄于所述限定范圍外的所述函數(shù)幀中的,引用所述復(fù)制源對(duì)象位置的 對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置;所述邊界設(shè)定步驟,在中斷所述第3指針更新處理,運(yùn)行所述主程序時(shí), 將所述邊界,設(shè)定在最后執(zhí)行該第3指針更新處理的所述函數(shù)幀中。
8、 一種內(nèi)存管理裝置,在內(nèi)存中設(shè)置有數(shù)據(jù)記錄區(qū)域和堆區(qū)域,所述數(shù)據(jù)記錄區(qū)域,用于記錄動(dòng) 態(tài)生成數(shù)據(jù)的程序(以下,稱為主程序)運(yùn)行等所利用的數(shù)據(jù),所述堆區(qū)域, 用于記錄包含主程序運(yùn)行中所使用的數(shù)據(jù)單元的數(shù)據(jù)(以下,稱為對(duì)象);清除因主程序的運(yùn)行而成為不需要的所述堆區(qū)域的對(duì)象,在該堆區(qū)域中生 成可用的空閑區(qū)域(以下,稱為可用區(qū)域)的同時(shí),為在該堆區(qū)域中生成連續(xù)的可用區(qū)域,移動(dòng)記錄于該堆區(qū)域中的對(duì)象;其特征在于,所述對(duì)象,進(jìn)一步包括復(fù)制位置指針,所述復(fù)制位置指針用于記錄所述對(duì)象的復(fù)制目標(biāo)的位置或者復(fù)制源的位置;在所述數(shù)據(jù)記錄區(qū)域中記錄引用所述對(duì)象位置的對(duì)象位置指針;, 所述內(nèi)存管理裝置,包括范圍設(shè)定單元,用于設(shè)定在所述堆區(qū)域中生成連續(xù)可用區(qū)域的限定范圍;對(duì) 象復(fù)制單元,用于將包含在所述限定范圍內(nèi)的復(fù)制源對(duì)象作為復(fù)制目標(biāo) 對(duì)象復(fù)制到該限定范圍外的可用區(qū)域的同時(shí),將該復(fù)制源對(duì)象以及該復(fù)制目標(biāo) 對(duì)象的復(fù)制位置指針的引用地址設(shè)定成相互的對(duì)象的位置;第1指針更新單元,用于將記錄在所述數(shù)據(jù)記錄區(qū)域中的,引用所述復(fù)制 源對(duì)象位置的對(duì)象位置指針的引用地址,更新成由所述對(duì)象復(fù)制單元復(fù)制的復(fù) 制目標(biāo)對(duì)象的位置;限定范圍可用化單元,用于將所述限定范圍區(qū)域作為可用區(qū)域;復(fù)制判斷單元,用于在執(zhí)行所述對(duì)象復(fù)制單元的過程中,所述主程序向記 錄在所述堆區(qū)域中的對(duì)象的記錄區(qū)域執(zhí)行數(shù)據(jù)的寫入處理時(shí),或者執(zhí)行寫入處 理之后,判斷數(shù)據(jù)寫入地址的記錄區(qū)域,是否是所述復(fù)制源對(duì)象的記錄區(qū)域或 者所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域中的一個(gè);復(fù)制寫入單元,用于通過所述復(fù)制判斷單元判斷寫入地址是所述復(fù)制源對(duì) 象的記錄區(qū)域或者所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域中的一個(gè)時(shí),將所述主程序執(zhí) 行寫入處理的數(shù)據(jù),同時(shí)寫入所述復(fù)制源對(duì)象的記錄區(qū)域以及所述復(fù)制目標(biāo)對(duì) 象的記錄區(qū)域。
9、 一種內(nèi)存管理裝置,在內(nèi)存中設(shè)置有數(shù)據(jù)記錄區(qū)域和堆區(qū)域,所述數(shù)據(jù)記錄區(qū)域,用于記錄動(dòng) 態(tài)生成數(shù)據(jù)的程序(以下,稱為主程序)運(yùn)行等所利用的數(shù)據(jù),所述堆區(qū)域, 用于記錄包含主程序運(yùn)行中所使用的數(shù)據(jù)單元的數(shù)據(jù)(以下,稱為對(duì)象);清除因主程序的運(yùn)行而成為不需要的所述堆區(qū)域的對(duì)象,在該堆區(qū)域中生 成可用的空閑區(qū)域(以下,稱為可用區(qū)域)的同時(shí),為在該堆區(qū)域中生成連續(xù)的可用區(qū)域,移動(dòng)記錄于該堆區(qū)域中的對(duì)象; 其特征在于,在所述數(shù)據(jù)記錄區(qū)域中記錄引用所述對(duì)象位置的對(duì)象位置指針; 在所述內(nèi)存中,進(jìn)一步設(shè)置有記錄對(duì)象位置的對(duì)象位置記錄區(qū)域; 所述內(nèi)存管理裝置,包括范圍設(shè)定單元,用于設(shè)定在所述堆區(qū)域中生成連續(xù)可用區(qū)域的限定范圍; 對(duì)象復(fù)制單元,用于將包含在所述限定范圍內(nèi)的復(fù)制源對(duì)象作為復(fù)制目標(biāo)對(duì)象復(fù)制到該限定范圍外的可用區(qū)域的同時(shí),將該復(fù)制源對(duì)象的位置以及該復(fù)制目標(biāo)對(duì)象的位置記錄到所述對(duì)象位置記錄區(qū)域;第1指針更新單元,用于將記錄在所述數(shù)據(jù)記錄區(qū)域中的,引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成由所述對(duì)象復(fù)制單元復(fù)制的復(fù)制目標(biāo)對(duì)象的位置;限定范圍可用化單元,用于將所述限定范圍區(qū)域作為可用區(qū)域; 復(fù)制判斷單元,用于在執(zhí)行所述對(duì)象復(fù)制單元的過程中,所述主程序向記錄在所述堆區(qū)域中的對(duì)象的記錄區(qū)域執(zhí)行數(shù)據(jù)的寫入處理時(shí),或者執(zhí)行寫入處理之后,判斷數(shù)據(jù)寫入地址的記錄區(qū)域,是否是所述復(fù)制源對(duì)象的記錄區(qū)域或者所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域中的一個(gè);復(fù)制寫入單元,用于通過所述復(fù)制判斷單元判斷寫入地址是所述復(fù)制源對(duì)象的記錄區(qū)域或者所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域中的一個(gè)時(shí),將所述主程序執(zhí)行寫入處理的數(shù)據(jù),同時(shí)寫入所述復(fù)制源對(duì)象的記錄區(qū)域以及所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域。
10、根據(jù)權(quán)利要求8或9所述的內(nèi)存管理裝置,其特征在于, 所述對(duì)象,進(jìn)一步包括作為所述數(shù)據(jù)單元的所述對(duì)象位置指針; 所述內(nèi)存管理裝置,進(jìn)一步包括第2指針更新單元和引用地址變更單元和 同一判斷單元;所述第2指針更新單元,用于將引用所述復(fù)制源對(duì)象位置的所述堆區(qū)域內(nèi)的對(duì)象位置指針的引用地址,更新成由所述對(duì)象復(fù)制單元復(fù)制的復(fù)制目標(biāo)對(duì)象的位置;所述引用地址變更單元,用于在所述第2指針更新單元執(zhí)行過程中,所述主程序向所述堆區(qū)域執(zhí)行引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的寫入處理 時(shí),或者執(zhí)行寫入處理之后,將該對(duì)象位置指針的引用地址變更成所述復(fù)制目標(biāo)對(duì)象的位置;所述同一判斷單元,用于在所述第2指針更新單元執(zhí)行過程中,所述主程 序檢查2個(gè)對(duì)象位置指針的引用地址是否是同一對(duì)象位置時(shí),當(dāng)該2個(gè)對(duì)象位 置指針中的一個(gè)引用所述復(fù)制源對(duì)象的位置,另 一個(gè)引用所述復(fù)制目標(biāo)對(duì)象的 位置時(shí),判斷為引用同一個(gè)對(duì)象;所述復(fù)制判斷單元,還用于在所述對(duì)象復(fù)制單元,或者所述第2指針更新 單元執(zhí)行過程中,所述主程序向記錄于所述堆區(qū)域中的對(duì)象的記錄區(qū)域執(zhí)行數(shù) 據(jù)的寫入處理時(shí),或者執(zhí)行寫入處理之后,判斷數(shù)據(jù)寫入地址的記錄區(qū)域,是 否是所述復(fù)制源對(duì)象的記錄區(qū)域或者所述復(fù)制目標(biāo)對(duì)象的記錄區(qū)域中的一個(gè)。
11、根據(jù)權(quán)利要求8至10任意一個(gè)所述的內(nèi)存管理裝置,其特征在于,在所述數(shù)據(jù)記錄區(qū)域中,設(shè)置有棧區(qū)域,所述棧區(qū)域用于累積配置臨時(shí)記 錄所述主程序運(yùn)行的函數(shù)的運(yùn)行結(jié)果等的函數(shù)幀;所述內(nèi)存管理裝置,進(jìn)一步包括第3指針更新單元和邊界設(shè)定單元;所述第3指針更新單元,用于從上位向下位掃描所述棧區(qū)域內(nèi)的所述函數(shù) 幀,將以該順序記錄于該棧區(qū)域中的,引用所述復(fù)制源對(duì)象位置的對(duì)象位置指 針的引用地址,更新成由所述對(duì)象復(fù)制單元復(fù)制的復(fù)制目標(biāo)對(duì)象的位置;所述邊界設(shè)定單元,用于在中斷所述第3指針更新單元所做的對(duì)象位置指 針的更新處理時(shí),在最后執(zhí)行該第3指針更新單元處理的所述函數(shù)幀中設(shè)定控 制函數(shù)運(yùn)行的邊界;所述第1指針更新單元,還用于將記錄于所述棧區(qū)域以外的所述數(shù)據(jù)記錄 區(qū)域中的,引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成所述 復(fù)制目標(biāo)對(duì)象的位置;所述邊界,在函數(shù)運(yùn)行結(jié)束之后,重新開始所述第3指針更新單元執(zhí)行的處理。
12、 根據(jù)權(quán)利要求8至10任意一個(gè)所述的內(nèi)存管理裝置,其特征在于 將所述數(shù)據(jù)記錄區(qū)域的一部分或者全部分配進(jìn)所述堆區(qū)域內(nèi),將該堆區(qū)域內(nèi)的該數(shù)據(jù)記錄區(qū)域以外的區(qū)域,作為權(quán)利要求8至10中任意一個(gè)所述的堆區(qū) 域;所述范圍設(shè)定單元,還用于能夠針對(duì)所述堆區(qū)域內(nèi)的所述數(shù)據(jù)記錄區(qū)域被 分配的區(qū)域設(shè)定限定范圍; 所述第1指針更新單元,還用于將記錄于所述限定范圍內(nèi)的所述凄t據(jù)記錄區(qū)域中的,引用所述復(fù)制 源對(duì)象位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置的同 時(shí),將該限定范圍內(nèi)的所述數(shù)據(jù)記錄區(qū)域,移動(dòng)至所述堆區(qū)域內(nèi)的可用區(qū)域中,將記錄于所述限定范圍外的所述數(shù)據(jù)記錄區(qū)域中的,引用所述復(fù)制源對(duì)象 位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置。
13、 根據(jù)權(quán)利要求11所述的內(nèi)存管理裝置,其特征在于,將除所述棧區(qū)域以外的所述數(shù)據(jù)記錄區(qū)域的 一部分或者全部分配進(jìn)所述堆 區(qū)域內(nèi),將該堆區(qū)域內(nèi)的該數(shù)據(jù)記錄區(qū)域以外的區(qū)域,作成權(quán)利要求8至10任 意一個(gè)所述的堆區(qū)域;所述范圍設(shè)定單元,還用于能夠針對(duì)所述堆區(qū)域內(nèi)的所述數(shù)據(jù)記錄區(qū)域被 分配的區(qū)域-沒定限定范圍;所述第1指針更新單元,還用于將記錄于所述限定范圍內(nèi)的所述數(shù)據(jù)記錄區(qū)域中的,引用所述復(fù)制 源對(duì)象位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置的同 時(shí),將該限定范圍內(nèi)的所述數(shù)據(jù)記錄區(qū)域,移動(dòng)至所述堆區(qū)域內(nèi)的可用區(qū)域,將記錄于所述限定范圍以及所述棧區(qū)域以外的所述數(shù)據(jù)記錄區(qū)域中的,引 用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象 的位置。
14、 根據(jù)權(quán)利要求11所述的內(nèi)存管理裝置,其特征在于, 將包含所述棧區(qū)域的所述數(shù)據(jù)記錄區(qū)域的一部分或者全部分配進(jìn)所述堆區(qū)域內(nèi),將該堆區(qū)域內(nèi)的該數(shù)據(jù)記錄區(qū)域外的區(qū)域,作為權(quán)利要求8至權(quán)利要求10任意一個(gè)所述的堆區(qū)域;所述范圍設(shè)定單元,還用于能夠針對(duì)所述堆區(qū)域內(nèi)的所述數(shù)據(jù)記錄區(qū)域4皮分配的區(qū)域設(shè)定限定范圍; 所述第1指針更新單元,還用于將記錄于除所述限定范圍內(nèi)的所述棧區(qū)域以外的所述數(shù)據(jù)記錄區(qū)域 中的,引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制 目標(biāo)對(duì)象的位置的同時(shí),將分配進(jìn)該限定范圍內(nèi)的,除所述棧區(qū)域以外的該數(shù) 據(jù)記錄區(qū)域,移動(dòng)至所述堆區(qū)域內(nèi)的可用區(qū)域中,將記錄于所述限定范圍外的除所述棧區(qū)域以外的所述數(shù)據(jù)記錄區(qū)域中的, 引用所述復(fù)制源對(duì)象位置的對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì) 象的位置;所述第3指針更新單元,還用于/人上位向下位掃描分配進(jìn)所述堆區(qū)域內(nèi)的所述棧區(qū)域內(nèi)的所述函凄t 幀,將記錄于所述限定范圍內(nèi)的所述函數(shù)幀中的,引用所述復(fù)制源對(duì)象位置的 對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置的同時(shí),將該限定 范圍內(nèi)的該函數(shù)幀,移動(dòng)至該堆區(qū)域內(nèi)的可用區(qū)域,將記錄于所述限定范圍外的所述函數(shù)幀中的,引用所述復(fù)制源對(duì)象位置的 對(duì)象位置指針的引用地址,更新成所述復(fù)制目標(biāo)對(duì)象的位置;所述邊界設(shè)定單元,還用于在中斷所述第3指針更新處理,運(yùn)行所述主程 序時(shí),將所述邊界,設(shè)定在最后執(zhí)行該第3指針更新處理的所述函數(shù)幀中。
15、 一種計(jì)算機(jī)可讀取記錄媒體,其特征在于,用于記錄在計(jì)算機(jī)上運(yùn)行 權(quán)利要求1至7任意一個(gè)所述的內(nèi)存管理方法的內(nèi)存管理程序。
全文摘要
在內(nèi)存管理方法、內(nèi)存管理裝置、以及記錄內(nèi)存管理程序的記錄媒體中,中斷生成連續(xù)的可用區(qū)域的處理,主程序進(jìn)行處理。內(nèi)存管理程序,在壓縮處理中,主程序向堆區(qū)域中寫入數(shù)據(jù)時(shí),判斷數(shù)據(jù)的寫入地址,是否是復(fù)制源對(duì)象的記錄區(qū)域或者是復(fù)制目標(biāo)對(duì)象的記錄區(qū)域中的一個(gè)(S31),當(dāng)判斷數(shù)據(jù)寫入地址是其中之一時(shí)(S32中的是),將寫入的數(shù)據(jù),同時(shí)寫入復(fù)制源以及復(fù)制目標(biāo)對(duì)象的記錄區(qū)域(S33)。因此,在壓縮處理中即使主程序進(jìn)行寫入處理也能夠保持復(fù)制源對(duì)象和復(fù)制目標(biāo)對(duì)象的數(shù)據(jù)的一致性。
文檔編號(hào)G06F12/02GK101622605SQ20088000407
公開日2010年1月6日 申請(qǐng)日期2008年1月23日 優(yōu)先權(quán)日2007年2月5日
發(fā)明者湯淺太一, 鵜川始陽 申請(qǐng)人:國立大學(xué)法人京都大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
屯留县| 洪江市| 定边县| 乌恰县| 平陆县| 永德县| 上蔡县| 调兵山市| 嵊泗县| 东乡族自治县| 闻喜县| 哈巴河县| 扶沟县| 岳阳县| 广州市| 白朗县| 自贡市| 马鞍山市| 明光市| 车险| 赤壁市| 襄樊市| 航空| 淅川县| 靖边县| 巢湖市| 皋兰县| 寻甸| 胶州市| 田林县| 房山区| 偏关县| 苍梧县| 黑水县| 沁源县| 孝昌县| 甘德县| 雅江县| 重庆市| 瓦房店市| 鄂州市|