專利名稱:存儲器管理的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及執(zhí)行中的軟件應(yīng)用的存儲器管理,具體而言,涉及垃圾收集過程中的 殘存存儲器。
背景技術(shù):
運(yùn)行時(shí)環(huán)境下存儲器管理的設(shè)計(jì),通常是為了軟件工程師的方便。因此,諸如 Java (Java是Sun Microsystems Inc.的注冊商標(biāo))的運(yùn)行時(shí)環(huán)境包含具有垃圾收集器的 堆存儲器(heap memory) 0垃圾收集器是自動標(biāo)識并自存儲器丟棄無效數(shù)據(jù)(如對象)以 便釋放儲存空間的運(yùn)行時(shí)工具。垃圾收集是現(xiàn)代計(jì)算機(jī)系統(tǒng)的效率所享有的奢侈品,使軟 件工程師不再需要以編程方式丟棄每個(gè)無效對象。現(xiàn)代的垃圾收集算法利用弱代假說(weak generational hypothesis),即大部分 被分配的對象是“短存”的(即對象建立后,在相對較短的時(shí)間內(nèi)即可被丟棄)。為了使用 此假說,對象被分配在稱為“新代(nursery)”的存儲器堆區(qū)中。對此新代進(jìn)行的垃圾收集 遠(yuǎn)比主堆頻繁,后者存儲較舊(年老)的對象,且一般包括稱為分配空間和殘存空間的二個(gè) 區(qū)域。隨著對象被復(fù)制到連續(xù)存儲器中,新代會自動壓縮。復(fù)制垃圾收集算法將存活對象從 新代分配空間復(fù)制到同時(shí)執(zhí)行壓縮的殘存存儲器(survivor memory) 0殘存存儲器是具有 可配置大小的新代堆的一部分。例如,殘存存儲器最多可占分配給新代的總存儲器的50%。圖Ia是在計(jì)算機(jī)系統(tǒng)中執(zhí)行的軟件應(yīng)用202的示意圖。每個(gè)軟件應(yīng)用都具有由 存儲器管理器204所提供的相關(guān)堆存儲器206。堆存儲器206占用一個(gè)地址范圍,該地址范 圍可以是物理地址范圍或存儲器管理器204將物理存儲器映射至其中的邏輯地址范圍。例 如,堆存儲器206是新代堆,屬于較大應(yīng)用堆的一部分。存儲器管理器204可操作以將計(jì)算 機(jī)系統(tǒng)的存儲器單元提供給軟件應(yīng)用202。例如,存儲器管理器204可為計(jì)算機(jī)系統(tǒng)中的操 作系統(tǒng)的一個(gè)構(gòu)件,如內(nèi)核存儲器管理器。堆206的一部分208是專用殘存存儲器,供垃圾收集過程期間使用。殘存存儲器 部分208的特征在于,其不可供應(yīng)用202分配對象使用并被保留以在垃圾收集過程期間使 用。圖Ib是圖Ia的軟件應(yīng)用202的堆206的示意圖。在執(zhí)行中,軟件應(yīng)用202在堆206 中存儲和取回?cái)?shù)據(jù)。堆206包含對應(yīng)于所存儲的數(shù)據(jù)的已分配部分(劃線及陰影部分)。 此類數(shù)據(jù)可包含例如分配的軟件對象、數(shù)據(jù)結(jié)構(gòu)、紀(jì)錄、字段或變量。垃圾收集算法可操作 以周期性地處理堆206以丟棄堆206中分配的未使用數(shù)據(jù)項(xiàng)。此類算法包含復(fù)制垃圾收集 算法。在處理堆206時(shí),垃圾收集算法標(biāo)識堆206中有效的數(shù)據(jù)項(xiàng)。有效的數(shù)據(jù)項(xiàng)是軟件 應(yīng)用202正在使用的數(shù)據(jù)項(xiàng)。反之,無效的數(shù)據(jù)項(xiàng)是軟件應(yīng)用202不再需要的數(shù)據(jù)項(xiàng)。例 如,軟件應(yīng)用202通過例如存儲器指針或?qū)ο笠脕硪糜行?shù)據(jù)項(xiàng)。垃圾收集算法將此 類已標(biāo)識的有效數(shù)據(jù)項(xiàng)復(fù)制到殘存存儲器208。垃圾收集算法可將已標(biāo)識的有效數(shù)據(jù)項(xiàng)復(fù) 制到殘存存儲器208內(nèi)的連續(xù)位置,以便壓縮所述數(shù)據(jù)項(xiàng)。隨后,僅需保留殘存存儲器208 中記錄的數(shù)據(jù)項(xiàng)(因此為“殘存”),并且堆206中的所有其他數(shù)據(jù)項(xiàng)(對應(yīng)于無效的數(shù)據(jù) 項(xiàng))皆可被丟棄。
4
此類復(fù)制垃圾收集器的一個(gè)問題在于,即使當(dāng)前沒有執(zhí)行垃圾收集,每個(gè)應(yīng)用也維持其自己的殘存存儲器。對于具有大量執(zhí)行中的軟件應(yīng)用以及對應(yīng)的大量存儲器被分配 為殘存存儲器的系統(tǒng)而言,此問題特別嚴(yán)重。此外,由于殘存存儲器被保留為在垃圾收集過 程期間使用,軟件應(yīng)用202無法用其存儲數(shù)據(jù)。因此,借助用于復(fù)制垃圾收集器的殘存存儲器提供垃圾收集的益處而無需將堆存 儲器專門用作執(zhí)行中的每個(gè)軟件應(yīng)用的殘存存儲器是有利的。
發(fā)明內(nèi)容
本發(fā)明相應(yīng)地在第一方面中提供了一種用于在計(jì)算機(jī)系統(tǒng)中執(zhí)行的軟件應(yīng)用的 存儲器管理的方法,所述方法包含以下步驟存儲器管理器提供具有預(yù)定大小的第一存儲 器單元作為用于所述軟件應(yīng)用的第一分配空間;所述軟件應(yīng)用將數(shù)據(jù)存儲在所述第一分配 空間中;以及通過下列步驟丟棄所述第一分配空間中的無效數(shù)據(jù)a)所述存儲器管理器提供用于所述軟件應(yīng)用的第二存儲器單元;b)標(biāo)識所述第一分配空間中的有效數(shù)據(jù)并將所述有效數(shù)據(jù)復(fù)制到所述第二存儲 器單元,所述有效數(shù)據(jù)至少包含所述軟件應(yīng)用正在使用的數(shù)據(jù);C)在所述第一分配空間中指示所述有效數(shù)據(jù)已變?yōu)闊o效;d)將所述第一分配空間的一部分映射為在邏輯上與所述第二存儲器單元連續(xù),以 便定義用于所述軟件應(yīng)用的第二分配空間,其中所述第二分配空間的大小等于所述預(yù)定大 ??;以及e)將所述第一分配空間的剩余部分返回給所述存儲器管理器,作為適合重新使用 的存儲器單元。優(yōu)選地,所述第二存儲器單元的特征在于其大小至少與所述第一分配空間中的 所述有效數(shù)據(jù)的合計(jì)大小(aggregated size)相等。優(yōu)選地,所述存儲器管理器是所述計(jì)算機(jī)系統(tǒng)的操作系統(tǒng)中的內(nèi)核存儲器管理
ο優(yōu)選地,至少所述步驟b)由垃圾收集器軟件例程執(zhí)行。因此,以此方式,所述第二存儲器單元可供執(zhí)行中的軟件應(yīng)用使用,作為供垃圾收 集之用的殘存存儲器,并且完成垃圾收集后,軟件應(yīng)用會釋放存儲器。因此,軟件應(yīng)用僅在 垃圾收集過程期間才消耗殘存存儲器,進(jìn)而避免需要將堆存儲器專門用作執(zhí)行中的每個(gè)軟 件應(yīng)用的殘存存儲器。本發(fā)明相應(yīng)地在第二方面中提供了一種用于管理在計(jì)算機(jī)系統(tǒng)中執(zhí)行的軟件應(yīng) 用的存儲器的裝置,所述裝置包含存儲器管理器,其用于提供具有預(yù)定大小的第一存儲器 單元作為用于所述軟件應(yīng)用的第一分配空間;儲存器,其使所述軟件應(yīng)用將數(shù)據(jù)存儲在所述第一分配空間中;以及丟棄器,其用于通過下列步驟丟棄所述第一分配空間中的無效數(shù)據(jù)a)供應(yīng)器,其使所述存儲器管理器提供用于所述軟件應(yīng)用的第二存儲器單元;b)標(biāo)識器,其用于標(biāo)識所述第一分配空間中的有效數(shù)據(jù)并將所述有效數(shù)據(jù)復(fù)制到 所述第二存儲器單元,所述有效數(shù)據(jù)至少包含所述軟件應(yīng)用正在使用的數(shù)據(jù);c)指示器,其用于在所述第一分配空間中指示所述有效數(shù)據(jù)已變?yōu)闊o效;
d)映射器,其用于將所述第一分配空間的一部分映射為在邏輯上與所述第二存儲 器單元連續(xù),以便定義用于所述軟件應(yīng)用的第二分配空間,其中所述第二分配空間的大小 等于所述預(yù)定大??;以及e)存儲器取消分配器,其用于將所述第一分配空間的剩余部分返回給所述存儲器 管理器,作為適合重新使用的存儲器單元。本發(fā)明相應(yīng)地在第三方面中提供了一種裝置,所述裝置包含中央處理單元;
存儲器子系統(tǒng);輸入/輸出子系統(tǒng);以及總線子系統(tǒng),其與所述中央處理單元、所述存儲器子系統(tǒng)、所述輸入/輸出子系統(tǒng) 互連;;以及如上所述的裝置。本發(fā)明相應(yīng)地在第四方面中提供了一種包含計(jì)算機(jī)程序代碼的計(jì)算機(jī)程序組件, 當(dāng)所述計(jì)算機(jī)程序代碼被加載到計(jì)算機(jī)系統(tǒng)中并在其上執(zhí)行時(shí),將導(dǎo)致所述計(jì)算機(jī)執(zhí)行如 上所述的方法。
以下僅通過實(shí)例的方式參考附圖更詳細(xì)地描述本發(fā)明的優(yōu)選實(shí)施例,這些附圖 是圖Ia是現(xiàn)有技術(shù)中的在計(jì)算機(jī)系統(tǒng)中執(zhí)行的軟件應(yīng)用的示意圖;圖Ib是現(xiàn)有技術(shù)中的圖Ia的軟件應(yīng)用的堆的示意圖;圖2是適合本發(fā)明的實(shí)施例的操作的計(jì)算機(jī)系統(tǒng)的方塊圖;圖3a是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的在計(jì)算機(jī)系統(tǒng)中執(zhí)行的軟件應(yīng)用的示意圖;圖3b到3d是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的在垃圾收集過程期間圖3a的堆的示意 圖;圖4a是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的存儲器管理的方法的流程圖;圖4b是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的圖4a的丟棄無效數(shù)據(jù)步驟的流程圖;以及圖5是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的裝置的構(gòu)件示意圖。
具體實(shí)施例方式圖2是適合本發(fā)明的實(shí)施例的操作的計(jì)算機(jī)系統(tǒng)的方塊圖。中央處理單元 (CPU) 102經(jīng)由數(shù)據(jù)總線108可通信地連接到儲存器104與輸入/輸出(I/O)接口 106。儲 存器104可為任何讀/寫存儲設(shè)備,如隨機(jī)存取存儲器(RAM)、或非易失性存儲設(shè)備。非易 失性存儲設(shè)備的一個(gè)實(shí)例包含盤或帶存儲設(shè)備。I/O接口 106是與輸入或輸出數(shù)據(jù)的設(shè)備、 或輸入及輸出數(shù)據(jù)溝通的接口??蛇B接到I/O接口 106的I/O設(shè)備的實(shí)例包含鍵盤、鼠標(biāo)、 顯示器(如監(jiān)視器)及網(wǎng)絡(luò)連接。圖3a是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的在計(jì)算機(jī)系統(tǒng)中執(zhí)行的軟件應(yīng)用302的示意 圖。圖3a中的許多組件與上述圖Ia中的組件相同,此后將不贅述。與圖Ia的排列相比,圖 3a的軟件應(yīng)用302包含堆存儲器306 (如新代堆),其可完全供軟件應(yīng)用存儲數(shù)據(jù)。堆306 的任何部分都未被保留為殘存存儲器。存儲器管理器304將堆306提供給軟件應(yīng)用302。因此,在圖3a的排列中,軟件應(yīng)用302的存儲器僅限于應(yīng)用堆存儲應(yīng)用數(shù)據(jù)所需的位置。在使用中,存儲器管理器304可操作以將第二存儲器單元提供給軟件應(yīng)用302,以 響應(yīng)在軟件應(yīng)用302中啟動垃圾收集過程。所述第二存儲器單元適合用作垃圾收集過程期 間的殘存存儲器。此類垃圾收集過程標(biāo)識堆306中的有效數(shù)據(jù),并將其復(fù)制到所述第二存 儲器單元以便保留。此類復(fù)制可包含復(fù)制到所述第二存儲器單元中的連續(xù)存儲器位置,以 壓縮有效數(shù)據(jù)。完成垃圾收集器的復(fù)制過程時(shí),軟件應(yīng)用302將釋放堆存儲器306的一部 分,使得此部分可供存儲器管理器304使用,作為供重新使用的存儲器單元。堆存儲器306 的被釋放部分的大小對應(yīng)于所述第二存儲器單元的大小。因此,當(dāng)垃圾收集過程需要時(shí),殘 存存儲器可以以第二存儲器單元的形式供軟件應(yīng)用302使用。再者,完成垃圾收集過程時(shí), 軟件應(yīng)用將釋放存儲器。這樣,殘存存儲器可供執(zhí)行中的軟件應(yīng)用302作垃圾收集之用,且 垃圾收集完后,軟件應(yīng)用即釋放存儲器。相應(yīng)地,軟件應(yīng)用僅在垃圾收集過程期間才消耗殘 存存儲器,進(jìn)而避免需要將堆存儲器專門用作執(zhí)行中的每個(gè)軟件應(yīng)用的殘存存儲器。圖3b到3d是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的在垃圾收集過程期間圖3a的堆306的示 意圖。在圖3b中,堆存儲器306示為在陰影與劃線部分處具有存儲的數(shù)據(jù)。存儲在堆306 中的數(shù)據(jù)可為有效或無效。有效數(shù)據(jù)是軟件應(yīng)用302所使用的數(shù)據(jù),例如軟件應(yīng)用所引用、 可取得或保留的數(shù)據(jù)。無效數(shù)據(jù)是軟件應(yīng)用不再使用的數(shù)據(jù),例如不再引用、取得或保留的 數(shù)據(jù)。數(shù)據(jù)可由于取消引用對象或存儲器指針、或主動或被動丟棄堆中的數(shù)據(jù)而變成無效。 在圖3b的排列中,四個(gè)已存儲數(shù)據(jù)部分被指示為有效,它們是交叉劃線成陰影的部分。圖3c示出了根據(jù)本發(fā)明的優(yōu)選實(shí)施例的在垃圾收集過程的第一部分期間的圖3b 的堆存儲器306。初始地,存儲器管理器304提供第二存儲器單元作為殘存空間308。殘 存空間308的大小是可配置的。優(yōu)選地,殘存空間的大小是堆存儲器306的大小的20%左 右。備選地,殘存空間被固定為一預(yù)定大小或是由學(xué)習(xí)過程所確定的大小,以對應(yīng)于堆的垃 圾收集的適當(dāng)大小。在實(shí)際中,殘存空間308的大小優(yōu)選地基本等于或大于堆306中的所 有有效數(shù)據(jù)的合計(jì)大小。垃圾收集器標(biāo)識堆306中的有效數(shù)據(jù)項(xiàng),并將有效數(shù)據(jù)項(xiàng)復(fù)制到 殘存空間308。優(yōu)選地,垃圾收集器將有效數(shù)據(jù)復(fù)制到殘存空間308內(nèi)的連續(xù)位置以壓縮有 效數(shù)據(jù)(即,避免復(fù)制操作期間發(fā)生存儲器分段)。圖3d示出了根據(jù)本發(fā)明的優(yōu)選實(shí)施例的在垃圾收集過程的第二部分期間的圖3b 的堆存儲器306。一旦有效數(shù)據(jù)被復(fù)制到殘存空間308,就將堆306中的所有有效數(shù)據(jù)指示 為無效。這樣,使整個(gè)堆306實(shí)際上沒有數(shù)據(jù)(為空)。這在圖3d中利用劃線的陰影表示, 以指示堆306中存儲的所有數(shù)據(jù)皆為無效。隨后,將堆306的一部分312映射為在邏輯上與殘存空間308連續(xù),以定義新的分 配空間作為堆306’??赏ㄟ^改變堆306的部分312的存儲位置邏輯地址以在邏輯上與殘存 空間308連續(xù)而實(shí)現(xiàn)部分312的映射,如本領(lǐng)域技術(shù)人員公知的。例如,始于地址U<s且具有 大小U^的堆306的部分312可被映射為在邏輯上與始于地址Sffi且具有大小S^的殘存 空間連續(xù),方式是將未分配部分的邏輯地址映射為U低=Sffi+S±/>0部分312可為堆306的 任何部分(由于堆內(nèi)的所有數(shù)據(jù)現(xiàn)在皆被指示為無效,所以堆306的存儲器實(shí)際上為空)。 這樣確定堆的部分312的大小當(dāng)其與殘存空間308結(jié)合以形成新的分配空間作為堆306’ 時(shí),堆306,的大小將等于堆306的大小。因此,U +S^=A 。這樣,堆306的剩余部 分(如果堆306的該部分未被映射以形成新堆306’的一部分)被定義為大小等于殘存空
7間308的大小。堆306’所定義的新分配空間隨后可供軟件應(yīng)用302用于存儲數(shù)據(jù)。新堆306’的 殘存部分308與自堆306映射的部分312并無差別,且整個(gè)堆306’可用作軟件應(yīng)用的分配
空間。 圖4a是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的存儲器管理的方法的流程圖。初始地,在步 驟402,存儲器管理器304將第一分配空間提供給軟件應(yīng)用302作為堆存儲器306。在步驟 404,所述應(yīng)用將數(shù)據(jù)存儲在堆306中。最后,在步驟406,垃圾收集過程丟棄堆306中的無 效數(shù)據(jù)。圖4b是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的圖4a的丟棄無效數(shù)據(jù)的步驟406的流程圖。 初始地,在步驟410,存儲器管理器304提供第二存儲器單元作為用于軟件應(yīng)用302的殘存 空間308。在步驟412,垃圾收集過程標(biāo)識存儲在堆306的所分配部分310中的有效數(shù)據(jù), 并將所標(biāo)識的有效數(shù)據(jù)復(fù)制到殘存空間308。在步驟413,此方法將堆306中的所有有效數(shù) 據(jù)指示為無效,以表明堆306現(xiàn)在實(shí)際上為空(無有效數(shù)據(jù)),因?yàn)樗械挠行?shù)據(jù)現(xiàn)在存 在于殘存空間308中。在步驟414,將堆306的部分312映射為在邏輯上與殘存空間308連 續(xù),以將新的分配空間定義為堆306’。這樣選擇部分312:將新堆306’的大小定義為與堆 306的大小相同。最后,在步驟416,釋放堆306的未包含在新堆306’內(nèi)的剩余部分,以供 存儲器管理器304重新使用。圖5是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的裝置的構(gòu)件示意圖。所述裝置包含存儲器管 理器204(如上所述),其適合提供第一存儲器單元作為用于軟件應(yīng)用的存儲器堆。所述裝 置還包含儲存器構(gòu)件502,其將數(shù)據(jù)存儲在軟件應(yīng)用的存儲器堆中,由此定義堆的已分配部 分。所述裝置還包含丟棄器504(如垃圾收集構(gòu)件)以丟棄已分配部分中的無效數(shù)據(jù)。丟 棄器504包含供應(yīng)器構(gòu)件506,其提供第二存儲器單元作為軟件應(yīng)用的殘存存儲器。丟棄器 504還包含標(biāo)識器,其標(biāo)識堆中的有效數(shù)據(jù)以及將有效數(shù)據(jù)復(fù)制到殘存存儲器。丟棄器504 還包含映射器構(gòu)件510,其將堆的未分配部分映射為在邏輯上與殘存空間連續(xù),以及包含存 儲器取消分配器構(gòu)件512,其將已分配部分返回給存儲器管理器204,作為適合重新使用的 存儲器單元。丟棄器504還包含指示器514,其在將有效數(shù)據(jù)復(fù)制到殘存空間308后,指示 堆306中的所有數(shù)據(jù)為無效。在至少可部分使用軟件控制的可編程處理設(shè)備(如微處理器、數(shù)字信號處理器、 或其他處理設(shè)備)、數(shù)據(jù)處理裝置或系統(tǒng)實(shí)施所描述的本發(fā)明實(shí)施例的情況下,將理解的 是,用于配置可編程設(shè)備、裝置或系統(tǒng)以實(shí)施上述方法的計(jì)算機(jī)程序也被視為本發(fā)明的一 個(gè)方面。所述計(jì)算機(jī)程序可體現(xiàn)為源代碼、或可被編譯以在處理設(shè)備、裝置或系統(tǒng)上實(shí)施、 或可以例如體現(xiàn)為目標(biāo)代碼。在適當(dāng)情況下,所述計(jì)算機(jī)程序以機(jī)器或設(shè)備可讀的形式存儲在承載介質(zhì)上,例 如存儲在固態(tài)存儲器、磁性存儲器(如磁盤或磁帶)、光學(xué)或磁光可讀存儲器(如光盤或多 功能數(shù)字盤等)中,并且處理設(shè)備利用所述程序或其一部分配置設(shè)備以便操作??蓮倪h(yuǎn)程 源提供體現(xiàn)在通信介質(zhì)(如電子信號、射頻載波、或光載波)中的所述計(jì)算機(jī)程序。此類載 波介質(zhì)也被視為本發(fā)明的各方面。本領(lǐng)域技術(shù)人員將理解,雖然根據(jù)上述實(shí)例實(shí)施例描述了本發(fā)明,但本發(fā)明并不 限于此,并且存在許多可能的在本發(fā)明范圍之內(nèi)的變化及修改。
本發(fā)明的范圍包含在此所揭露的任何新穎特征或其結(jié)合。申請人在此表明,在取 得此申請、或此申請所衍生的其他申請的專利期間,可根據(jù)此類特征或其結(jié)合主張新的權(quán) 利要求。具體而言,參考所附權(quán)利要求,從屬權(quán)利要求的特征可與獨(dú)立權(quán)利要求的特征結(jié) 合,并且各獨(dú)立權(quán)利要求的特征可以以適當(dāng)?shù)姆绞浇Y(jié)合,而不僅僅是權(quán)利要求書中所列出 的特定結(jié)合。
權(quán)利要求
一種用于在計(jì)算機(jī)系統(tǒng)中執(zhí)行的軟件應(yīng)用的存儲器管理的方法,所述方法包含以下步驟存儲器管理器提供具有預(yù)定大小的第一存儲器單元作為用于所述軟件應(yīng)用的第一分配空間;所述軟件應(yīng)用將數(shù)據(jù)存儲在所述第一分配空間中;以及通過下列步驟丟棄所述第一分配空間中的無效數(shù)據(jù)a)所述存儲器管理器提供用于所述軟件應(yīng)用的第二存儲器單元;b)標(biāo)識所述第一分配空間中的有效數(shù)據(jù)并將所述有效數(shù)據(jù)復(fù)制到所述第二存儲器單元,所述有效數(shù)據(jù)至少包含所述軟件應(yīng)用正在使用的數(shù)據(jù);c)在所述第一分配空間中指示所述有效數(shù)據(jù)已變?yōu)闊o效;d)將所述第一分配空間的一部分映射為在邏輯上與所述第二存儲器單元連續(xù),以便定義用于所述軟件應(yīng)用的第二分配空間,其中所述第二分配空間的大小等于所述預(yù)定大?。灰约癳)將所述第一分配空間的剩余部分返回給所述存儲器管理器,作為適合重新使用的存儲器單元。
2.如權(quán)利要求1中所述的方法,其中所述第二存儲器單元的特征在于其大小至少與 所述第一分配空間中的所述有效數(shù)據(jù)的合計(jì)大小相等。
3.如權(quán)利要求1中所述的方法,其中所述存儲器管理器是所述計(jì)算機(jī)系統(tǒng)的操作系統(tǒng) 中的內(nèi)核存儲器管理器。
4.如權(quán)利要求1中所述的方法,其中至少所述步驟b)由垃圾收集器軟件例程執(zhí)行。
5.一種用于管理在計(jì)算機(jī)系統(tǒng)中執(zhí)行的軟件應(yīng)用的存儲器的裝置,所述裝置包含存儲器管理器,其用于提供具有預(yù)定大小的第一存儲器單元作為用于所述軟件應(yīng)用的 第一分配空間;儲存器,其使所述軟件應(yīng)用將數(shù)據(jù)存儲在所述第一分配空間中;以及丟棄器,其用于通過下列步驟丟棄所述第一分配空間中的無效數(shù)據(jù)a)供應(yīng)器,其使所述存儲器管理器提供用于所述軟件應(yīng)用的第二存儲器單元;b)標(biāo)識器,其用于標(biāo)識所述第一分配空間中的有效數(shù)據(jù)并將所述有效數(shù)據(jù)復(fù)制到所述 第二存儲器單元,所述有效數(shù)據(jù)至少包含所述軟件應(yīng)用正在使用的數(shù)據(jù);c)指示器,其用于在所述第一分配空間中指示所述有效數(shù)據(jù)已變?yōu)闊o效;d)映射器,其用于將所述第一分配空間的一部分映射為在邏輯上與所述第二存儲器單 元連續(xù),以便定義用于所述軟件應(yīng)用的第二分配空間,其中所述第二分配空間的大小等于 所述預(yù)定大??;以及e)存儲器取消分配器,其用于將所述第一分配空間的剩余部分返回給所述存儲器管理 器,作為適合重新使用的存儲器單元。
6.如權(quán)利要求5中所述的裝置,其中所述第二存儲器單元的特征在于其大小至少與 所述第一分配空間中的所述有效數(shù)據(jù)的合計(jì)大小相等。
7.如權(quán)利要求5中所述的裝置,其中所述存儲器管理器是所述計(jì)算機(jī)系統(tǒng)的操作系統(tǒng) 中的內(nèi)核存儲器管理器。
8.如權(quán)利要求5中所述的裝置,其中至少所述步驟b)由垃圾收集器軟件例程執(zhí)行。
9.一種裝置,包含 中央處理單元; 存儲器子系統(tǒng);輸入/輸出子系統(tǒng);以及總線子系統(tǒng),其與所述中央處理單元、所述存儲器子系統(tǒng)、所述輸入/輸出子系統(tǒng)互 連;以及如權(quán)利要求5至8中的任一權(quán)利要求所述的裝置。
10.一種包含計(jì)算機(jī)程序代碼的計(jì)算機(jī)程序組件,當(dāng)所述計(jì)算機(jī)程序代碼被加載到計(jì) 算機(jī)系統(tǒng)中并在其上執(zhí)行時(shí),將導(dǎo)致所述計(jì)算機(jī)執(zhí)行如權(quán)利要求1至4中的任一權(quán)利要求 所述的方法的各步驟。
全文摘要
一種用于在計(jì)算機(jī)系統(tǒng)中執(zhí)行的軟件應(yīng)用的存儲器管理的方法,所述方法包含以下步驟存儲器管理器提供具有預(yù)定大小的第一存儲器單元作為用于所述軟件應(yīng)用的第一分配空間;所述軟件應(yīng)用將數(shù)據(jù)存儲在所述第一分配空間中;以及通過下列步驟丟棄所述第一分配空間中的無效數(shù)據(jù)a)所述存儲器管理器提供用于所述軟件應(yīng)用的第二存儲器單元;b)標(biāo)識所述第一分配空間中的有效數(shù)據(jù)并將所述有效數(shù)據(jù)復(fù)制到所述第二存儲器單元,所述有效數(shù)據(jù)至少包含所述軟件應(yīng)用正在使用的數(shù)據(jù);c)在所述第一分配空間中指示所述有效數(shù)據(jù)已變?yōu)闊o效;d)將所述第一分配空間的一部分映射為在邏輯上與所述第二存儲器單元連續(xù),以便定義用于所述軟件應(yīng)用的第二分配空間,其中所述第二分配空間的大小等于所述預(yù)定大??;以及e)將所述第一分配空間的剩余部分返回給所述存儲器管理器,作為適合重新使用的存儲器單元。
文檔編號G06F12/02GK101878472SQ200880118202
公開日2010年11月3日 申請日期2008年11月27日 優(yōu)先權(quán)日2007年11月29日
發(fā)明者A·D·懷拜, A·H·飛利浦斯 申請人:國際商業(yè)機(jī)器公司