TW440777B - Stored data object marking for garbage collectors - Google Patents
Stored data object marking for garbage collectors Download PDFInfo
- Publication number
- TW440777B TW440777B TW088110319A TW88110319A TW440777B TW 440777 B TW440777 B TW 440777B TW 088110319 A TW088110319 A TW 088110319A TW 88110319 A TW88110319 A TW 88110319A TW 440777 B TW440777 B TW 440777B
- Authority
- TW
- Taiwan
- Prior art keywords
- objects
- finalizer
- count
- data
- maintained
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0261—Garbage collection, i.e. reclamation of unreferenced memory using reference counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99956—File allocation
- Y10S707/99957—Garbage collection
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
- Memory System (AREA)
Description
4407 7 7 五、發明說明(i) 本發明是關於一種管理儲存資料物件的方法及裝置,特 別是(但不是獨有地)關於在一資料處理裝置的實際或虛擬 記憶體空間即時執行的記憶緊湊及無用儲存單元收集程序 當中,對於物件定案的管理。 無用儲存單元收集是系統記憶空間在被一程式最後使用 之後的自動歸還°許多無用儲存單元收集技術的範例在 John WHey & Sons 1996 年出版 ’ ISBN 0-471-94148-4 ’ R. Jones等人所著的「無用儲存單元收集··自動化動態記 憶體管理之演算法」一書的1至1 8頁當中有所討論。雖然 許多電腦程式的儲存請求都很簡單且可預期,且記憶體配 置及恢復是由該程式設計員或一編譯器所管理,卻仍有個 趨勢是向著具有更多複雜執行型態的功能化語言,使得特 殊資料結構的壽命再也不需要在執行之前被決定,因此這 個儲存的自動歸還(在程式執行時)相當重要° 定案是一種被用於S u η Μ i c r 〇 s y s t e m s ’ J a v a ®及其他現 行無用儲存單元收集的語言及程式設計環境(如Mo du la-3 及C e s a r )的觀念。儲存資料物件可能有一個隨行的定案 器1在該物件名義上成為可被無用.儲存單元收集之後,但 在該資料被收集之前被執行。這個特性的目的是要允許一 個物件能在被破壞之前清光該物件曾經宣告的任何其他系 統資源。例如,一個J a v a標案物件的定案器會關閉該物件 宣告的所有系統檔案管理。 然而,由於定案器只是物伴管理方法的其中之一,具有 其他方法的所有能力,該定案器程序可以取得可由被定案 44 07 7 i 五、發明說明(2) 的物件取得的所有資料物件。因此,可由定案器取得的所 有物件必須被明確地排除在無用儲存單元收集之外。此 外,藉由使物件重新可取得,該定案器方法有可能使任何 這種可由一定案器取得的物件恢復使用,包括正被定案的 物件本身。如此,無两儲存單元收集程序無法刪除任何可 由一可定案物件取得的物件,直到其定案器已被執行且該 物件的可取得性已被重新評估。在Java及其他語言當中’ 一個物件重複使其本身恢復使用的可能性通常藉由寫明任 何情況該定案器只被執行一次而被移除。這個對定案的控 制在本文中被假設。 在個人電腦或工作站當中,由於個人電腦的記憶體通常 夠用,所以支援定案的額外處理及記憶體負荷通常不是問 題,雖然這種支援當然會影響整體效率。然而在如選台器 這樣的低記憶體環境中,對定案器的支援會造成問題,甚 至同時或漸增的無用記憶單元收集器可能必須停止該程 式,直到以執行該特定定案器的一些或全部,且重新宣告 任何由其所使用的記憶體。 因此本發明的一個目標是提供一個漸增無用記憶單元收 集系統,以支援可定案物件,同時在任何可能的時候使這 些物件的收集時間減到最少。 根據本發明提供了 一個無用記憶單元收集以及標記方 法,利用被列為可刪除物件的無用儲存單元收集,以便能 貫穿藉由辨識在一相鄰堆積記憶體中的指標所連結的資料 物件而組成啲資料結構,該方法包含下列步驟: 440777 五、發明說明(3) ' —''〜_____________________ a )對於—個選定的根物 # * 連結至該根物件的物件;及,㈢牙其攜帶的指標以決定 所辨識的更 b)貫穿指標以決定連钎 多物件; "至那些由前一步驟 ”尹步驟b)被—直重複至、力 接著其中辨識出的物件被多的指標等箸被貫穿, :”5些帶有定案器,且標記.,其令堆積資料锻 =疋案态獲得,其物件 ς物件被辨識為可能被那 ,被維持為帶有定案器的:=:決’特徵是有-第-計 果被偵測到的帶右且對每一次貫穿,如 Ϊ处 步會有-清除被採行,以便為並ΐ 一計 I,;為待決的那些“=:以:;;: 士 +而進一步的清除被採行。 蝻為可刪 、七♦明也提供—種資料處理裝置,包人一彳^ 逆接—隨機存取記憶體,包括 $ = 3 ;;個貧料處理器 構連結以及/ 4 1夕错由辨識指標以資料結 件,該聚相鄰區域之一堆積内的資料物 '组預定ίί:Γ:額外儲存方式,堆積物件包括 該群儲存資料物^辨識,且該處理器被規格化以對 〇 /枓物件產生下列動作: 連^ 定的根物件,貫穿其攜帶的指標以決定 土邊根物件的物件;及 八& 並令札軚以決定連結至那些被辨識的; …㈣器重複步觸-直到沒有更多的指標等著被 440777 五、發明說明(4) .¾穿 '接著被辨識出的物件 為有標記’其中堆積資科物 有些物件被辨識為可能被那 為待決,特徵是該處理器伴 積物件為帶有定案器且被安 偵測到的帶有定案器物件總 定該處理器被規格化以採行 定案器可獲得物件辨識及標 剩餘總數相符,該處理哭 可刪除,不需進一步的清除 在作業當_ ’帶有定案器 對應旗標,可在被設定時^ 在這種安排下’該被維持的 設定而增加,及因移除而減 的無用儲存單元收集,帶有 除過程改變,一個第二計數 測標記成可定案物件的數目 東及與該第一計數值比較夕 件總數扣除。 §中的儲存類別辨識器被設定 件當中有些帶有定案器,且更 =定案器擭得,其物件被歸類 、 方式維持—第一計數的堆 排,對於每—次貫穿,如果被 數少於該維持的第一計數,決 ~進一步的清除,以便為其餘 S&根物件’而如果該偵測到及 安排重新歸類所有待決物件為 被採行。 的堆積資料可以適當地包括一 免物件被重新歸類為f刪除。 第一計數可能適當地因旗標的 少。為了解決可能發生在漸增 定案器的堆積物件總數隨著清 可被維持為在一清除當中被偵 ’使該第二計數值在该清除結 前由該偵測到之帶有定案器物 具體實施例之描述,本發明之進 ’並足列舉於附帶的申請專利範 明之較佳具體實施例將以下列圓 經由閱讀下列對本發.明 一步特色及優點將更明顯 圍當中以為參考。 僅作為舉例之用,本發 式為參考做•描述,其中: d〇^7 I五、發明說明(5) …… -丨 I | : 圖1是一能恰當具體描述本發明之一資料處理备„ i 丨塊圖;I 处里吊統之方; ! ! ; 圖2至4分別代表先前技藝中標記及清除動作的通^人 丨 I作’及本發明之第一及第二具體實施例。 ?合 | i 、 __一 { I 圖丨代表一資料處理系統,例如一個人電腦,作為^々 |
!應用軟體之主端,可能例如規劃該系統為一個定基.、°年夕 I I復境之資料劇覽器。該系統包含一中央處理單元 | i (CPU)IO,透過一位址及資料匯流排12連接至隨機存取記i ί憶體(RAM)及唯讀記憶體(R0MM4, 16。這些記憶體可能"包| |含許多積體電路裝置’且可能由一系統硬碟以及讀取自額 I外(可移除)記憶裝置(例如一CD-ROM)的方式來擴大。另外 i也透過匯流排1 2連接至CPU 1 0的有第一及第二使用者輪入 | |裝置1 8,2 0,適當的可能為一鍵盤及一游標控制及選取裝 i !置,如滑鼠或軌跡球。由該系統輸出聲音是經由許多由一 | :聲音處理平台2 4所控制的喇叭2 2。該系統的影像輸出是在 | i CPU10的控制下,顯現於由顯示驅動平台28所控制的顯示 | |螢幕26之上。該系統的一個進一步的資料來源疋經由線上 |連結至遠端網站,例如經由網際網路’該系统末端被提供 I —個連接至該匯流排1 2的網路介面3 0。 。 !本發明被特別具體實施於CPU1 0控制下的RAMH之工作,; !的記憶體管理;為此而設的一個控制紅& ! !々ROM 1 6,並且在開機時隨著作業系統載 A A, !
第9頁
! 。 贤中通力合作的 I ^ 440777 丨」7λ、發明說明(6) 丨
I I
;建立:然而需認清本發明並非限制在J a ν a相容系統、通力 I 丨合作(或增強)的無用儲存單元收集,也不只有虛擬記憶體 丨
; I I管理。 | 丨 以下許多具有特殊意義的特定名詞將被使用如下。根物 I i i !件是系統中整體可讀取的儲存資料物件:在Ja va中,這些 ! i j I是由靜態資料欄及堆疊所代表。可得物件是儲存的資料物丨 !件連接於以該系統之根物件為標頭的資料結構:在無用儲 ! !存單元收集當中,標記過程必須在一次無用儲存單元循環 !
! I |中找到所有可得物件。不可得物件是那些儲存的資料物件 |
!不連接於該資料結構:它們再執行程式時不可讀取,因此 I 丨是無用儲存單元收集的候選。 j ! ! j 可定案物件是名義上成為無用儲存單元的物件1因為它 丨 I們是不可得的,但也有一非空的定案器還未被執行。一定|
丨案器只能被執行一次,因此一物件會被視為可定案,如果 I
i I i其定案器還未被無用儲存單元收集器所執行。定案器可得丨 : !物件是不可得物件群的一部份,可經由對可定案物件追蹤 !而取得:這些物件不應被無用儲存單元收集。 i
! 突變脈絡是在一增強無用儲存單元收集系統執行的脈 丨 I I ί絡:其名稱來自於它們對持有儲存資料物件的堆積記憶體 i
! I ;與無用儲存單元收集脈絡一致而突變的效果’同時一無用 ;儲存單元收集脈絡是一個專用系統脈絡,其目的是收集無
j I |用儲存單元物件,並在堆積中創造更多可用空間。一定案 i !器脈絡是一專用系統脈絡,會為帶有定案器的不可得物件 j
! I 丨執行定案碼" |
第10頁 4 4 07 7 7 .._ 一 ... _. — — — 一 —. — __... — — — — —.. _ —. — ...——. - —. — —. — — —、· — — — . —-- — — ·—. — - - - ··· ——一 ——* * 'β-、發明說明(7) 偵測期間是最後一次參考一個被移除的物件及其被偵測 為一不可得物件之間的時間D在標記清除收集器當中,這 是由標記循環存續期間所決定。重新宣告期間是一個物件 被偵測為不可得及其被刪除之時點間的時間。在標記清除 無用儲存單元收集器中,這是由清除循環及可定案物件的 出現所決定。 為便於描述,先考慮一種定案器無用儲存單元收集器之 常用技術,例如被用於Sun Java⑥虛擬機vl ·0· 2。一般的 非定案器無用儲存單元收集循環可以不需詳細實行說明而 被描述,首先堆疊被切割成可得及不可得的資料物件集 合,接著是不合得部分的無用儲存單元收集。定案因為對 每一無用儲存單元收集循環增加一個新的階段,而使得無 用儲存單元收集較為複雜,例如包含了使堆疊切割成可得 及不可得集合,如前所述。這是在不可得部分被切割成無 用儲存單元及定案器可得部分之後,且最後無用儲存單元 收集在無用儲存單元部分被執行,而定案器在定案器可得 部分被執行。 該循環的加長表示物件成為不可得及其收集之間的延遲 間隔被加大了 ,結果堆疊的更大部分被無用儲存單元物件 完全佔用,因此造成更小的堆疊區域可供新資料項使用。 此外,循環當中各階段之間的強烈互依性表示大部分的實 行都將會不會有好的通力合作特性,當無用儲存單元收集 演算法進行時,會有很多暫停在突變脈絡中。由於在一般 系統中可定s案物件的數目只佔作用物件集合的一小部份’ 440777 ____ — ..—〜— —. _ . — — ... _ — - . ... — — — — - ———.——— -— - * - ·.—. — -- *—. « —— - ·—- — . —S. '發明說明(8) 增加的定案器支援顯得過頭而不成比例。系统中的每一物 件之狀態由兩個變數Μ及F所辨識,其中Μ可以是已標記(包 括任何其他標記狀態)或未標記,而F可代表有定案器或無 定案器。 該簡單系統中有關無用儲存單元收集器及其交互作用的 分離任務顯示於圖2。該突變脈絡M U可在任何時間產生新 的物件於該堆疊。該標記階段ΜΑ牵涉到由根物件的物件追 蹤。由此追蹤而找到的物件具有Μ =已標記,且標記可執行 於無用儲存單元收集脈絡,或者在漸增無用儲存單元收集 的描述範例中,是執行於突變脈絡。該定案器切割F _-Ρ是 有關於將Μ=未標記及有定案器放置於一隊列中的堆疊清 除,接著是一個使用可定案物件為根物件的標記階段:這 執行於無用儲存單元收集GC脈絡。該定案階段FS是有關該 隊列中定案器的執行,且在執行後對物件設定F =無定案 器。這可執行於無用儲存單元收集G C脈絡,或者如圖所示 執行於一專用定案脈器脈絡FS。 這個技術有一些不好的特性,首先是在標記階段MA之通 力合作性不良,定案器分割F-P,及無用儲存單元收集清 除GC以序列方式發生。因此,任務之間既有的獨立性無法 應用於一多脈絡系統。另外一個問題是對所有物件來說重 新宣告時間通常很長。對於無定案器可得的無用儲存單元 (佔絕大多數),在該定案器分割F ~ P完成以前,沒有任何 無用儲存單元會在該循環中被收集。這樣是很浪費的,因 為物件無論,如何在定案分割F-P時都必須被檢查。如有漸 440777 丨i、發明說明(9) | I增無用儲存單元收集演算法,該系統在定案器分割F-Ρ時 !
; I ;為了突變而暫停,且無用儲存單元收集GC清除的發生過度 i
: I I地長,需要對堆疊以及定案器可得標記階段兩次完整清 ! I i ί除’ !
! I | 為了降低這些延遲,需要有脈絡間分割任務的不同方式 i !以更有效率地利用多重脈絡,同時也要維持有效率地掌握 i
! I :穿案器的能力。第一個改進是將導因於擴張標記狀態數的 ! 1 | |標記及清除狀態做管線排列,如此Μ可以是已標記、未標 丨 ! ' ! :記、待決或可刪除,每一物件只需2位元儲存Μ,如本文共 : ! |
I’同待決前身為大英國協專利案號98 1 3264. 0,標題為「漸 I ! j !增無用儲存單元收集器中的定案J的美國專利案當中所描 | !述。作為進一步的範例,圆3顯示這種四個標記狀態的安 i |排中,標記及清除的通力合作結果。如圖2的範例,突變 丨 丨器MU是用以修改或產生新的物件於堆疊中,同時標記階段 ; I MA緊接著突變作用後為可取自根物件的物件做標記。M=已 j |標記被設定於發生於完成時於同一時間點(將於下描述)找|
;到的物件。這可在任何脈絡被執行。 I ! ! j 清除階段G C含有一個對堆疊的線性清除,其中任何Μ =可 | ί刪除(被偵測為不可得)的物件都在點D1被刪除,同時待 ί ^ i !決及F =有定案器的物件被放置於一定案器隊列並且被標 | '記。清除是在無用儲存單元收集脈絡中被執行,如G C 1所 丨 丨指示,且在完成時,等待同一時間點SP。定案階段在點D2 ! I ί :對位於定案器隊列的物件執行定案,並且在執行後設定| 丨無定案器%定案是再無用儲存單元收集脈絡或一專用定案!
44 υ??7 I J;. '發明說明〔10) i : i :脈絡中被執行D i
I I
; 該方法包括一個同一時間點(如上所述),在該點標記階 ί ' ' | 丨段的結果被傳送至清除階段ε下一個標記階段及清除循環 I !可能在該同一時間點sp之後同時一起開始:雖然該清除脈 i ! ί I絡可能開始於該同一時間點sp的開頭,但是它會管理如狀 丨
I 丨態改變等事項直到SP結束,而實際的清除才開始。該同一 ί I時間點本身執行以下動作: 丨
i I
ί 1.為所有物件轉換Μ ;該動作轉換對指示為已標記的儲 I ! I; 丨存密碼的系統理解(例如位元1 0 ),在轉換後成為指示為未 i I標記,以類似的轉換由未標記轉為待決,及待決轉為可刪 丨 :除。不需對所有物件要求一次清除,以及所有相對儲存標 | I記狀態位元的轉變,該動作是以轉換該標記狀態位元的意 | 丨義來執行。 ί ! i ; 2.對下一個標記階段指定新的根物件,包括那些位於目 丨 :前定案隊列裡的物件。 丨 丨 加入該新的標記狀態以及以一種有效率的方法轉換該狀 丨 I | I態,使得軟體可以管線排列定案器可得掃描及無用儲存單 | I元掃描。它用了兩個無用儲存單元收集循環將一個未標記 i !物件移到可刪除狀態(圖3的點D3 ),足夠偵測期間標記階 i I段的定案器可得性。根標記及定案器可得標記的合併降低 i
:了密碼大小1也除去了定案器分割(F-P ;圆2)以分開定案 I
I I
i器可得物件的需要。該短暫的同一時間點sp是唯——個突 I I ' ί '變觚絡被阻隔的時點。因此該方法由於清除 '定案器及突 丨
: _ I ;變脈絡是以湘當高度的獨立性作業,而能有絕佳的增強及 ί
第14頁 44Q. <440777
I '發明說明(li) I i多重脈絡表現。其循環時間也是很短,因為每一循環只包 丨
I I :含一個標記階段及一個清除同時運作。這個再加上該循環 丨
ί I 丨的大部分標記動作都在進行,對非參考物件的偵测期間也 i 丨可能被縮短。 | ; ! : 在作業當中,於通過位於待決狀態的物件時,該無用儲I ;存單元收集清除引起定案器可得集合的標記。如此該清除 | ί器有效地掌握該標記過程,有別於傳統標記清除過程,其 i ( I; ί標記是由一組堆疊外的根物件所主導11 | ; 有一個令人較不滿意的方面視該過程的重新宣告期間仍 i I然很高。無用儲存單元物件會從該同一時間點開始在兩個 丨 I ί I循環内被收集,在該點已被視為不可得(由未標記到待決 I ;的狀態轉變在大部份的循環當中,沒有新的可定案物 j I件變成不可得,且在這些循環當中,所有待決物件會再下 丨 丨一個循環變成可刪除,所以理論上他們可以在待決循環f !
ί I 丨被刪除。這是由於待決狀態中定案器物件的特色,該特色 | ;被用於本發明以改善對定案器作無用儲存單元收集的效 ; ;率,無論是描述如上參考圖3的一個漸增系統,或是較依 丨 ί i
I順序的標記再清除的安排。 I I 現在以一個具體實施例加強說明上述如圖3四個標記狀 ! ^ ; !態的技術,該具體實施例提供一種方法以便可靠地偵測待 丨 ί ! !決狀態中的物件是否可被安全地刪除。該程序的執行是以 j :追蹤在標記時被找到有定案器的物件數,再與位於堆疊中! ! ' ! ;一個已知的儲存總數相比。由於該定案隊列被包含於標記 i 1過程中,在,標記期間未被安置的可定案物件,只有那些在
第15頁 A d 07 7 7 i Λ、發明說明(12) j先前收集循環期間 I件都被安置在先前 I可得物件集合在清
I 丨都被考慮時,所有 丨被立即刪除。 已成為不可得的。 的標記階段時,會 除當中辨識。然而 待決物件都被視為 當'^非所有可定案物 有一個非空的定案器 二當所有可定案物件 热用儲存單元,且可 其物件狀態如圖3的範例’但加上三個新的整體變數: finaIiser...count 位於堆疊中的可定案物件總數的計 數 〜 ° found_count shortcut 在標記過程中被安置的定案器可得 物件數目 一個指示該清除過程應如何在該循 環動作的指標 I 其任務大致上如圖3的範例被實行1但有一些如圖4所述 |的例外。在突變案例中,如果一個被找到的物件具有F=定 i案器,則found 一count被增加。在清除期間,如果變數 | 11 shortcut"為真’則M=待決及可刪除的物件都在點丨)5被 I刪除;如果變數” shortcut"為真,則任何M=;可刪除的物件 |會被刪除,而任何.待決及定案器的物件會被放在定案 |器隊列當中,且在點D6被標記以便接著被刪除。定案是如 j前述被掌控,但是在執行過一物件的定案器脈絡之後,F :4*被設疋為無定案办’物件會被標記,且f 〇 u n d _ ^count 及 丨ί i na 1 i ser_count都會被減少。 I 一 I 應闲於該同一時間點的程序現在包括該計量變數的評 |估,在轉換Μ的意義及指定根物件之後,變數"s h 〇 r t c 11111
Λ40ΤΤΤ 五、發明說明(13) 會被設定成一個結果(【0讪(1_(:0111^=;^11£11丨361^(;〇1_丨1^)。 當該技術被如上所述應用於一件增無用儲存單元收集器 時,該ί i na 1 i se recount可能在標記期間改變。為使該計 數一致’ found —count不應包含在標記期間被找到的任何 物件,否則該比較會提供錯誤的結果。為了避免這個,在 標記期間如果遇到一個已標記為可定案物件, found一count可以減1。或者,可維持一第二個持續的計數 Drocessed—count以記錄在一清除當中遇到的已被標記定 架器的數目’在與f i n a i i s e — c 〇 u n t比較之前將 processed — count 從fOUnd_count 中扣除。 圖4顯示透過使用’’ shortcut"變數做额外重新宣告的最 佳定案模型:以下會有說明,與圖3的技術相較,圖4的技 術在沒有定案器被使用時保證一個循環的重新宣告,且對 所有無定案器可得資料物件有最大兩個循環的重新宣告。 包含許多可定案物件的資料結構變成不可得的一般很少 見的事件中,該循環中被偵測到的可定案物件數由於 過程與掃描過程的競赛狀況而變得不確定。例如,物 被清除找到,加入定案隊列,並且被標記:η來考另—個 在此循環也是不可得的可定案物件F2。根據該標記法 的订為,F 2可能被標記在第—個清除獲得之前或之後 得。一個可能的解決方法是將物件在被標記後放置在 :豕=’如此無論一物件被清除或標記過程所發現,都會有 33同的動作。 《有 -種積極,的標記演算法會傾向避免在一相連資料結構中
440777 I τκ' (Η) I的致选階可定案物件,在相同的循碟當中進入隊列戍為該 ;結構的較高位階、導致定案_的半拓楞順序。這樣通常有 !助於t新循環率,因為--資料結構中的較高階物件將會有 i比較泜階勒件大的可得集合,且將因此傾向使更多物件不 I能被剜除^ ' 反之,在清除期間被放置的可定案物件之標記可能延遲 j至該清除完成,如此所有新的不可得可定案物件將被加入 !該定亲隊列。這樣有助於可預測性,並旦可加強重新宣告 •1 j期間的足義:當沒有任何不可得的可定索物件在先前標記 j階段被偵测時,保證至少有一次的循環d I 雖然主要定義於一軟體瀏覽器的實行,那些熟悉此項技| !藝的讀者應該相當清楚5上述的多項功能特色也可以在硬 i ! | Μ或軟硬體組合當中被實行的相當好。 | 丨 由本發明的閱讀,對於熟悉此項技藝的人士來說,其他i \ ! j的改良是明顯的。這些改良可能會牽涉到影像處理及/或 j !資料網路作業裝置及其原件的設計 '製造及使用當中已為 I人知的其他特色,則可以被用以代替或加入本文已經描述 j的特色當中。 • ; II 画_圓 ! 1 II 11! 0:\5ο\5^)ϋ3.ρΐϋ 第18頁
Claims (1)
- ^40*7 7 7 8V.… 六、請_:?-刊範:¾ 一粒無用儲存單元收集及標記方法,以穿過山一相鄰 堆1記憶體中的辨識指標所迷結的資料物件所形成的t料 結構,該方法包含下列步]潭: a)對一還定之根物件,穿過其帶有的指標,以決定 連結於該根物件的物件; b )穿過指標以決定連結到由前一步騾所辨識Hi的物 件之進一步物件; 其中步驟b)被重複直到從中辨識到的物件被歸類為已 標記之後沒有進一步的指標等待被穿過,其中該堆疊資料 物伶當中的一些帶有定案器,且更有些物件被辨識為可以 被那些定案器所取得,該物件被歸類為待決,特色是一個 第一計數被維持為帶有定索器的堆疊物件數7且對每--穿 過,如果被偵測到的帶有定案器之物件總數比該維持住的 第一計數要少,一個進一步的清除會被執行以對剩餘的可 定案物件辨識及標記根物件,同時如果被偵渕到與被維持 的總數相符,那些被歸類為待決的物件不需進一步的清除 被執行便立即被t新歸類為可刪除。 2. 如申請專利範園第1項之方法,其t帶有定案器的堆 费資料物件包括一锢相對的旗標,該旗標當被設定時’防 止該物件被重新歸類為可删除。 3. 如申請專利範園第2項之方法,其中該被維持的第一 計數在該旗標被設定時增加,在其被移除是減少。 4. 如申請.專利範圍第1項之方法' 其中帶有定案器且被9440777 鉍或岛诗決的堆要货料物件,當於穿過期間被安丑時’被 故見於一定索隊列以執行其定t器: 5.如中請專利ft ®第1項之方法,其中一龆第二計數被 維持為在一清除期間被偵測到的標記為可定索物件的持續 數字旦在該清除結東時,在與該第一計數值比較之前,該 第二計數被由偵測到之帶有定案器的物件總數扣除1 g . —種t料處理裝置,包含一個資料處理器,與一含有 許多以辨識指標與資料結構連結J1在一相鄰記憶體區域的 堆要中的資料物件之隨機存取記憶體連接,該裝置進一步 包含第一個額外儲存方式,對每一堆疊物伶包合有一個一 组預定標記類別的辨識器,且該處理器被配置以對儲存的 該群贲料物件做出下列動作: a )對於一選定的根物件’穿過其帶有的指標以決定 遲結於該根物沣的物件: b )穿過來έ前而的指標以決定連結到那些被辨識出 的场件之進--步物件; 其中該處理器重複步驟b )直到從中辨識到的物件被歸 强.¾已本汽1己之仗沒另遲一步的指栋令符被牙站’其γ政作 ί:資料物件當中的一些帶有定案器,且更t些妫件被辨識 為3以被孙些定索器所奴得1該物件被歸類為付決1特 是該處理器被連接到維持一個第一計數為帶有定案器的堆 .#物件數的裝置,且被安排成對每一穿過,如果被偵测到 的帶有定滾器之物f卜总數比該維持住的第一計數要少’該 4逑器被规格化以執行一個進一步的清除,以對剩餘的可 1TV.1J_J — - .si 1-1 1' LJϋ i^i r j^^l--- I .iii Λ /XMB!··癌一—ϋiiIϋ o 2 4 4 0T 7 7 定案物伴辩識及標記根物件,同時如果被偵測到與被維持 的總數相符,該處理器被安摒成將那些被歸類為待決的物 萍不需進一步的清除便立即被重新歸類為可刪除。 7.如申請專利範園笫6項之裝置,其中該處理器被安排 來剜除那些被由待決重新歸類的物件,同時也刪除那些已 經被Μ類為可刪除的物件。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB9813266.5A GB9813266D0 (en) | 1998-06-20 | 1998-06-20 | Stored data object marking for garbage collectors |
Publications (1)
Publication Number | Publication Date |
---|---|
TW440777B true TW440777B (en) | 2001-06-16 |
Family
ID=10834052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW088110319A TW440777B (en) | 1998-06-20 | 1999-06-21 | Stored data object marking for garbage collectors |
Country Status (8)
Country | Link |
---|---|
US (1) | US6393439B1 (zh) |
EP (1) | EP1036355B1 (zh) |
JP (1) | JP2002519750A (zh) |
KR (1) | KR20010023063A (zh) |
DE (1) | DE69923657T8 (zh) |
GB (1) | GB9813266D0 (zh) |
TW (1) | TW440777B (zh) |
WO (1) | WO1999067697A2 (zh) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7096238B2 (en) | 1999-08-19 | 2006-08-22 | Sun Microsystems, Inc. | Dynamic feedback for determining collection-set size |
US6493730B1 (en) * | 2000-10-10 | 2002-12-10 | Sun Microsystems, Inc. | Efficient object faulting with generational garbage collection |
US6999979B2 (en) * | 2002-11-05 | 2006-02-14 | Sun Microsystems, Inc. | Efficient encoding of references into a collection set |
US7035884B2 (en) * | 2002-11-05 | 2006-04-25 | Sun Microsystems, Inc. | Placement of allocation trains in the train algorithm |
US7539713B2 (en) | 2002-11-05 | 2009-05-26 | Sun Microsystems, Inc. | Allocation of likely popular objects in the train algorithm |
US7188129B2 (en) | 2002-11-15 | 2007-03-06 | Sun Microsystems, Inc. | Merging trains in a collector based on the train algorithm |
US7209935B2 (en) * | 2002-11-27 | 2007-04-24 | Sun Microsystems, Inc. | Avoiding remembered-set maintenance overhead for memory segments known to be in a collection set |
US7085790B2 (en) * | 2002-12-06 | 2006-08-01 | Sun Microsystems, Inc. | Advancing cars in trains managed by a collector based on the train algorithm |
US7143124B2 (en) | 2002-12-06 | 2006-11-28 | Sun Microsystems, Inc. | Detection of dead regions during incremental collection |
US7069280B2 (en) * | 2002-12-06 | 2006-06-27 | Sun Microsystems, Inc. | Collection-tick mechanism for a collector based on the train algorithm |
US7024437B2 (en) * | 2002-12-06 | 2006-04-04 | Sun Microsystems, Inc. | Better placement of objects reachable from special objects during collection based on the train algorithm |
US7031990B2 (en) | 2002-12-06 | 2006-04-18 | Sun Microsystems, Inc. | Combining external and intragenerational reference-processing in a garbage collector based on the train algorithm |
US7146390B2 (en) | 2003-02-24 | 2006-12-05 | Sun Microsystems, Inc. | Staging the processing of remembered-set entries as part of collection based on the train algorithm |
US7069281B2 (en) | 2003-02-24 | 2006-06-27 | Sun Microsystems, Inc. | Efficient collocation of evacuated objects in a copying garbage collector using variably filled local allocation buffers |
US7062519B2 (en) * | 2003-02-27 | 2006-06-13 | Sun Microsystems, Inc. | Incremental scanning of enormous objects to improve scheduling and pause-time behavior of garbage collection |
US7096329B2 (en) * | 2003-02-27 | 2006-08-22 | Sun Microsystems, Inc. | Better placement of objects promoted into a generation managed by the train algorithm |
US20040186863A1 (en) * | 2003-03-21 | 2004-09-23 | Garthwaite Alexander T. | Elision of write barriers for stores whose values are in close proximity |
US7827212B2 (en) * | 2003-05-22 | 2010-11-02 | International Business Machines Corporation | System and method for improved clearing of JAVA object's variables |
US7089272B1 (en) | 2003-06-18 | 2006-08-08 | Sun Microsystems, Inc. | Specializing write-barriers for objects in a garbage collected heap |
US7149762B1 (en) | 2003-08-20 | 2006-12-12 | Sun Microsystems, Inc. | Handling futile collections in the train algorithm through selective extension of the collection set |
US7404182B1 (en) | 2003-10-03 | 2008-07-22 | Sun Microsystems, Inc. | Deferring and combining write barriers for a garbage-collected heap |
US7340494B1 (en) * | 2004-03-12 | 2008-03-04 | Sun Microsystems, Inc. | Garbage-first garbage collection |
US7636745B1 (en) * | 2004-03-12 | 2009-12-22 | Sun Microsystems, Inc. | Concurrent-marking-initiation heuristic |
US7620943B1 (en) | 2004-06-30 | 2009-11-17 | Sun Microsystems, Inc. | Using class properties to segregate objects in a generation managed by the train algorithm |
US7676801B1 (en) | 2004-08-31 | 2010-03-09 | Sun Microsystems, Inc. | Scanning of evacuated objects in a generation managed by the train algorithm |
US7321909B1 (en) | 2004-12-23 | 2008-01-22 | Sun Microsystems, Inc. | Method and apparatus for forwarding references to objects concurrently with space-incremental garbage collection |
US7650371B2 (en) * | 2006-12-14 | 2010-01-19 | Microsoft Corporation | Finalizable object usage in software transactions |
US7783681B1 (en) * | 2006-12-15 | 2010-08-24 | Oracle America, Inc. | Method and system for pre-marking objects for concurrent garbage collection |
US20080243970A1 (en) * | 2007-03-30 | 2008-10-02 | Sap Ag | Method and system for providing loitering trace in virtual machines |
US7904493B2 (en) * | 2007-03-30 | 2011-03-08 | Sap Ag | Method and system for object age detection in garbage collection heaps |
US8336033B2 (en) * | 2007-03-30 | 2012-12-18 | Sap Ag | Method and system for generating a hierarchical tree representing stack traces |
US8667471B2 (en) | 2007-03-30 | 2014-03-04 | Sap Ag | Method and system for customizing profiling sessions |
US8522209B2 (en) * | 2007-03-30 | 2013-08-27 | Sap Ag | Method and system for integrating profiling and debugging |
US8601469B2 (en) * | 2007-03-30 | 2013-12-03 | Sap Ag | Method and system for customizing allocation statistics |
US8356286B2 (en) * | 2007-03-30 | 2013-01-15 | Sap Ag | Method and system for providing on-demand profiling infrastructure for profiling at virtual machines |
US8073882B2 (en) | 2007-07-11 | 2011-12-06 | Mats Stefan Persson | Method, system and computer-readable media for managing software object handles in a dual threaded environment |
US7987215B2 (en) * | 2008-04-22 | 2011-07-26 | Microsoft Corporation | Efficiently marking objects with large reference sets |
JP2009266113A (ja) * | 2008-04-28 | 2009-11-12 | Internatl Business Mach Corp <Ibm> | メモリ管理方法およびシステム |
US8522216B2 (en) | 2010-05-04 | 2013-08-27 | Oracle International Corporation | Memory leak detection |
US8504878B2 (en) * | 2010-05-04 | 2013-08-06 | Oracle International Corporation | Statistical analysis of heap dynamics for memory leak investigations |
US8473529B2 (en) | 2011-03-14 | 2013-06-25 | International Business Machines Corporation | Single pass marking of finalizable objects |
US9053017B2 (en) | 2011-09-09 | 2015-06-09 | Microsoft Technology Licensing, Llc | Managing object lifetime in a cyclic graph |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5088036A (en) * | 1989-01-17 | 1992-02-11 | Digital Equipment Corporation | Real time, concurrent garbage collection system and method |
US5321834A (en) * | 1989-11-28 | 1994-06-14 | Xerox Corporation | Method and system for reclaiming unreferenced computer memory space |
US5485613A (en) * | 1991-08-27 | 1996-01-16 | At&T Corp. | Method for automatic memory reclamation for object-oriented systems with real-time constraints |
US5392432A (en) * | 1991-08-27 | 1995-02-21 | At&T Corp. | Method for automatic system resource reclamation for object-oriented systems with real-time constraints |
US5274804A (en) * | 1991-11-20 | 1993-12-28 | Parcplace Systems | Automatic storage-reclamation postmortem finalization process |
US5784699A (en) * | 1996-05-24 | 1998-07-21 | Oracle Corporation | Dynamic memory allocation in a computer using a bit map index |
US6055612A (en) * | 1997-07-11 | 2000-04-25 | Geodesic Systems, Inc. | Incremental garbage collector with decommit barrier |
US6047295A (en) * | 1998-05-05 | 2000-04-04 | International Business Machines Corporation | Computer system, program product and method of managing weak references with a concurrent mark sweep collector |
-
1998
- 1998-06-20 GB GBGB9813266.5A patent/GB9813266D0/en not_active Ceased
-
1999
- 1999-06-10 KR KR1020007001680A patent/KR20010023063A/ko not_active Application Discontinuation
- 1999-06-10 EP EP99923792A patent/EP1036355B1/en not_active Expired - Lifetime
- 1999-06-10 DE DE69923657T patent/DE69923657T8/de not_active Expired - Fee Related
- 1999-06-10 JP JP2000556294A patent/JP2002519750A/ja active Pending
- 1999-06-10 WO PCT/IB1999/001088 patent/WO1999067697A2/en not_active Application Discontinuation
- 1999-06-21 US US09/337,845 patent/US6393439B1/en not_active Expired - Lifetime
- 1999-06-21 TW TW088110319A patent/TW440777B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR20010023063A (ko) | 2001-03-26 |
JP2002519750A (ja) | 2002-07-02 |
WO1999067697A2 (en) | 1999-12-29 |
WO1999067697A3 (en) | 2000-04-13 |
EP1036355A2 (en) | 2000-09-20 |
US6393439B1 (en) | 2002-05-21 |
EP1036355B1 (en) | 2005-02-09 |
DE69923657T2 (de) | 2006-03-23 |
DE69923657D1 (de) | 2005-03-17 |
DE69923657T8 (de) | 2006-06-08 |
GB9813266D0 (en) | 1998-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW440777B (en) | Stored data object marking for garbage collectors | |
KR100715638B1 (ko) | 메모리 재사용 방법 | |
US8326894B2 (en) | Method and system to space-efficiently track memory access of object-oriented language in presence of garbage collection | |
JP4248025B2 (ja) | 追跡型ゴミ集め用のスペースの限られたマーク付け構造 | |
JP4812997B2 (ja) | メモリ管理によって参照の局所性を改善するための方法および装置 | |
JP4177960B2 (ja) | 増分不要情報収集 | |
US20020156825A1 (en) | Organization and visualization of performance data in selected display modes | |
TW520472B (en) | Finalisation in incremental garbage collectors | |
WO2009002723A1 (en) | Concurrent exception handling | |
CN106339496A (zh) | 用于对照片进行清理的方法和装置 | |
US6735761B1 (en) | Compile method frame detection method and device code discarding method and computer | |
US8176286B2 (en) | Memory recycling in computer systems | |
US7412694B2 (en) | Detecting program phases with periodic call-stack sampling during garbage collection | |
KR100722709B1 (ko) | 메모리 회수 방법 및 장치 | |
US10031840B2 (en) | Method of ascertaining primary cause of memory consumption in program, and computer system and computer program for the same | |
US20100049747A1 (en) | Apparatus and method for storing log in a thread oriented logging system | |
JP4959781B2 (ja) | オブジェクト生成地点記録方法およびプログラム | |
Detlefs et al. | A generational mostly-concurrent garbage collector | |
FR2787901A1 (fr) | Organisation memoire par zones physiques | |
Briggs et al. | Cold object identification in the Java virtual machine | |
CN116738104A (zh) | 网页前端的操作回溯方法、装置、设备及存储介质 | |
Hampton | Using contaminated garbage collection and reference counting garbage collection to provide automatic storage reclamation for real-time systems | |
Dan Lo et al. | A High Performance Garbage Collector for Java | |
JPS63131247A (ja) | ガ−ベジコレクシヨン方式 | |
JPH02273828A (ja) | 内部ソート方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent | ||
MM4A | Annulment or lapse of patent due to non-payment of fees |