JP2001209572A - ガベージコレクション装置および方法 - Google Patents

ガベージコレクション装置および方法

Info

Publication number
JP2001209572A
JP2001209572A JP2000020844A JP2000020844A JP2001209572A JP 2001209572 A JP2001209572 A JP 2001209572A JP 2000020844 A JP2000020844 A JP 2000020844A JP 2000020844 A JP2000020844 A JP 2000020844A JP 2001209572 A JP2001209572 A JP 2001209572A
Authority
JP
Japan
Prior art keywords
cell
cell block
address
type
tray
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2000020844A
Other languages
English (en)
Other versions
JP4050855B2 (ja
Inventor
Takuji Kawamoto
琢二 川本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2000020844A priority Critical patent/JP4050855B2/ja
Priority to US09/772,257 priority patent/US6766336B2/en
Publication of JP2001209572A publication Critical patent/JP2001209572A/ja
Application granted granted Critical
Publication of JP4050855B2 publication Critical patent/JP4050855B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • G06F2212/702Conservative garbage collection
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation
    • Y10S707/99957Garbage collection

Abstract

(57)【要約】 【課題】 アプリケーションの実行にかかる負荷をより
小さくしつつ、高速なコンパクションを行うことのでき
るガベージコレクション装置を提供する。 【解決手段】 本ガベージコレクタは、リファレンスに
特定され数値またはハンドルを保持するセルからなる複
数のセルブロックのうち、ハンドルにより特定されリフ
ァレンスを保持するトレイを介して他のセルブロックへ
の参照を繰り返すことにより、ルートセルブロックから
たどることのできるセルブロック以外の未使用セルブロ
ックを特定し、特定された未使用セルブロックを未使用
セルエリアに統合する。本ガベージコレクタでの未使用
セルブロックの特定は、セルの保持する値が有効ハンド
ルの取り得る値であり(S41にてYes)かつこのハン
ドルによって特定されるトレイの値がNULLでない
(S42にてNo)ときに限ってセルの保持する値をハン
ドルであると推定することに基づいて行われる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、メモリ上の複数の
セルを管理するメモリ管理装置に関するものであり、特
に、トレイを用いつつセルに対するスカビンジ処理およ
びコンパクション処理を行うガベージコレクション装置
に関する。
【0002】
【従来の技術】従来より、アプリケーションにて用いら
れるデータに対する、メモリ上の領域の確保および開放
を動的に管理する動的記憶管理の技術が知られている。
実際、このような動的記憶管理は、アプリケーション中
の命令により使用する(データに対応する)領域の確保
および不要となった領域の開放を明示的に行う方法と、
アプリケーション中の命令により領域の確保を明示的に
行うものの、(不要となった領域の開放を明示的に行う
ことなく)所定の管理部により領域が不要になったこと
を自動的に判断させこれらの領域を開放の上回収する方
法とのいずれかが用いられることによって行われてい
る。
【0003】自動的にメモリ上の領域を回収する後者の
方法は、ガベージコレクションと呼ばれており、動的な
記憶領域を多く必要とするアプリケーションのうち、明
示的な開放によることが不利または事実上不可能なもの
に適用されている。ところが、これらのようなガベージ
コレクションを実装するためには、アプリケーションと
(ガベージコレクションを行う処理部である)ガベージ
コレクタとの間での、後述するようなリファレンスフラ
グを用いての綿密な情報交換を行うための機構を要し、
不要になった領域を明示的に開放する動的記憶管理を利
用している既存のアプリケーションを変更してガベージ
コレクションのための機構を組み込むことは非常な困難
を伴うものといえる。
【0004】既存のアプリケーションに、より少ない労
力で組み込むことのできるガベージコレクタとして、Bo
ehmらは、アプリケーションとの情報交換を要しないコ
ンサバティーブ・ガベージ・コレクタ(保守的ガベージ
コレクタ)を提案している。(次の2つの文献には、こ
の保守的ガベージコレクタに関するより詳細な記述があ
る。文献1 Hans-Juergen Boehm and Mark Weiser, Ga
rbage collection inan uncooperative environment So
ftware Practice and Experience Vol.18(9), Sep. 19
88, P. 807〜820 文献2 小野 寺民 他 保守的ごみ集
め(コンサバティーブ・ガベージ・コレクタ法) 情報
処理 Vol.3) また、これらとは別に、ガベージコレクションをより高
速に行うため、ガベージコレクションとして行われる2
つの処理のうちの1つであるコンパクション処理(他の1
つの処理はスカビンジ処理)にてハンドルと呼ばれる間
接アドレッシングを用いる手法が存在する。
【0005】以下では、まず、図27〜図30を用いてガベ
ージコレクタにより行われる処理の概要について説明す
る。続いて、このようなガベージコレクタを実装する例
として、リファレンスフラグを用いてアプリケーション
との情報交換を行う第1の従来例のガベージコレクタを
図31〜図37を用いて説明し、リファレンスフラグおよび
ハンドルを用いる第2の従来例のガベージコレクタを図3
8〜図42を用いて説明する。この後、保守的ガベージコ
レクションを実装する第3の従来例のガベージコレクタ
を図43〜図46を用いて説明する。
【0006】まず、ガベージコレクタにより行われる処
理の概要について説明する。図27はガベージコレクタが
用いるヒープ領域の構成を説明するための図であり、図
28はヒープ領域を構成するセルに格納される内容(値、
データ)の例を示す図である。図28(a)は図27に示す
ヒープ領域内のセルの内容の例を示しており、図28
(b)は特に図28(a)に示すセルに保持されたリファ
レンスによる参照を示している。
【0007】図27に示すように、ガベージコレクタによ
り管理されるヒープ領域にはセルの配列が構成され、セ
ルは数値またはリファレンスを保持する。リファレンス
には、図28(a)に示すように、セルのアドレスを示す
有効リファレンスと、セルを指し示さないNULLリフ
ァレンスとの2種類がある。たとえば、有効リファレン
ス0のセルは、有効リファレンス7を保持し、有効リファ
レンス7のセルを指すこととなっており、図28(b)で
の有効リファレンス0のセルから有効リファレンス7のセ
ルへの矢印はこれを示している。(NULLリファレン
スからは矢印が出ておらず、このことはNULLリファ
レンスがセルを指し示さないことに対応する。) これらのようなセルからは次のような部分配列がセルブ
ロックとして構成される。図29は、複数のセルから構成
されるセルブロックの例を示す図である。図29(a)は
図27に示すセルに値が代入されることにより構成される
セルブロックの例を示しており、図29(b)は図29
(a)に示すセルブロック間の参照関係の例を示してい
る。
【0008】図29(a)に示すように、セルブロックは
ヒープ領域内に複数存在し得るが、同一のセルが複数の
セルブロックに同時に属することはない。ヒープ領域の
セルのうちセルブロックのいずれにも属しないセルを未
使用セルと呼び、複数の連続する未使用セルからなる領
域全体を未使用セルエリアと呼ぶ。また、ヒープ領域に
確保される特定の1つのセルブロックをルートセルブロ
ックと呼ぶ。ここでは、有効リファレンス14以降のセル
の領域が未使用セルエリアであり、有効リファレンス0
のセルがルートセルブロックである。
【0009】ヒープ領域内のセルブロックAとセルブロ
ックBについて、セルブロックAに属するいずれかのセ
ルに、セルブロックBの先頭のセルを指す有効リファレ
ンスが設定されているとき、”セルブロックAはセルブ
ロックBを参照している”という。ヒープ領域上にn個
のセルブロックX1〜Xnがあり、セルブロックXi(i
=1,2,3,・・・,n―1)がセルブロックXi+1をそ
れぞれ参照しているとき、”セルブロックX1からセル
ブロックXnをたどることができる”という。
【0010】図29(b)では、ルートセルブロックはセ
ルブロック4を参照しており、セルブロック3はセルブロ
ック2を参照しており、セルブロック4はセルブロック2
およびセルブロック5を参照している。ルートセルブロ
ックからは、セルブロック4、セルブロック2およびセル
ブロック5をたどることができ、セルブロック4からは、
セルブロック2およびセルブロック5をたどることができ
る。また、セルブロック3からセルブロック2をたどるこ
とができる。
【0011】新たな記憶領域を必要とするとき、アプリ
ケーションは、未使用セルエリアのうちの必要なサイズ
分のセルに対してセルブロックを割り付け(後述のよう
にガベージコレクタがこの割り付けを行うものとするこ
とができる)ルートブロックからたどることができる状
態にし、これにより、”セルブロックを確保する”。ア
プリケーションは、セルブロックを確保して、セルブロ
ック内で数値を記憶したり他のセルブロックを参照した
りすることにより、複雑なデータ構造のデータを記憶し
管理することができることとなる。ルートセルブロック
からたどることのできないセルブロックに対しては、ア
プリケーションはアクセスすることができない。
【0012】アプリケーションが管理するデータのデー
タ構造が変化すると、セルブロック間の参照関係が変化
し、その結果ルートセルブロックからたどることができ
ないセルブロックが増加する。これらのようなセルブロ
ックにより未使用セルエリアが小さくなってくると、ア
プリケーションが要求するサイズ分のセルブロックが確
保できなくなってくる。
【0013】ガベージコレクタは、このような状態のヒ
ープ領域に対しスカビンジ処理とコンパクション処理と
からなるガベージコレクションを行い、これにより、ヒ
ープ領域を、必要なサイズ分のセルブロックをアプリケ
ーションが確保できる状態にする。ガベージコレクタ
は、スカビンジ処理では、ルートセルブロックからたど
ることのできないセルブロックのいくつかを開放し、開
放されたセルブロックを未使用セルエリアとし、また、
コンパクション処理では、セルが複数のセルブロックに
属することなく、セルブロック間の参照関係が保たれつ
つ、かつ、セルブロック内の数値が変更されないよう
に、セルブロックをヒープ領域内で移動させ、(ルート
セルブロックからたどることのできないセルブロックに
より)分断されていた未使用セルエリアを連続させる。
【0014】図30は、図29(b)に示す状態のヒープ領
域に対するガベージコレクションを説明するための図で
ある。図30(a)は図29(b)に示す状態のヒープ領域
に対するスカビンジ処理の結果を示しており、図30
(b)は図30(a)に示す状態のヒープ領域に対するコ
ンパクション処理の結果を示している。図29(b)に示
す状態のヒープ領域に対してスカビンジ処理が行われる
と、図30(a)のように、ルートセルブロックからたど
ることのできないセルブロック1およびセルブロック3は
開放されて未使用セルエリアとなる。さらに、この図30
(a)に示す状態のヒープ領域に対してコンパクション
処理が行われると、図30(b)のように、ルートセルブ
ロックからセルブロック4への参照ならびにセルブロッ
ク4からセルブロック2およびセルブロック5への参照が
保たれたまま、開放されたセルブロック1のサイズ分、
セルブロック2が前方に(有効リファレンスの値が小さ
いほうに)移動され、また、開放されたセルブロック1
およびセルブロック3のサイズ分、セルブロック4および
セルブロック5が前方に移動されて、セルブロック1およ
びセルブロック3に対応する未使用セルエリアが、(有
効リファレンス14以降の)後方の未使用セルエリアと統
合されることとなる。
【0015】これらのように、ガベージコレクタは、ア
プリケーションの使用に伴って変化するヒープ領域の状
態を管理し、必要に応じてセルブロックのいくつかを開
放し未使用セルエリアを統合して1つの連続する領域と
することにより、ヒープ領域を、アプリケーションから
要求されるサイズ分の、連続する領域を確保できる状態
にするものであるが、先述のようにその実装には様々な
ものが知られており、以下では実装に際しての特徴を中
心に第1の従来例のガベージコレクタ〜第3の従来例のガ
ベージコレクタについて順に説明する。
【0016】図31は第1の従来例のガベージコレクタが
用いるヒープ領域の構成を説明するための図であり、図
32はヒープ領域を構成するセルに格納される内容の例お
よびこれらのセル間の参照関係を示す図である。図31に
示すように、第1の従来例のガベージコレクタは、リフ
ァレンスフラグを用いるものであり、各セルにはリファ
レンスフラグが対応付けられている。このリファレンス
フラグには、対応付けられたセルに数値が保持されてい
るとき0が設定され、対応付けられたセルにリファレン
スが保持されているとき1が設定される。(リファレン
スフラグを配列であるセルの要素数と等しい要素数の配
列としてヒープ領域内にて確保するものとし、配列のオ
フセットを有効リファレンスに対応させるものとするこ
とができる。) 図32に示すヒープ領域は、図28(b)と同一のセル内容
を保持するものであるが、たとえば、リファレンスが保
持されている、有効リファレンス4、有効リファレンス5
のセルに対応するリファレンスフラグには1が設定され
ており、数値が保持されている、有効リファレンス9、
有効リファレンス10のセルに対応するリファレンスフラ
グには0が設定されている。
【0017】図33は、第1の従来例のガベージコレクタ
が用いるヒープ領域にて割り当てられるセルブロックの
例およびこれらのセルブロック間の参照関係を示す図で
ある。また、図34は、図33に示す状態のヒープ領域に対
するガベージコレクションを説明するための図である。
図34(a)は図33に示す状態のヒープ領域に対するスカ
ビンジ処理の結果を示しており、図34(b)は図34
(a)に示す状態のヒープ領域に対するコンパクション
処理の結果を示している。
【0018】図33に示すセルブロックの構成は、図29
(b)に示すセルブロックの構成と同様であり、図34
(a)に示すスカビンジ処理の結果、図34(b)に示す
コンパクション処理の結果は、それぞれ、図30(a)に
示すスカビンジ処理の結果、図30(b)コンパクション
処理の結果と同様である。特に、第1の従来例のガベー
ジコレクタは、リファレンスフラグを用いつつ、ヒープ
領域に対するスカビンジ処理およびコンパクション処理
を行うものであるが、次にこれらの処理の手順を説明す
る。
【0019】図35は第1の従来例のガベージコレクタが
行うスカビンジ処理Aの手順を示すフローチャートであ
り、図36および図37は第1の従来例のガベージコレクタ
が行うコンパクション処理Aの手順を示すフローチャー
トである。ここでは、使用中フラグが、ルートセルブロ
ックからたどることができるか否かを示すために各セル
ブロックに対して設定され、スカビンジ処理を終了した
ときに使用中フラグが1であるセルブロックは、ルート
セルブロックからたどることができることを示すものと
する。
【0020】スカビンジ処理Aでは、まず、セルブロッ
クx(x=1〜M(Mはセルブロックの個数))の使用
中フラグFxに対して0が代入され(S101)、すべての
セルブロックに対する使用中フラグが0に初期化され、
ルートセルブロックの内容(リファレンス)がスタック
にプッシュされる(S102)。スタックに積まれたリフ
ァレンスはポップされ(S103)、ポップされたリファ
レンスが指すセルブロックxの先頭セルが対象セルに設
定され(S104)、セルブロックxに対する使用中フラ
グFxに1が代入される(S105)。
【0021】続いて、対象セルのリファレンスフラグは
1であるか否かが判定され(S106)、対象セルのリファ
レンスフラグが1であれば(S106にてYes)、対象セ
ルの内容であるリファレンスがスタックにプッシュされ
(S107)S108へと処理が進められ、対象セルのリファ
レンスフラグが1でなければ(S106にてNo)、S107
での処理は行われることなくS108へと処理が進められ
る。
【0022】S108では同一のセルブロック内で対象セ
ルに後続するセルがあるか否かが判定され、後続するセ
ルがあれば(S108にてYes)後続するセルが対象セ
ルとされて(S109)S106からの処理が繰り返され、後
続するセルがなければ(S108にてNo)続いてスタッ
クが空であるか否かが判定される(S110)。スタック
が空でなければ(S110にてNo)、S103からの処理が
繰り返され、スタックが空であれば(S110にてYe
s)、本処理は終了する。
【0023】これらのような第1の従来例のガベージコ
レクタでのスカビンジ処理Aによると、リファレンスフ
ラグが用いられセルの内容がリファレンスであるか否か
が判定されつつ、ルートセルブロックからたどることの
できるセルブロックが特定され、これらの特定されたセ
ルブロックの使用中フラグが1とされ、これら以外のセ
ルブロックが未使用セルエリアとして開放されることと
なる。
【0024】このようなスカビンジ処理Aに続くコンパ
クション処理Aでは、まず、セルブロックを特定するた
めのxに1が代入され、セルブロックxに対してコンパ
クション後のリファレンス値を示すRxを算出するため
の、リファレンス値Wに0が代入される(S201)。セル
ブロックxの使用中フラグは1であるか否かが判定され
(S202)、この使用中フラグが1であれば(S202にて
Yes)、セルブロックxに対するリファレンス値Rx
にリファレンス値Wが代入されて(S203)、コンパク
ション後のセルブロックxの先頭セルのリファレンス値
xが確定され、リファレンス値Wにセルブロックxの
セル数Sxが加えられ(S204)、S205へと処理が進め
られる。使用中フラグが1でなければ(S202にてN
o)、S203、S204での処理は行われることなくS205
へと処理が進められる。
【0025】S205ではxがMに等しいか否かが判定さ
れ、xがMに等しくなければ(S205にてNo)xに1が
加えられて(S206)S202からの処理が繰り返され、x
がMに等しければ(S205にてYes)S207へと処理が
進められる。(これらS201〜S206での処理により、ス
カビンジ処理Aで設定された使用中フラグが用いられつ
つ、ヒープ領域内のすべてのセルブロックに対して、コ
ンパクション後のリファレンス値が確定されることとな
る。) S207ではxに1が代入され、セルブロックxの使用中フ
ラグFxが1であるか否かが判定される(S208)。使用
中フラグFxが1であれば(S208にてYes)、yに1が
代入されて(S209)、セルブロックyの使用中フラグ
yが1であるか否かが判定される(S210)。
【0026】セルブロックyの使用中フラグFyが1であ
れば(S210にてYes)セルブロックyの先頭セルは
対象セルに設定され(S211)、対象セルのリファレン
スフラグが1でありかつ対象セルの内容がセルブロック
xへのリファレンスである場合(S212にてYesかつ
S213にてYes)、対象セルにリファレンス値Rxが代
入され(S214)S215へと処理が進められ、これら以外
の場合には(S212にてNoまたはS213にてNo)S21
4での処理は行われることなくS215へと処理が進められ
る。また、セルブックyの使用中フラグFyが1でなけれ
ば(S210にてNo)S211〜S214での処理は行われる
ことなくS215へと処理が進められる。
【0027】S215では同一のセルブロック内で対象セ
ルに後続するセルがあるか否かが判定され、後続するセ
ルがあれば(S215にてYes)後続するセルが対象セ
ルとされて(S216)S211からの処理が繰り返され、後
続するセルがなければ(S215にてNo)yがMに等し
いか否かが判定される(S217)。yがMに等しくなけ
れば(S217にてNo)yに1が加えられて(S218)S2
10からの処理が繰り返され、yがMに等しければ(S21
7にてYes)S219へと処理が進められる。
【0028】使用中フラグFxが1でなければ(S208に
てNo)、S209〜S218での処理は行われることなくS
219へと処理が進められる。S219ではxがMに等しいか
否かが判定され、xがMに等しくなければ(S219にて
No)xに1が加えられて(S220)S208からの処理が
繰り返され、xがMに等しければ(S219にてYes)
S221へと処理が進められる。(これらS207〜S220で
の処理により、リファレンスフラグが用いられつつ、使
用中フラグが1であるセルブロックに含まれるセルのリ
ファレンス値が、コンパクション前後で参照関係が保た
れるよう、先に確定されたコンパクション後のリファレ
ンス値に更新されることとなる。ここでは、特に、ヒー
プ領域内の使用中のセルブロックxが検索され、セルブ
ロックxを指しているセルブロックy中のセルにコンパ
クション後のリファレンス値が代入されることにより、
上記のリファレンス値の更新が行われている。) S221ではxに1が代入され、セルブロックxの使用中フ
ラグFxが1であるか否かが判定される(S222)。この
使用中フラグFxが1であれば(S222にてYes)セル
ブロックxの内容が先のようにして算出されたリファレ
ンス値Rxが示すセルからコピーされ(S223)S224へ
と処理が進められ、使用中フラグFxが1でなければ(S
222にてNo)S223での処理は行われることなくS224
へと処理が進められる。
【0029】S224ではxがMに等しいか否かが判定さ
れ、xがMに等しくなければ(S224にてNo)xに1が
加えられて(S225)S222からの処理が繰り返され、x
がMに等しければ(S224にてYes)リファレンス値
Wから以降が未使用セルブロックとされ(S226)、本
処理は終了する。(これらS221〜S226での処理によ
り、先に確定されたセルブロックごとのコンパクション
後のリファレンス値に基づいて、実際にセルブロックが
移動されることとなる。) これらのように、コンパクション処理Aでは、まず、ス
カビンジ処理Aで設定された使用中フラグが用いられつ
つ、ヒープ領域内のすべてのセルブロックに対して、コ
ンパクション後のリファレンス値が確定され(S201〜
S206での処理)、リファレンスフラグが用いられつ
つ、使用中フラグが1であるセルブロックに含まれるセ
ルのリファレンス値が、コンパクション前後でセルブロ
ック間の参照関係が保たれるよう、先に確定されたコン
パクション後のリファレンス値に更新され(S207〜S2
20での処理)、その後、コンパクション後のリファレン
ス値に基づいて実際にセルブロックが移動される(S22
1〜S226での処理)。
【0030】以上のように、第1の従来例のガベージコ
レクタは、リファレンスフラグを用いての、ヒープ領域
に対するスカビンジ処理A(図35)およびコンパクショ
ン処理A(図36、37)を行う。図38は第2の従来例のガ
ベージコレクタが用いるヒープ領域の構成を説明するた
めの図であり、図39はヒープ領域を構成するセルに格納
される内容およびトレイに格納される内容の例ならびに
これらのセル間の参照関係を示す図である。
【0031】図38に示すように、第2の従来例のガベー
ジコレクタは、リファレンスフラグおよびハンドルを用
いるものである。各セルは数値またはハンドルを保持し
有効リファレンスによって特定されるものであり、各ト
レイはリファレンスを保持し有効ハンドルによって特定
されるものである。また、図39に示すように、リファレ
ンスには、セルのアドレスを示す有効リファレンスとセ
ルを指し示さないNULLリファレンスとの2種類があ
り、ハンドルには、有効リファレンスを保持しているト
レイのアドレスを示す有効ハンドルとトレイを指し示さ
ないNULLハンドルとの2種類がある。
【0032】たとえば、有効リファレンス12のセルは、
有効ハンドル1を保持し有効ハンドル1のトレイを指すこ
ととなっており、さらに、有効ハンドル1のトレイは、
有効リファレンス4を保持し有効リファレンス4のセルを
指すこととなっている。図39での有効リファレンス12の
セルから有効ハンドル1のトレイへの矢印および有効ハ
ンドル1のトレイから有効リファレンス4のセルへの矢印
はこれらを示している。
【0033】図40は、第2の従来例のガベージコレクタ
が用いるヒープ領域にて割り当てられるセルブロックの
例およびこれらのセルブロック間の参照関係を示す図で
ある。図40にて、トレイのうちNULLリファレンスを
保持するトレイを未使用トレイと呼び、複数の連続する
未使用トレイからなる領域全体を未使用トレイエリアと
呼ぶ。
【0034】ヒープ領域内のセルブロックAとセルブロ
ックBについて、セルブロックBの先頭のセルを指す有
効リファレンスを保持しているトレイを指す有効ハンド
ルが、セルブロックAに含まれるセルに保持されている
とき、”セルブロックAはセルブロックBを参照してい
る”という。また、先述のように、ヒープ領域上にn個
のセルブロックX1〜Xnがあり、セルブロックXi(i
=1,2,3,・・・,n―1)がセルブロックXi+1をそ
れぞれ参照しているとき、”セルブロックX1からセル
ブロックXnをたどることができる”という。
【0035】ここでは、ルートセルブロックは有効ハン
ドル3のトレイを介してセルブロック4を参照しており、
セルブロック3は有効ハンドル1のトレイを介してセルブ
ロック2を参照しており、セルブロック4は有効ハンドル
1のトレイを介してセルブロック2を参照し有効ハンドル
4のトレイを介してセルブロック5を参照している。ルー
トセルブロックからは、セルブロック4、セルブロック2
およびセルブロック5をたどることができ、セルブロッ
ク4からは、セルブロック2およびセルブロック5をたど
ることができる。
【0036】新たな記憶領域を必要とするとき、アプリ
ケーションは、未使用セルエリアのうちの必要なサイズ
分のセルに対してセルブロックを割り付け、未使用トレ
イエリアのうちの1つのトレイに対して、割り付けられ
たセルブロックの先頭セルに対応する有効リファレンス
を設定し、ルートブロックからたどることができる状態
にし、これにより、”セルブロックを確保する”。
【0037】アプリケーションの使用に伴い、アプリケ
ーションが、必要とするサイズ分のセルブロックをヒー
プ領域にて確保できなくなってくると、ガベージコレク
タは、スカビンジ処理およびコンパクション処理を行う
ことにより、ヒープ領域を、必要なサイズ分のセルブロ
ックをアプリケーションが確保できる状態にする。図41
は、図40に示す状態のヒープ領域に対するガベージコレ
クションを説明するための図である。図41(a)は図40
に示す状態のヒープ領域に対するスカビンジ処理の結果
を示しており、図41(b)は図41(a)に示す状態のヒ
ープ領域に対するコンパクション処理の結果を示してい
る。
【0038】図40に示す状態のヒープ領域に対してスカ
ビンジ処理が行われると、図41(a)のように、セルブ
ロックのいずれからも参照されていない有効ハンドル0
のトレイおよび有効ハンドル2のトレイの内容がNUL
Lリファレンスに更新され、これらのトレイは未使用ト
レイとされる。また、これに従って、有効ハンドル0の
トレイおよび有効ハンドル2のトレイの更新前の内容で
ある有効リファレンス1および有効リファレンス6がそれ
ぞれ指し示していたセルブロック1およびセルブロック3
は開放され、これらのセルは未使用セルエリアとされ
る。
【0039】さらに、この図41(a)に示す状態のヒー
プ領域に対してコンパクション処理が行われると、図41
(b)のように、ルートセルブロックからセルブロック
4への参照ならびにセルブロック4からセルブロック2お
よびセルブロック5への参照が保たれたまま、開放され
たセルブロック1のサイズ分、セルブロック2が前方に移
動され、開放されたセルブロック1およびセルブロック3
のサイズ分、セルブロック4およびセルブロック5が前方
に移動されて、セルブロック1およびセルブロック3に対
応する未使用セルエリアが後方の未使用セルエリアと統
合されることとなる。
【0040】これらのようなセルブロックの前方への移
動に際しては、有効リファレンス0のセルの内容である
有効ハンドル3、有効リファレンス9のセルの内容である
有効ハンドル1、および、有効リファレンス11のセルの
内容である有効ハンドル4は更新されることなく、対応
するハンドルの内容である有効リファレンス8、有効リ
ファレンス3および有効リファレンス12が、それぞれ、
有効リファレンス4、有効リファレンス1および有効リフ
ァレンス8に更新されている。
【0041】特に、第2の従来例のガベージコレクタで
のコンパクション処理Bは、ハンドル(間接アドレッシ
ング)を用いて、第1の従来例のガベージコレクタにて
行われるコンパクション処理Aを高速化するものである
が、続いてこれらの処理の手順について説明する。図42
は、第2の従来例のガベージコレクタが行うコンパクシ
ョン処理Bの手順を示すフローチャートである。ここで
は、このコンパクション処理Bの実行に先立って、第1
の従来例のガベージコレクタが行うスカビンジ処理Aと
同様のスカビンジ処理により、リファレンスフラグが用
いられセルの内容がリファレンスであるか否かが判定さ
れつつ、ルートセルブロックからたどることのできるセ
ルブロックが特定され、これらの特定されたセルブロッ
クの使用中フラグが1に設定され、さらに、セルブロッ
クのいずれからも参照されていないトレイの内容がNU
LLリファレンスに更新されているものとする。
【0042】コンパクション処理Bでは、まず、上述の
第1の従来例のガベージコレクタのコンパクション処理
AでのS201〜S206の処理と同様の処理により、スカビ
ンジ処理で設定された使用中フラグが用いられつつ、ヒ
ープ領域内のすべてのセルブロックに対して、コンパク
ション後のリファレンス値が確定される(S30 1〜S30
6)。
【0043】この後、トレイを特定するyに1が代入さ
れ(S307)、トレイyの内容が有効リファレンスであ
るか否かが判定される(S308)。トレイyの内容Ty
有効リファレンスであれば(S308にてYes)トレイ
yにコンパクション後のリファレンス値Rxが設定され
た後(S309)、また、トレイyの内容Tyが有効リファ
レンスでなければ(S308にてNo)S309での処理は行
われないまま、yがトレイの個数Nに等しいか否かが判
定される(S310)。yがNに等しくなければ(S310に
てNo)yに1が加えられて(S311)S308からの処理
が繰り返され、yがMに等しければ(S310にてYe
s)S312へと処理が進められる。(これらS307〜S31
1での処理により、コンパクション前後でトレイからセ
ルへの参照関係が保たれるようトレイの内容が更新され
ることとなる。) S312〜S317での処理は第1の従来例のガベージコレク
タのコンパクション処理AでのS221〜S226の処理と同
様であり、これらの処理により先に確定されたセルブロ
ックごとのコンパクション後のリファレンス値に基づい
て実際にセルブロックが移動され、本処理は終了する。
【0044】これらのように、コンパクション処理Bで
は、まず、スカビンジ処理で設定された使用中フラグが
用いられつつ、ヒープ領域内のすべてのセルブロックに
対して、コンパクション後のリファレンス値が確定され
(コンパクション処理AでのS201〜S206の処理と同様
のS301〜S306の処理)、コンパクション前後でトレイ
からセルへの参照関係が保たれるよう有効リファレンス
を保持するトレイの内容が更新され(S307〜S311の処
理)、その後、コンパクション後のリファレンス値に基
づいて実際にセルブロックが移動される(コンパクショ
ン処理AでのS221〜S226の処理と同様のS312からS3
17の処理)。
【0045】以上のように、第2の従来例のガベージコ
レクタは、ハンドルを用いつつ、ヒープ領域の管理およ
びコンパクション処理Bを行うものであり、第1の従来
例のガベージコレクタが行うコンパクション処理Aはよ
り高速化されることとなる。上述のような第1の従来例
のガベージコレクタおよび第2の従来例のガベージコレ
クタは、いずれもリファレンスフラグを用いてセルの内
容が数値であるかリファレンスであるかを判定しつつ、
ガベージコレクションを行うものである。これに対し、
第3の従来例のガベージコレクタは、アプリケーション
との綿密な情報交換を伴うことなく、保守的ガベージコ
レクションを行うものである。
【0046】図43は、第3の従来例のガベージコレクタ
が用いるヒープ領域のセルに格納される内容の例を示す
図である。(第3の従来例のガベージコレクタが用いる
ヒープ領域は、リファレンスフラグおよびハンドルを用
いるものではなく、その構成は図27に示すものに準ず
る。) 第3の従来例のガベージコレクタは、セルの内容が数値
であるかリファレンスであるかを推測し、あるセルブロ
ックがルートセルブロックからたどることができるセル
ブロックであるか否かを判定し、これらに基づいてガベ
ージコレクションを行う。また、この推測は、実際には
リファレンスであるセルの内容を数値であると誤ること
がないよう行われるものである。(本ガベージコレクタ
は、実際には数値であるセルの内容がリファレンスであ
ると誤って推測される可能性があることを許容するもの
である。) 図43にて、たとえば、有効リファレンス12のセルは、有
効リファレンス4を保持し、有効リファレンス4のセルを
指すこととなっており、有効リファレンス12のセルから
有効リファレンス4のセルへの折れ線の矢印はこれを示
している。また、本ガベージコレクタでは、実際には数
値であるセルの内容がリファレンスであると誤って推測
される可能性がある。図43中の曲線の矢印はこの誤推測
を示すものであり、有効リファレンス3のセルに保持さ
れている数値14、有効リファレンス9のセルに保持され
ている数値0および有効リファレンス10のセルに保持さ
れている数値4はいずれもリファレンスであると誤って
推測されている。
【0047】図44は、第3の従来例のガベージコレクタ
が用いるヒープ領域にて割り当てられるセルブロックの
例およびこれらのセルブロック間の参照関係を示す図で
ある。実際、(ここでは図示していないが)セルブロッ
クの先頭に次のセルブロックへのポインタを格納するも
のとし、これらを順次たどっていくことによりヒープ領
域上セルブロックの先頭の位置を特定し、あるセル内の
データがセルブロックの先頭を指すものであるか否かを
判定することにより、上記のような、実際にはリファレ
ンスであるセルの内容を数値であると誤ることがない推
測を行うことができる。
【0048】図44に示すセルブロック間の参照関係は、
先に図29(b)を用いて示したものと同様であるが、有
効リファレンス4のセルに保持されている数値6は、セル
ブロック3の先頭セルの有効リファレンス6と同じ値であ
るため、誤ってリファレンスと推測されている。図45
は、図44に示す状態のヒープ領域に対するガベージコレ
クションを説明するための図である。図45(a)は図44
に示す状態のヒープ領域に対するスカビンジ処理の結果
を示しており、図45(b)は図45(a)に示す状態のヒ
ープ領域に対して第1の従来例のガベージコレクタによ
るものと同様のコンパクション処理を行った結果を示し
ている。(次に示すように、第3の従来例のガベージコ
レクタは、スカビンジ処理のみを行うものであり、コン
パクション処理を行うことができない。) 図44に示す状態のヒープ領域に対してスカビンジ処理が
行われると、図45(a)のように、ルートセルブロック
からたどることのできないセルブロック1は開放されて
未使用セルエリアとされる。ルートセルブロックからた
どることのできるセルブロック2、セルブロック4および
セルブロック5は、開放されることなく残されたままと
なっており、さらに、セルブロック2内有効リファレン
ス4のセルに保持されている数値6がリファレンスである
ものと誤って推測され、セルブロック2がセルブロック3
を参照するものと誤って判定されているため、セルブロ
ック3は開放されることなく残されたままとなってい
る。
【0049】この図45(a)に示す状態のヒープ領域
に、先述の第1の従来例のガベージコレクタによるコン
パクション処理A(図36、図37参照)と同様のコンパク
ション処理を行うものとすると、図45(b)に示すよう
に、セルブロック間の参照関係が保たれたまま、開放さ
れたセルブロック1のサイズ分、セルブロック2、セルブ
ロック3、セルブロック4およびセルブロック5が前方に
移動され、セルブロック1に対応する未使用セルエリア
が後方の未使用セルエリアと統合されることとなる。
【0050】これに加えて、このコンパクション処理に
より、参照関係が保たれるようセル内に保持されている
リファレンスの値が更新されるため、リファレンスであ
ると誤って推測されたコンパクション前の有効リファレ
ンス4の数値6は、セルブロック2の移動分の値を引いた
値4に更新されることとなる。すなわち、従来例3のガベ
ージコレクタでは、実際には数値であるセルの内容がリ
ファレンスであるものと誤って推測され、セル内の数値
が誤って変更される可能性があるため、コンパクション
処理を行うことができない。
【0051】これらのように、保守的ガベージコレクタ
を実装する第3の従来例のガベージコレクタは、スカビ
ンジ処理のみを行うものであるが、次にこれらの処理の
手順を説明する。図46は、第3の従来例のガベージコレ
クタが行うスカビンジ処理Bの手順を示すフローチャー
トである。
【0052】スカビンジ処理Bはスカビンジ処理Aと同
様の処理を行うものであるが、スカビンジ処理Bでは、
スカビンジ処理AでのS106、S107の処理(図35参照)
が、S406〜S408の処理に置き換えられている。すなわ
ち、S406〜S408(これら以外のスカビンジ処理Bでの
処理については、スカビンジ処理Aに準ずるものとす
る)では、まず、対象セルの内容が(先述のような推測
方法にて)推測され(S406)、この内容がリファレン
スと推測されたか否かが判定される(S407)。対象セ
ルの内容がリファレンスと推測されていれば(S407に
てYes)、リファレンスであると推測された対象セル
の内容がスタックにプッシュされ(S408)、S409(ス
カビンジ処理AのS108に対応)へと処理が進められ、
対象セルの内容がリファレンスと推測されていなければ
(S407にてNo)、S408での処理は行われることなく
S409へと処理が進められる。(これらの処理の置き換
えは、第1の従来例のガベージコレクタがリファレンス
フラグを用いているのに対し、第3の従来例のガベージ
コレクタがセルに対する推測を行うことに対応する。) これらのような第3の従来例のガベージコレクタのスカ
ビンジ処理Aによると、セルの内容がリファレンスであ
るか否かが推測されつつ、ルートセルブロックからたど
ることのできるセルブロックが特定され、これらの特定
されたセルブロックの使用中フラグが1とされ、これら
以外のセルブロックが未使用セルエリアとして開放され
ることとなる。
【0053】以上のように、第1の従来例のガベージコ
レクタおよび第2の従来例のガベージコレクタはヒープ
領域に対するスカビンジ処理およびコンパクション処理
を行い、また、第3の従来例のガベージコレクタはスカ
ビンジ処理のみを行い、アプリケーションが必要とする
サイズ分の領域を確保できるようヒープ領域の状態を保
つ。
【0054】
【発明が解決しようとする課題】しかしながら、第1の
従来例のガベージコレクタおよび第2の従来例のガベー
ジコレクタではリファレンスフラグが用いられるため、
アプリケーションの実行時にリファレンスフラグに対す
る操作を要し、(ガベージコレクションを用いることの
ないアプリケーションに比較して)プロセッサに対する
負荷はより大きく、アプリケーションの実行により多く
の時間を要することになる。特に、第2の従来例のガベ
ージコレクタでは、コンパクション処理が高速化されて
はいるものの、ハンドルが用いられておりこれらに対し
てリファレンスフラグのみに対するよりもより多くの領
域を確保する必要がある。
【0055】また、第3の従来例のガベージコレクタで
は、アプリケーションの実行に際してフラグが操作され
るということがなく、第1の従来例のガベージコレクタ
および第2の従来例のガベージコレクタに比較してアプ
リケーション実行に対する負荷は小さくなるが、実際に
は数値であるセルの内容がリファレンスであると誤って
推測される可能性があり、この誤りの可能性のある推測
結果に基づいてスカビンジ処理が行われるため、コンパ
クションを実装することができない。コンパクションが
実装されなければ、アプリケーションの実行に際してヒ
ープ領域内で未使用セルエリアの分断が起こることとな
り、アプリケーションにより要求されるサイズ分の領域
をスムーズに確保できるよう、分断された複数の未使用
セルエリアを管理する機構が別途必要となることにな
る。
【0056】本発明は、上記のような問題点を考慮して
なされたものであり、ガベージコレクションの実行に必
要となる領域を小さく抑えてアプリケーションの実行に
かかる負荷をより小さくしつつ、高速なコンパクション
を行うことのできるガベージコレクション装置を提供す
ることを目的とする。
【0057】
【課題を解決するための手段】上記の目的を達成するた
めの、本発明に係るガベージコレクション装置は、第1
種アドレスにより特定され第2種アドレスおよび第2種ア
ドレス以外の数値のいずれかのデータを保持するセルか
らなる複数のセルブロックのうち、第2種アドレスによ
り特定され第1種アドレスを保持するトレイを介して他
のセルブロックへの参照を繰り返すことにより所定のル
ートセルブロックからたどることのできるセルブロック
以外の、未使用セルブロックを特定するスカビンジ処理
と、前記特定された未使用セルブロックおよびスカビン
ジ処理に先立ちデータを保持しない連続する複数のセル
が1つの連続する領域として配置されるよう、第1種アド
レスおよびセルからなるメモリ上でセルブロックを移動
させ、セルブロックの移動前後にて前記参照の関係が保
たれるよう、トレイに保持されている第1種アドレスを
更新するコンパクション処理とを行うガベージコレクシ
ョン装置である。
【0058】本ガベージコレクション装置は、第1セル
ブロックに含まれるセルが第2種アドレスを保持してい
るか否かを、第2種アドレスが保持されている際に第2種
アドレスが保持されていないと誤ることがないよう推測
し、第2種アドレスを保持していると推測されたセルに
より指示されるトレイが保持する、第1種アドレスに対
応するセルを含む第2セルブロックを、第1セルブロック
から参照があるものと推定することによって、前記スカ
ビンジ処理での未使用セルブロックの特定を行うことを
特徴としている。
【0059】
【発明の実施の形態】以下、図面を参照しつつ、本発明の
実施の形態における実施例の1つであるガベージコレク
タについて説明する。図1は本発明の実施例の1つである
ガベージコレクタが用いるヒープ領域の構成を説明する
ための図であり、図2はヒープ領域を構成するセルに格
納される内容の例およびこれらのセル間の参照関係を示
す図である。
【0060】図1に示すように、本ガベージコレクタに
より管理されるヒープ領域には、セルの配列およびトレ
イの配列が構成される。有効リファレンスによって特定
される各セルは数値またはハンドルを保持し、有効ハン
ドルによって特定される各トレイはリファレンスを保持
し、本ガベージコレクタは、トレイに格納される有効リ
ファレンスを用いつつセルの状態を管理する。
【0061】リファレンスには、図2に示すように(ま
た従来例のガベージコレクタと同様)、セルのアドレス
を示す有効リファレンスとセルを指し示さないNULL
リファレンスとがあり、ハンドルには、有効リファレン
スを保持しているトレイのアドレスを示す有効ハンドル
とトレイを指し示さないNULLハンドルとがある。こ
こでは、有効リファレンス0のセルおよび有効リファレ
ンス4のセルに保持されている有効ハンドル2は、有効ハ
ンドル2のトレイを指していることを示しており、有効
リファレンス7のセルに保持されている有効ハンドル3
は、有効ハンドル3のトレイを指していることを示して
いる。同様に、有効リファレンス12のセルに保持されて
いる有効ハンドル1、有効リファレンス15のセルに保持
されている有効ハンドル0および有効リファレンス17の
セルに保持されている有効ハンドル4は、それぞれ、対
応するトレイを指していることを示している。図上、こ
れらの参照関係はセルからトレイへの折れ線の矢印によ
って表されている。
【0062】また、図2では、有効ハンドル0のトレイに
保持されている有効リファレンス3、有効ハンドル1のト
レイに保持されている有効リファレンス4、有効ハンド
ル2のトレイに保持されている有効リファレンス7、有効
リファレンス3のトレイに保持されている有効リファレ
ンス8および有効ハンドル4のトレイに保持されている有
効リファレンス14がそれぞれ対応するセルを指している
ことが、トレイからセルへの折れ線の矢印により表され
ている。
【0063】特に本ガベージコレクタは、セルの内容が
数値であるかハンドルであるかを推測し、あるセルブロ
ックがルートセルブロックからたどることができるセル
ブロックであるか否かを推定し、これらに基づいてスカ
ビンジ(トレイの開放)を行い、スカビンジの行われた
ヒープ領域に対してコンパクションを行うものであり、
上記の推測は、実際にはハンドルであるセルの内容を数
値であると誤ることがないよう行われる。(本ガベージ
コレクタは、実際には数値であるセルの内容がハンドル
であると誤って推測される可能性があることを許容する
ものである。)図2中の、有効リファレンス9のセルから
有効ハンドル0のトレイへの曲線の矢印、また、有効リ
ファレンス10のセルから有効ハンドル4のトレイへの曲
線の矢印は、上記のような推測により、実際には数値で
あるセルの内容がハンドルであると誤って推測されてい
ることを示している。
【0064】実際、プロセッサ(CPU)が複数のデー
タメモリ空間を扱えることを想定して、たとえば32ビッ
トアドレス空間を持つ1つのデータメモリ空間が、デー
タセグメントおよびエキストラセグメントとしてそれぞ
れ占有されるものとし、データセグメントにセル(デー
タサイズ:32ビット)を割り当て、エキストラセグメン
トにトレイを割り当てるものとすることができる。この
場合には、セルの保持する値により特定されることとな
るエキストラセグメント内のトレイを検査し、このトレ
イが有効リファレンスを保持しているか否かに応じて、
セルの保持する値が有効ハンドルであるか数値であるか
を推測することができる。
【0065】また、プロセッサがデータメモリ空間を1
つのみ扱えることを想定して、セルに対応するアドレス
の範囲(たとえば3000〜12999)とトレイに対応するア
ドレスの範囲(0〜2999)とを異ならせるものとするこ
とができる。この場合には、セルの保持する値がトレイ
に対応するアドレスの範囲にあるか否か、および、この
トレイが有効リファレンスを保持しているか否かを検査
し、セルの保持する値がトレイに対応するアドレスの範
囲にあり、かつ、このトレイが有効リファレンスを保持
しているときに限って、セルの保持する値が有効ハンド
ルであるものと推測することができる。(ここでは、デ
ータセグメントにセルを割り当てセルに対応するアドレ
スの範囲を0〜9999とし、エキストラセグメントにトレ
イを割り当てトレイに対応するアドレスの範囲を0〜299
9としている。) 上記のようなデータを保持しているセルからは、次のよ
うなセルブロックが構成される。図3は、本ガベージコレ
クタが用いるヒープ領域にて割り当てられるセルブロッ
クの例およびこれらのセルブロック間の参照関係を示す
図である。
【0066】(従来例のガベージコレクタと同様)ヒー
プ領域に確保される特定の1つのセルブロックをルート
セルブロックと呼び、セルのうちセルブロックのいずれ
にも属しないセルを未使用セル、複数の連続する未使用
セルからなる領域全体を未使用セルエリアと呼ぶ。ま
た、トレイのうちNULLリファレンスを保持するトレ
イを未使用トレイ、複数の連続する未使用トレイからな
る領域全体を未使用トレイエリアと呼ぶ。さらに、”セ
ルブロックAがセルブロックBを参照している”、”セ
ルブロックX1からセルブロックXnをたどることができ
る”、”セルブロックを確保する”等の表現は、第2の
従来例のガベージコレクタにおけるものと同様の意味に
て用いられるものとする。
【0067】図3では、ルートセルブロックは有効ハン
ドル3のトレイ(有効リファレンス8を保持)を介してセ
ルブロック4を参照しており、セルブロック3は有効ハン
ドル1のトレイ(有効リファレンス3を保持)を介してセ
ルブロック2を参照しており、セルブロック4は有効ハン
ドル1のトレイを介してセルブロック2を参照し有効ハン
ドル4のトレイ(有効リファレンス12を保持)を介して
セルブロック5を参照しており、これらは折れ線の矢印
によって示されている。有効ハンドル0のトレイは有効
リファレンス1を保持しセルブロック1を参照するもので
あるが、いずれのセルブロックからも参照されていな
い。
【0068】また、セルブロック2に含まれる有効リフ
ァレンス4のセルは数値2を保持するものであるが、この
数値2はハンドルであるものと誤って推測されており、
これらは曲線の矢印によって示されている。アプリケー
ションの使用に伴い、アプリケーションが、必要とする
サイズ分のセルブロックをヒープ領域にて確保できなく
なってくると、本ガベージコレクタは、スカビンジ処理
およびコンパクション処理を行う。
【0069】図4は、図3に示す状態のヒープ領域に対す
るガベージコレクションを説明するための図である。図
4(a)は図3に示す状態のヒープ領域に対するスカビン
ジ処理の結果を示しており、図4(b)は図4(a)に示
す状態のヒープ領域に対するコンパクション処理の結果
を示している。図3に示す状態のヒープ領域に対してス
カビンジ処理が行われると、図4(a)のように、セル
ブロックのいずれからも参照されていない有効ハンドル
0のトレイの内容が有効リファレンス1からNULLリフ
ァレンスに更新され、このトレイは未使用トレイとされ
る。また、この更新により、有効ハンドルにより指し示
されていないこととなったセルブロック1は開放され、
未使用セルエリアとされる。
【0070】さらに、ルートセルブロックからたどるこ
とのできるセルブロック2、セルブロック3、セルブロッ
ク4およびセルブロック5は、開放されることなく残され
たままとなっており、これらのセルブロック間の参照に
用いられる(と正常に推測された)有効ハンドル1のト
レイ、有効ハンドル3のトレイおよび有効ハンドル4のト
レイならびにセルブロック2からセルブロック3への参照
に用いられると誤って推測された有効ハンドル2のトレ
イは、開放されることなく残されたままとなっている。
【0071】この図4(a)に示す状態のヒープ領域
に、先述の第2の従来例のガベージコレクタによるコン
パクション処理B(図42参照)と同様のコンパクション
処理が行われると、図4(b)のように、ルートセルブ
ロックからセルブロック4への参照、セルブロック3お
よびセルブロック4からセルブロック2への参照、ならび
に、セルブロック4からセルブロック5への参照、これに
加えて、誤って推測されたセルブロック2からセルブロ
ック3への参照が保たれたまま、開放されたセルブロッ
ク1のサイズ分、セルブロック3〜セルブロック5および
セルブロック2が前方に移動されて、セルブロック1に対
応する未使用セルエリアが後方の未使用セルエリアと統
合されることとなる。
【0072】これらのようなセルブロックの前方への移
動に際しては、有効リファレンス0のセルの内容である
有効ハンドル3、有効リファレンス7および有効リファレ
ンス9のセルの内容である有効ハンドル1、ならびに、有
効リファレンス11のセルの内容である有効ハンドル4、
加えて、有効リファレンス4のセルの内容であり有効ハ
ンドルであると誤って推測された数値2は更新されるこ
となく、対応するハンドルの内容である有効リファレン
ス8、有効リファレンス3、有効リファレンス12および有
効リファレンス6が、それぞれ、有効リファレンス6、有
効リファレンス1、有効リファレンス10および有効リフ
ァレンス4に更新されている。
【0073】これらのような本ガベージコレクタは、先
述の第2の従来例のガベージコレクタでのコンパクショ
ン処理Bと同様のコンパクション処理を行うものである
が、以下に示すようなスカビンジ処理を行う。図5およ
び図6は、本ガベージコレクタが行うスカビンジ処理の手
順を示すフローチャートである。(使用中フラグは、第
1の従来例のガベージコレクタ等と同様、セルブロック
がルートセルブロックからたどることができるか否かを
示すよう各セルブロックに対して設定される。) 本スカビンジ処理では、まず、セルブロックx(x=1
〜M(Mはセルブロックの個数))の使用中フラグFx
に対して0が代入され(S1)、ルートセルブロックの内
容であるハンドルが指すリファレンスがスタックにプッ
シュされる(S2)。
【0074】スタックに積まれたリファレンスはポップ
され(S3)、ポップされたリファレンスが指すセルブ
ロックxの先頭セルが対象セルに設定され(S4)、セ
ルブロックxに対する使用中フラグFxに1が代入される
(S5)。続いて、対象セルの内容が(先述のような推
測方法にて)推測され(S6)、このセルの内容がハン
ドルと推測されたか否かが判定される(S7)。対象セ
ルの内容がハンドルと推測されていれば(S7にてYe
s)、ハンドルであると推測された対象セルの内容であ
るハンドルが指すリファレンスが、スタックにプッシュ
され(S8)、S9へと処理が進められ、対象セルの内容
がハンドルと推測されていなければ(S7にてNo)、
S8での処理は行われることなくS9へと処理が進められ
る。
【0075】S9では同一のセルブロック内で後続する
セルがあるか否かが判定され、後続するセルがあれば
(S9にてYes)後続するセルが対象セルとされて
(S10)S6からの処理が繰り返され、後続するセルが
なければ(S9にてNo)続いてスタックが空であるか
否かが判定される(S11)。スタックが空でなければ
(S11にてNo)、S3からの処理が繰り返され、スタ
ックが空であれば(S11にてYes)、S12へと処理が
進められる。
【0076】S12ではyに1が代入され、ハンドルyの
トレイの内容が有効リファレンスであるか否かが判定さ
れる(S13)。ハンドルyのトレイの内容が有効リファ
レンスであれば(S13にてYes)、続いて、この有効
リファレンスが指すセルブロックxの使用中フラグが0
であるか否かが判定される(S13)。セルブロックxの
使用中フラグが0であれば(S14にてYes)、ハンド
ルyのトレイの内容としてNULLリファレンスが代入
された後(S15)yがトレイの個数Nに等しいか否かが
判定され(S16)、セルブロックxの使用中フラグが0
でなければ(S14にてNo)S15での処理は行われるこ
となく、S16へと処理が進められる。
【0077】yがNに等しくなければ(S16にてN
o)、yに1が加えられ(S17)S13からの処理が繰り
返され、yがNに等しければ(S16にてYes)、本処
理は終了される。これらのようなスカビンジ処理よる
と、セルの内容がハンドルであるか否かが推測されつ
つ、ルートセルブロックからたどることのできるセルブ
ロックが特定され、これらの特定されたセルブロックの
使用中フラグが1とされ、これら以外のセルブロックが
未使用セルエリアとして開放されることとなる。
【0078】本ガベージコレクタでは、以上のようなス
カビンジ処理にて実際には数値であるセルの内容をハン
ドルであると誤って推測する可能性があるが、セルの特
定には間接アドレッシング(ハンドル)が用いられてお
り、コンパクション処理ではこのハンドルによって特定
されるトレイの内容が更新されるため、セル自体の内容
が更新されることはなく、(第3の従来例のガベージコ
レクタとは異なり)有効にコンパクションが行われるこ
ととなる。
【0079】また、スカビンジ処理にてハンドルを保持
するものと誤って推測されたセルにより指示されること
となるセルブロックは、未使用セルエリアに統合されな
いこととなるものの、誤推測された数値が書き換えられ
れば、その次に行われるスカビンジ処理により正常に開
放される可能性がある。以下に、第1の従来例のガベー
ジコレクタ〜第3の従来例のガベージコレクタおよび本
ガベージコレクタの特徴を要約する。
【0080】
【表1】
【0081】実際、リファレンスフラグは、セル1個
(たとえば4バイトで構成されるものとする)につき1ビ
ット必要であるので、ヒープ領域をより有効に活用する
ために、セル8個分のリファレンスフラグが1つにパック
されて利用される。アプリケーション実行中セルに値を
代入するとき、このセルがリファレンスであるか数値で
あるかを示すためリファレンスフラグを設定する必要が
あり、このようなリファレンスフラグへのアクセスに多
くの時間がかかる。また、スカビンジ処理を行う際に
は、セルの値がリファレンスであるか数値であるかを検
知しなくてはならず、上記のようにして構成されるリフ
ァレンスフラグへのアクセスに多くの時間がかかる。
【0082】[表1]に示すように、第1の従来例のガベ
ージコレクタおよび第2の従来例のガベージコレクタ
は、セル内容の判定にリファレンスフラグを用いるもの
であり、アプリケーションの実行中リファレンスフラグ
を用いてアプリケーションと情報交換しまたスカビンジ
処理に際してリファレンスフラグを参照するため、アプ
リケーション実行によるプロセッサへの負荷およびスカ
ビンジ処理に要する負荷はより大きなものとなり、一定
の処理能力を有するプロセッサでの処理を想定したと
き、(第3の従来例のガベージコレクタおよび本発明の
ガベージコレクタに比べて)より多くの時間をこれらの
処理に要することとなる。(第1の従来例のガベージコ
レクタと第2の従来例のガベージコレクタとを比較する
と、第2の従来例のガベージコレクタが行うコンパクシ
ョン処理B(図42参照)ではハンドルが用いられるた
め、S307〜S311の処理は、同様に更新後のリファレン
ス値を設定することとなる、第1の従来例のガベージコ
レクタが行うコンパクション処理A(図36および図37参
照)のS207〜S220の処理に比較して簡素であり、コン
パクション処理に要する負荷が小さなものとなってい
る。) 第1の従来例のガベージコレクタおよび第2の従来例のガ
ベージコレクタに対して、第3の従来例のガベージコレ
クタおよび本発明のガベージコレクタは、保守的ガベー
ジコレクタでありセル内容の判定に推測を用いるもので
あり、上記のようなアプリケーション実行中のリファレ
ンスフラグの操作およびスカビンジ処理に際してのリフ
ァレンスフラグの参照は不要であり、アプリケーション
実行の負荷およびスカビンジ処理に要する負荷は小さ
く、より短い時間にてこれらの処理を行うことができ
る。(上述しなかったが、第2の従来例のガベージコレ
クタでコンパクション処理を行う際には、対応するリフ
ァレンスフラグの移動がセルの移動に伴われ、本発明の
ガベージコレクタと比較してコンパクション処理に対す
る負荷が大きいといえる。) 特に、第3の従来例のガベージコレクタは、スカビンジ
処理にてセル内容を誤って推測する可能性があることか
らコンパクション処理を行うことができないものである
が、本ガベージコレクタでのスカビンジ処理は、保守的
ガベージコレクタにてコンパクション処理を行うことを
可能にするものである。
【0083】次に、以上説明してきたような本発明に係
るガベージコレクタの(プログラム記憶式)コンピュー
タへのより具体的な実装例として、端末からの入力に応
じて座席を予約するための予約システムを説明する。図
7は本発明に係るガベージコレクタを用いる予約システ
ムの構成の概略を示す図であり、図8は本予約システム
に含まれる予約データベース管理部4の構成を説明する
ための図である。
【0084】図7に示すように、本予約システムは、端
末部A1、端末部B2、端末部C3および予約データベー
ス管理部4を含んでいる。本予約システムでは、端末部
A1、端末部B2および端末部C3のいずれかでのユーザ
の(1以上の)座席数の入力に応じて、この座席数分の
座席の予約が予約データベース管理部4に要求される。
予約データ管理部4は、必要座席数分の座席番号の2組の
候補を仮予約し、それらの候補を予約を要求してきた端
末部に返す。予約が返された端末部は、ユーザの入力に
よりそれら候補のうちのいずれかを選択し、選択結果を
予約データベース管理部4に報告し、予約データベース
管理部4はユーザの選択した候補を本予約し予約を終了
する。
【0085】予約データベース管理部4は、図8に示すよ
うに、予約の実行に伴って用いられるセルを初期化する
初期化部41、全体の動作を制御してユーザの所望する座
席数分の座席を予約するアプリケーション部42、セルブ
ロック内のセルに値を代入するセル代入部43、および、
アプリケーション部42の要求に応じて記憶領域上にセル
ブロックを割り当て必要に応じてガベージコレクション
を行うガベージコレクタ44を含んでおり、ガベージコレ
クタ44は、セルブロックの割り当てを行うセルブロック
割り当て部441、ならびに、上述のようなスカビンジ処
理を行うスカビンジ処理部442および前述のようなコン
パクション処理を行うコンパクション処理部443を含ん
でいる。
【0086】実際、アプリケーション部42、初期化部4
1、セルブロック割り当て部441、スカビンジ処理部44
2、コンパクション処理部443、端末部A1〜C3、およ
び、セル代入部43では、次に、図9〜図17に示すような
処理が行われ、ガベージコレクタ44によりアプリケーシ
ョン部42の要する記憶領域が確保され必要に応じてスカ
ビンジ処理およびコンパクション処理が行われつつ、座
席の予約が実行される。(これらの処理の手順を説明し
た後、図18〜図24を用いて端末部A1〜端末部C3からの
ユーザの入力を想定したセルブロックの変化を具体的に
説明する。) 図9〜図17に示す処理の実行に際して用いられるセルブ
ロックは、セル配列の部分配列であり、先頭セルのリフ
ァレンス(アドレス)をx、セルブロック内容の長さを
nとして、次のような構成によるものとする。 ・C[x]=次のセルブロックの先頭リファレンス ・C[x+1]=n(=セルブロック内容の長さ) ・C[x+2]=使用中フラグまたはコンパクションに
用いられるワーク ・C[x+3]〜C[x+2+n]=アプリケーションに
て自由に使用されるセルブロックの内容 特に、ここではルートセルブロックを次に示すようなセ
ルであるものとする。(これらの値は、後に示すような
処理によって初期化部41にて代入される。) ・C[1]=5 ・C[2]=1 ・C[3]=NULL ・C[4]=NULL 本予約システムでの予約の実行に際して、ガベージコレ
クタ44は、セルブロックの割り当てを要求されること以
外にはアプリケーションの動作(アプリケーション部42
での処理および端末部A1〜端末部C3での処理)にはか
かわらず独立した動作を行うものであり、このアプリケ
ーションからの要求に応じて、必要な際にスカビンジ処
理、コンパクション処理を行う。また、ガベージコレク
タ44は、上記のようなセルブロックの構成のみを識別し
て処理を行うものであり、スカビンジ処理部442は、
(C[x+3]〜C[x+2+n]に対応する)セルブロ
ックの内容を示すセルが数値であるかハンドルであるか
をあらかじめ識別するものではなく、セルの内容を(具
体的には後に示すような図12のS41、S42等の処理によ
り)推測するものである。
【0087】上記のようにガベージコレクタ44はアプリ
ケーションにて用いられるセルブロックの内容を知るも
のではないが、アプリケーションは予約を実行するため
次に示すようなデータ構造を有するシステムセルブロッ
クおよび候補セルブロックを用いる。 システムセルブロック(先頭セルのリファレンスをx0
としている) ・C[x0]〜C[x0+2]=各々上述のC[x]〜C
[x+2]に対応する値 ・C[x0+3]=端末部A1の候補セルブロックへのリ
ファレンスを格納するハンドル ・C[x0+4]=端末部B2の候補セルブロックへのリ
ファレンスを格納するハンドル ・C[x0+5]=端末部C3の候補セルブロックへのリ
ファレンスを格納するハンドル 端末部t(=A、B、C)に対する候補セルブロック
(先頭セルのリファレンスをxtとしている) ・C[xt]〜C[xt+2]=各々上述のC[x]〜C
[x+2]に対応する値 ・C[xt+3]=予約座席数 ・C[xt+4]〜C[xt+3+予約座席数]=候補1と
して仮予約した座席の座席番号 ・C[xt+4+予約座席数]〜C[xt+3+2×予約座
席数]=候補2として仮予約した座席の座席番号 フローチャート中およびフローチャートの説明に当たっ
ては、次に示すような表記を用いるものとする。 ・C: セル配列 ・N: セルの個数(セル配列のサイズ) ・C[1]〜C[N]: セル ・T: トレイ配列 ・M: トレイの個数(トレイ配列のサイズ) ・T[1]〜T[M]: トレイ ・NULL: 数値0 ・U: 未使用セルブロックの先頭リファレンス ・W: コンパクション時のワーク ・S: リファレンススタック 図9はアプリケーション部42での処理の手順を示すフロ
ーチャートであり、図10は初期化部41での処理の手順を
示すフローチャートである。
【0088】図9に示すように、アプリケーション部42
の処理では、まず、初期化部41が呼び出され、(後に図
10を用いて示すような手順によって)記憶領域上のセル
ブロックが初期化されまたルートセルブロックが設定さ
れる(S21)。続いて、必要セル数nに3が代入されて
セルブロック割り当て部441が呼び出され、(後に図11
に示すような手順による)セルブロック割り当て部441
での処理により得られたハンドルhがC[4]に代入さ
れ、システムセルブロックが確保される(S22)。
【0089】この後、sに1が代入されて(S23)、処
理に用いられるkにsが代入され端末部s(s=1、2、
3であり、端末部1〜端末部3を、端末部A1〜端末部C3
にそれぞれ対応させる)が呼び出される(S24)。端末
部sでは、より詳細には後に図15および図16に示すよう
な手順によって、ユーザの予約の要求への応答が行われ
必要に応じてガベージコレクションが行われつつセルブ
ロックの割り当てとセルブロックへの値の代入等の処理
が行われ、座席の仮予約および本予約が順次行われるこ
ととなる。端末部sの呼び出しの後にはsに1が加えら
れて(S25)、sの値が3より大きいか小さいかに応じ
てS23からの処理(S26にてYes)またはS24からの
処理(S26にてNo)が繰り返され、端末部A1、端末
部B2、端末部C3の呼び出しが順次繰り返される。
【0090】上記のアプリケーション部42のS21での処
理では初期化部41が呼び出されるが、図10に示すよう
に、初期化部41の処理では、まず、xに1が代入され
(S2101)、C[x]にNULLが代入され(S210
2)、xがセルの個数Nに等しいか否かが判定される
(S2103)。xがNに等しくなければ(S2103にてN
o)xに1が加えられて(S2104)S2102からの処理が
繰り返され、xがNに等しければ(S2103にてYes)
S2105へと処理が進められる。(これらのS2 101〜S2
104での処理はすべてのセルC[1]〜C[N]をNUL
Lに初期化するものである。) 続いて、S2105では再びxに1が代入され、T[x]に
NULLが代入され(S2106)、xがトレイの個数Mに
等しいか否かが判定される(S2107)。xがMに等しく
なければ(S2107にてNo)xに1が加えられて(S210
8)S2106からの処理が繰り返され、xがMに等しけれ
ば(S2107にてYes)S2109へと処理が進められる。
(これらのS2105〜S2108での処理はすべてのトレイT
[1]〜T[M]をNULLに初期化するものであ
る。) S2109ではC[1]に5、C[2]に1が代入されることに
よりルートセルブロックが設定され、また、未使用セル
ブロックの先頭リファレンスUに5が代入され(S210
9)、初期化部41での処理は終了し、この後、上記のア
プリケーション部42のS22での処理によりセルブロック
割り当て部441が呼び出される。
【0091】図11はセルブロック割り当て部441での処
理の手順を示すフローチャートであり、図12はセルブロ
ック割り当て部441から呼び出されるスカビンジ処理部4
42での処理の手順を示すフローチャートであり、図13お
よび図14はセルブロック割り当て部441から呼び出され
るコンパクション処理部443での処理の手順を示すフロ
ーチャートである。
【0092】図11に示すように、セルブロック割り当て
部441の処理では、まず、必要セル数nが(N―U―3)
以下であるか否か(すなわち記憶領域上必要なセルの確
保が可能か否か)が判定される(S2201)。nが(N―
U―3)以下であれば(S2201にてYes)S2205へと
処理が進められ、nが(N―U―3)以下でなければ
(S2201にてNo)、続いて、(後に図12に示す手順に
て処理を行う)スカビンジ処理処理部442および(後の
図13および図14に示す手順にて処理を行う)コンパクシ
ョン処理部443が順に呼び出され(S2202、S2203)、
再び、必要セル数nが(N―U―3)以下であるか否か
が判定される(S2204)。nが(N―U―3)以下でな
ければ(S2204にてNo)使用することのできるセルが
不足しているものとして異常終了し、nが(N―U―
3)以下であれば(S2204にてYes)S2205へと処理
が進められる。
【0093】S2205ではhに1が代入され、(後に更新
される)hがトレイの個数M以下であるか否かが判定さ
れる(S2206)。hがM以下でなければ(S2206にてN
o)使用することのできるトレイが不足しているものと
して異常終了し、hがM以下であれば(S2206にてYe
s)T[h]がNULLであるか否かが判定される(S
2207)。T[h]がNULLでなければ(S2207にてN
o)hに1が加えられ(S2208)S2206からの処理が繰
り返され、T[h]がNULLであれば(S2207にてY
es)S2209へと処理が進められる。
【0094】S2205〜S2208での処理により使用されて
いないトレイに対応するhが特定され、T[h]に未使
用セルブロックの先頭リファレンスU、C[U]に(U
+n+3)、C[U+1]にnがそれぞれ代入され、Uに
(n+3)が加えられて(S2209)、セルブロック割り
当て部441での処理が終了する。(これらのようなセル
ブロック割り当て部441は、必要セル数nを3とするアプ
リケーション部42のS22での呼び出しに応じてシステム
セルブロックを確保しこのシステムセルブロックの先頭
リファレンスを格納するトレイを特定するハンドルhを
出力し、必要セル数nを(2×座席数+1)とする端末部
A1〜端末部C3のS2411での呼び出しに応じて候補セル
ブロックを確保し新たに確保される候補セルブロックの
先頭リファレンスを格納するトレイを特定するハンドル
hを出力する。) 上記のセルブロック割り当て部441のS2202ではスカビ
ンジ処理部442が呼び出されるが、図12に示すように、
スカビンジ処理部442の処理では、まず、xに1が代入さ
れ(S31)、C[x]がNULLであるか否かが判定さ
れる(S32)。C[x]がNULLでなければ(S32に
てNo)C[x+2]に0が代入されxがC[x]の示す
値に更新されて(S3 3)S32からの処理が繰り返さ
れ、C[x]がNULLであれば(S32にてYes)S
34へと処理が進められる。(ここでは、C[x+2]は
使用中フラグとして用いられ、これらのS31〜S33での
処理は使用されているセルブロックの使用中フラグを0
に初期化するものである。) S34ではリファレンススタックSに1がプッシュされ、
(後に更新される)Sが空であるか否かが判定される
(S35)。Sが空でなければ(S35にてNo)、Sにス
タックされているリファレンス(使用されているセルブ
ロックの先頭リファレンス)がrにポップされ(S3
6)、rがNULLであるか否かが判定される(S3
7)。rがNULLであれば(S37にてYes)S35か
らの処理が繰り返され、rがNULLでなければ(S37
にてNo)(セルブロックの構造によりS35以下の処理
が無限ループとなることを回避するために)さらにC
[r+2]が0であるか否かが判定される(S38)。
【0095】C[r+2]が0でなければ(S38にてN
o)S35からの処理が繰り返され、C[r+2]が0であ
れば(S38にてYes)、C[r+2]に1が代入され使
用されている(と推定された)セルブロックの使用中フ
ラグが1とされ、xに0が代入される(S39)。続いて、
(後に更新される)xが(セルブロック内容のサイズを
示す)C[r+1]の値より小さいか否か(セルブロッ
ク内容として含まれるすべてのセルについて以下の処理
が行われたか否か)が判定される(S40)。xがC[r
+1]の値より小さくなければ(S40にてNo)、(対
象を次のセルブロックとするため)S35へと処理が移さ
れ、xがC[r+1]の値より小さければ(S40にてY
es)続いてC[r+3+x]の値が1以上M以下である
か否か(S41)およびT[C[r+3+x]]の値がN
ULLであるか否か(S42)が判定される。C[r+3
+x]の値が1以上M以下であり(S41にてYes)か
つT[C[r+3+x]]の値がNULLでない(S42
にてNo)場合に限ってT[C[r+3+x]]がリフ
ァレンススタックSにプッシュされ(S43)、これらの
後、xに1が加えられxの値が更新され(S44)S40か
らの処理が繰り返される。
【0096】(セルブロックが順次たどられることによ
り)リファレンススタックSが空になると(S35にてY
es)、再びxに1が代入され(S45)、T[x]がN
ULLであるか否か(S46)およびC[T[x]+2]
が1であるか否か(T[x]の指示するセルブロックの
使用中フラグが1であるか否か)(S47)が判定され
る。
【0097】T[x]がNULLでないとき(S46にて
No)C[T[x]+2]が1でなければ(S47にてN
o)T[x]にNULLガ代入された(S48)後、ま
た、T[x]がNULLであるとき(S46にてYes)
もしくはC[T[x]+2]が1であれば(S47にてYe
s)S48での処理は行われないまま、xに1が加えられ
て(S49)、xがN以下であるか否かが判定される(S
50)。xがN以下であれば(S50にてYes)S46から
の処理が繰り返され、xがN以下でなければ(S50にて
No)スカビンジ処理部442での処理は終了し、この
後、上記のセルブロック割り当て部441のS2203での処
理(図11参照)によりコンパクション処理部443が呼び
出される。
【0098】特に、上記のようなスカビンジ処理部442
のS41およびS42での処理は、セルブロック内容に対す
るセルがハンドルを保持しているか数値を保持している
かを推測するためものであり、セルの保持する値が(有
効)ハンドルの取り得る値でありかつこのハンドルによ
って特定されるトレイの値がNULLでないときに限っ
て、このセルの保持する値がハンドルであるものと推定
される。この推定に応じて、S43では、ハンドルである
ものと推定されたセルの値の指示するトレイに格納され
ているリファレンスが、リファレンススタックSにプッ
シュされ、このリファレンスによって特定されるセルブ
ロックが使用中であるものと推定されることとなる。ま
た、上記のようなスカビンジ処理部442のS45〜S50で
の処理は、使用されていないセルブロックを指示するこ
ととなったトレイにNULLを代入し未使用トレイとす
るものである。(S45〜S50での処理によりトレイが有
効に再利用されることとなる。) 図13(および図14)に示すように、コンパクション処理
部443の処理では、まず、ワークW(セルブロックの先
頭セルのリファレンスに順次使用中のセルブロックの大
きさが加算されていく)およびU(すべてのセルブロッ
クの先頭セルのリファレンスを順に指示していくよう更
新されていく)に1が代入され(S51)、C[U+2]が
1であるか否か(使用中フラグが1であるか否か)が判定
される(S52)。C[U+2]が1であれば(S52にてY
es)C[U+2]にWが代入され(C[U+2]にセル
ブロック移動後の先頭セルのリファレンスが格納され)
Wに値(C[U+1]+3)(セルブロックのサイズ)が
加えられた後、また、C[U+2]が1でなければ(S52
にてNo)C[U+2]の値およびWの値は変更されな
いまま、UにC[U]の値(次に対象とするセルブロッ
クの先頭リファレンスを示す)が代入されてUが更新さ
れ(S54)、UがNULLであるか否かが判定される
(S55)。UがNULLでなければ(S55にてNo)S
52からの処理が繰り返され、UがNULLであれば(S
55にてYes)S56へと処理が進められる。(これらの
S51〜S55での処理により、セルブロック移動後の先頭
セルのリファレンスが算出され各セルブロックに対する
所定のワーク(各セルブロックのC[x+2]に対応す
るセル)に格納される。) S56ではxに1が代入され、T[x]がNULLである
か否かが判定される(S57)。T[x]がNULLでな
ければ(S57にてNo)T[x]にはC[T[x]+
2]の値(上記の各セルブロックに対するワークの値)
が代入された後、また、T[x]がNULLであれば
(S57にてYes)T[x]の値が変更されないまま、
xがトレイの個数Mに等しいか否かが判定される(S5
9)。xがMに等しくなければ(S59にてNo)xに1が
加えられ(S60)S57からの処理が繰り返され、xがM
に等しければ(S59にてYes)S61へと処理が進めら
れる。(これらのS56〜S60での処理により、すべての
T[1]〜T[M]がセルブロック移動後の先頭セルの
リファレンスを指示するよう更新される。) S61ではU(使用中のセルブロックの先頭セルのリファ
レンスを順に指示していくよう更新されていく)に1が
代入され、C[U+2]の値が0であるか否か(C[x+
2]によりセルブロックが使用されていないことが示さ
れているか否か)が判定される(S62)。
【0099】C[U+2]の値が0でなければ(S62にて
No)、C[C[U+2]]に(C[U+2]+C[U+
1]+3)が代入され(移動後のセルブロックの先頭セル
C[x]に(移動後の)次のセルブロックの先頭セルの
リファレンスが代入され)(S63)、C[U+1]〜C
[U+C[U+1]+2]の内容がC[C[U+2]+1]
〜C[C[U+2]+C[U+1]+2]にコピーされ
(S64)、S65へと処理が進められる。C[U+2]の
値が0であれば(S62にてYes)、S63、S64での処
理は行われることなく、S65へと処理が進められる。
【0100】S65ではUにC[U]が代入され更新さ
れ、UがNULLであるか否かが判定され(S66)、U
がNULLでなければ(S66にてNo)S62からの処理
が繰り返され、UがNULLであれば(S66にてYe
s)S67へと処理が進められる。(これらのS61〜S66
での処理により、実際にセルが移動されることとな
る。) S67ではxにWの値(使用されていないセルの先頭リフ
ァレンスを示している)が代入され、C[x]にNUL
Lが代入され(S68)、xがセルの個数Nに等しいか否
かが判定される(S69)。xがNに等しくなければ(S
69にてNo)xに1が加えられて更新され(S70)、x
がNに等しければ(S69にてYes)コンパクション処
理部443での処理は終了し、セルブロック割り当て部441
のS2204からの処理(図11参照)が続けられる。(S67
からS69での処理により、リファレンスがW以降のセル
にNULLが代入される。) これらのようなコンパクション処理部443での処理は、
スカビンジ処理部442での処理により使用中ではないと
推定されたセルブロックを未使用セルエリアに統合する
ものである。
【0101】さらに、先述のアプリケーション部42での
S24での処理(図9参照)により、端末部A1〜端末部C
3が呼び出される。図15および図16は端末部A1〜端末部
C3の各々での処理の手順を示すフローチャートであ
り、図17は端末部A1〜端末部C1から呼び出されるセル
代入部43での処理の手順を示すフローチャートである。
【0102】図15(および図16)に示すように、端末部
s(端末部A1〜端末部C3の各々)では、まず、ユーザ
により新たな予約が要求されたか否かが判定される(S
2401)。新たな予約が要求されれば(S2401にてYe
s)、C[T[C[4]]+2+k]がNULLであるか
否か(端末部sのための候補セルブロックへのリファレ
ンスを格納するハンドルを指示する、システムセルブロ
ックのセルがNULLであるか否か)が判定され(S24
07)、C[T[C[4]]+2+k]がNULLであれば
(S2407にてYes)そのままS2410へと処理が進めら
れ、C[T[C[4]]+2+k]がNULLでなければ
(S2407にてNo)、C[T[C[4]]+2+k]が指
すこととなる候補セルブロック中の仮予約がキャンセル
され(S2408)、C[T[C[4]]+2+k]にNUL
Lが代入された(S2409)後、S2410へと処理が進めら
れる。
【0103】S2410ではユーザによる予約座席数の入力
が受け付けられてxに代入され、(セルブロック内容に
対応する)必要セル数を(2×x+1)としてセルブロッ
ク割り当て部441が呼び出され(S2411)、セルブロッ
ク割り当て部441では、図11に示すような処理が行われ
て候補セルブロックに対応するセルブロックが確保され
る。続いて、入力を異にしてセル代入部43が2度呼び出
され(S2412、S2413)、(次に図17に示す手順によっ
て)システムセルブロックおよび候補セルブロックのセ
ルブロック内容に対応するセルに値が代入される。
【0104】この後、予約座席数xをもとに予約データ
ベースが検索され、2つの候補が仮予約され、仮予約さ
れた2つの候補がハンドルhが指示する候補セルブロッ
クのセルブロック内容として代入され(S2414)、2つ
の候補が表示され(S2415)、端末部sでの処理は終了
する。新たな予約が要求されなければ(S2401にてN
o)、(上記のようにして仮予約されることとなる)2
つの候補のうちの1つがユーザにより選択されたか否か
が判定される(S2402)。2つの候補のうちの1つが選択
されなければ(S2402にてNo)そのまま端末部sでの
処理は終了し、2つの候補のうちの1つが選択されれば
(S2402にてYes)S2403へと処理が進められる。
【0105】S2403では2つの候補のいずれかを特定す
る選択番号がxに代入され、C[T[C[4]]+2+
k]が指示することとなる候補セルブロック内の選択番
号xに対応する候補が本予約されることとなり(S240
4)、C[T[C[4]]+2+k]にNULLが代入さ
れ、本予約を終了した候補セルブロックを指示するシス
テムブロック中のセルが未使用の状態とされる(S240
5)。
【0106】これらの後、本予約を完了したことが表示
され(S2406)、端末部sでの処理は終了する。上記の
端末部sの処理中S2412、S2413ではセル代入部43が呼
び出されるが、処理に先立ってセルブロックの先頭リフ
ァレンスを指示することとなるハンドルhがnに、値を
代入するセルに対するオフセットがmに、セルに代入す
るための値がvに代入される。図17に示すように、セル
代入部43での処理では、まず、T[n]がNULLであ
るか否か(S71)およびmが0以上C[T[n]+1]未
満であるか否か(S72)が判定される。T[N]がNU
LLであれば(S71にてYes)ハンドルが異常である
ものとして終了され、mが0以上C[T[n]+1]未満
でなければ(S72にてNo)オフセットが異常であるも
のとして終了される。
【0107】T[n]がNULLでなく(S71にてN
o)かつmが0以上C[T[n]+1]未満であれば(S
72にてYes)、C[T[n]+3+m]にvが代入さ
れ(S73)、セル代入部43での処理は終了する。(C
[4]をnに、(k―1)をmに、hをvに代入してセル
代入部43を呼び出す端末部sのS2412の処理によりシス
テムセルブロック内のセルへの値の代入が行われ、hを
nに、0をmに、xをvに代入してセル代入部43を呼び
出す端末部sのS2413の処理により端末部sに対応する
候補セルブロック内のセルへの値の代入が行われる。) 特に、上記のような端末部sのS2411の処理によりセル
ブロック割り当て部441が呼び出されて記憶領域上に候
補セルブロックが確保される際には、システムセルブロ
ックが確保される際と同様、必要に応じて、本発明のガ
ベージコレクタ44(図8参照)によるスカビンジ処理部4
42での処理およびコンパクション処理部443での処理が
行われる。
【0108】実際、セルの個数を50(説明の便宜上小さ
な値をとることとしている)、トレイの個数を4とし次
に[表2]に示すような端末部A1〜端末部C3でのユー
ザの操作を想定すると、図9〜図16に示す本予約システ
ムでの処理は、図18〜図23に示すような記憶領域上のセ
ルの変化を伴うこととなる。
【0109】
【表2】
【0110】図18は[表2]中の操作Iおよび操作II
終了直後のセルの状態を示す図であり、図19は操作II
I終了後から操作IVに際してのスカビンジ処理中S34
の処理(図12参照)直前のセルの状態を示す図であり、
図20は操作IVに際してのスカビンジ処理中S45の処理
直前のセルの状態を示す図であり、図21は操作IVに際
してのスカビンジ処理終了直後のセルの状態を示す図で
ある。また、図22は操作IVに際してのコンパクション
処理中S61の処理(図13参照)直前のセルの状態を示す
図であり、図23は操作IVに際してのコンパクション処
理終了直後のセルの状態を示す図である。
【0111】図18に示すように、操作Iによって端末部
A1から9席の予約が要求され、操作IIによって端末部
B2から4席の予約が要求された直後には、ガベージコレ
クタ44が管理する記憶領域上の50のセルのうち、44まで
が使用されていることとなる。この後、操作IIIによ
って端末部A1から候補の1つが選択されると、図19に示
すように、これに応じて、システムセルブロック中のリ
ファレンス8の値がNULL(値0)に変更される(端末
部A1での図15のS2405での処理に対応)。続いて、操
作IVによって端末部C3から7席の予約が要求される
(端末部C3での図15のS2410での処理に対応)と、必
要セル数15(=2×x+1=2×7+1)は2(=N―U―3
=50―45―3)以下ではないので、スカビンジ処理およ
びコンパクション処理を実行する必要があるものと判定
される(図11のS2201での処理にてNoに対応)。
【0112】スカビンジ処理中S34直前までの処理(図
12参照)によると、まず、ルートセルブロック、システ
ムセルブロック、端末A1に対する候補セルブロックお
よび端末B2に対する候補セルブロックの使用中フラグ
が0に初期化される(ここでは、セルを初期化するNU
LL値を0としているので使用中フラグの値は変更され
ない)。
【0113】ガベージコレクタ44(図8参照)は、セル
ブロック内容を保持するセルの値(ルートセルブロック
中セルC[4]が保持する値、システムセルブロック中
セルC[8]〜セル[10]がそれぞれ保持する値、端末
部A1に対する候補セルブロック中セルC[14]〜セル
C[32]がそれぞれ保持する値、端末部B2に対する候
補セルブロック中セルC[36]〜セルC[44]が保持す
る値)が数値に対応するものであるか、ハンドルに対応
するものであるかをあらかじめ確定することができない
ものであり、S41での処理およびS42での処理によりセ
ルの値が数値に対応するものであるか、ハンドルに対応
するものであるかが推測される。(このような推測はセ
ルブロック間の参照関係を特定するために必要であ
る。) 実際、ルートセルブロック中のセルC[4]が保持する
値1およびシステムセルブロック中のセルC[9]が保持
する値3は、有効ハンドルが取り得る範囲にあり、この
有効ハンドルによって指示されるトレイが保持する値そ
れぞれ5、33がNULL(値0)ではないので、これらの
セルC[4]およびセルC[9]はいずれもハンドルを保
持しているものと推定され、(各セルブロックに対応す
る使用中フラグに1が代入されることにより)これらの
ハンドルにより指示されるトレイ内の値によって指示さ
れるシステムセルブロックおよび端末部B2に対する候
補セルブロックが使用中であるものと推定されることと
なる。
【0114】これに対して、システムセルブロック中の
セルC[8]およびセルC[10]が保持する値0、ならび
に、端末部A1に対する候補セルブロック中のセルC[1
4]が保持する値9は、有効ハンドルが取り得る範囲にな
く、また、端末部B2に対する候補セルブロック中のセ
ルC[36]が保持する値4は、有効ハンドルが取り得る
範囲にあるもののこれにより指示されるトレイには0が
保持されており、これらのセルC[8]、セルC[1
0]、セルC[14]およびセルC[36]はいずれも数値
を保持しているものと推測される。(端末部A1に対す
る候補セルブロックのセルブロック内容を示すセルC
[15]〜セルC[32]および端末部B1に対する候補セ
ルブロックのセルブロック内容であるセルC[37]〜セ
ルC[44]に対しても同様の推測が行われる。) これらのようなセルブロック内容に対応するセルの値に
ついての推測によると、図20に示すように、使用中であ
ると推定された(トレイにより指示されていると推定さ
れた)各セルブロックの使用中フラグ(セルC[3]、
セルC[7]およびセルC[35])に1が代入されること
となる。この後、スカビンジ処理中S45以降の処理によ
り、使用されていないと推測されたセルブロックを指示
するトレイT[2]の値がNULLとされ、セルは図21
に示すような状態となる。
【0115】これらのようにセルの値が数値であるかハ
ンドルであるかの推測を伴うスカビンジ処理によりセル
ブロックの参照関係が推定され、この後に行われるコン
パクション処理により、セルは、図22に示す状態を経て
図23に示す状態となり、操作IVに際して要求された7
席分の座席に対する座席番号(および座席数)を記憶す
るための領域を確保できる状態となる。
【0116】以上のように、本予約システムは、座席の
予約というアプリケーションの動作に直接かかわる部分
(アプリケーション部42、初期化部41、セル代入部43お
よび端末部A1〜端末部C3)と、アプリケーションから
の要求に応じて記憶領域の確保および開放を行うガベー
ジコレクタ44とを含み、ガベージコレクタ44は、(セル
ブロックの確保を指示されること以外)他の部分とは独
立して動作する。特に、ガベージコレクタ44は、(リフ
ァレンスフラグ等を用いることなく)セル内容が数値で
あるかハンドルであるかを推測しつつスカビンジ処理を
行うものであるため、リファレンスフラグ等のための領
域の確保を不要とし、アプリケーションの実行に際して
プロセッサに過大な負荷をかけることを防止することが
でき、また、高速なコンパクションを有効に行うことが
できる。
【0117】続いて、これらのようなガベージコレクタ
44の変形例を説明する。本変形例のガベージコレクタで
は、各トレイに対して使用禁止フラグが設定され、これ
らの使用禁止フラグが用いられつつセルブロックの割り
当てが行われる。(本変形例のガベージコレクタの構
成、動作等は、以下に示すものを除いてガベージコレク
タ44に準ずるものとする。) 図24は本変形例のガベージコレクタの実行に先立って行
われる初期化部での処理(図10に示す処理に対応)を示
すフローチャートであり、図25は本変形例のガベージコ
レクタのセルブロック割り当て部での処理(図11に示す
処理に対応)を示すフローチャートであり、図26は本変
形例のガベージコレクタのセル代入部での処理(図17に
示す処理に対応)を示すフローチャートである。
【0118】本変形例のガベージコレクタに対する予約
システムの初期化部では、図24のS3106の処理として示
すように、トレイT[x]がNULLに初期化されるに
伴いこのトレイに対応する使用禁止フラグD[x]が0
に初期化される。本変形例のガベージコレクタのセル代
入部では、図26のS3074およびS3075の処理として示す
ようにして、使用されるセルに代入される値がハンドル
に対応する値の範囲にあり、かつ、そのハンドルに対応
するトレイがNULLを保持している場合、このトレイ
の使用を禁止するため、対応する使用禁止フラグD
[x]に1が代入される。
【0119】また、セルブロック割り当て部では、図25
のS3207の処理として示すように、NULLを保持しか
つ対応する使用禁止フラグが0であるトレイに対して、
新たに割り当てられるセルブロックに対応するハンドル
hが特定されることとなる。さらに、セルブロック割り
当て部では、S3210〜S3215の処理として示すように、
hがトレイの個数M以下でなければ(S3206にてNo)
すべての使用禁止フラグが0とされてトレイの使用の禁
止が解除され、再びS3205からの処理が行われる。
【0120】まず、ワークフラグfに0、iに1が代入
され(S3210)、トレイT[i]に対応する使用禁止フ
ラグD[i]が1であるか否かが判定される(S321
1)。D[i]が1であれば(S3211にてYes)fに1
が代入されD[i]に0が代入された(S3212)後、ま
た、D[i]が1でなければ(S3211にてNo)S3212
での処理は行われることないまま、iがトレイの個数M
に等しいか否かが判定される(S3213)。iがMに等し
くなければ(S3213にてNo)iに1が加えられてS321
1からの処理が繰り返され、iがMに等しければ(S321
3にてYes)続いてfが1であるか否かが判定される
(S3215)。
【0121】fが1でなければ(S3215にてNo)トレ
イが不足しているものとして異常終了し、fが1であれ
ば(S3215にてYes)S3205へと処理が進められ、こ
れ以降の処理によって、NULLを保持しかつ対応する
使用禁止フラグが0に変更されたトレイに対して、新た
に割り当てられるセルブロックに対応するハンドルhが
特定されることとなる。
【0122】すなわち、上記のようなセル代入部での処
理により、後のスカビンジ処理にて数値と推測されるで
あろう、セルの値に対応するトレイを使用禁止とし、ま
た、上記のようなセルブロック割り当て部での処理によ
り、NULLを保持しかつ対応する使用禁止フラグが0
であるトレイのみに対して、新たに割り当てられるセル
ブロックに対応するハンドルhを特定することにより、
スカビンジ処理部でのセル内容の推測をより適切に行わ
せることができる。
【0123】より詳細には、ガベージコレクタ44のスカ
ビンジ処理部での処理では、セル内の値がハンドルに対
応する値の範囲にあって、かつ、このセル内の値をハン
ドルであるとみなしたときこのハンドルによって特定さ
れるトレイがNULLを保持していないときに限って、
セルがハンドルを保持していると推測される。ハンドル
に対応する値の範囲にある数値がセルに代入されると
き、この数値をハンドルとみなしたときにこのハンドル
によって特定されるトレイがNULLを保持している場
合にこのトレイに対応する使用禁止フラグを1とするこ
とにより、トレイの使用が禁止されトレイはNULLを
保持したままとなるので、ハンドルに対応する値の範囲
にあるセル内の数値がハンドルであると誤推測されるこ
とが防止されることとなり、セルの開放が遅延すること
を防止することができる。
【0124】さらに、使用することのできるトレイがな
くなった際には、使用禁止フラグによるトレイの使用の
禁止が解除され、使用されていないセルの開放の遅延を
防止しつつ、トレイを有効に利用することができること
となる。
【0125】
【発明の効果】本発明に係るガベージコレクション装置
は、第1種アドレスにより特定され第2種アドレスおよび
第2種アドレス以外の数値のいずれかのデータを保持す
るセルからなる複数のセルブロックのうち、第2種アド
レスにより特定され第1種アドレスを保持するトレイを
介して他のセルブロックへの参照を繰り返すことにより
所定のルートセルブロックからたどることのできるセル
ブロック以外の、未使用セルブロックを特定するスカビ
ンジ処理と、前記特定された未使用セルブロックおよび
スカビンジ処理に先立ちデータを保持しない連続する複
数のセルが1つの連続する領域として配置されるよう、
第1種アドレスおよびセルからなるメモリ上でセルブロ
ックを移動させ、セルブロックの移動前後にて前記参照
の関係が保たれるよう、トレイに保持されている第1種
アドレスを更新するコンパクション処理とを行う。
【0126】本ガベージコレクション装置では、第1セル
ブロックに含まれるセルが第2種アドレスを保持してい
るか否かを、第2種アドレスが保持されている際に第2種
アドレスが保持されていないと誤ることがないよう推測
し、第2種アドレスを保持していると推測されたセルに
より指示されるトレイが保持する、第1種アドレスに対
応するセルを含む第2セルブロックを、第1セルブロック
から参照があるものと推定することによって、前記スカ
ビンジ処理での未使用セルブロックの特定が行われる。
【0127】これにより、セルの特定にトレイ(間接ア
ドレッシング)が用いられ、コンパクション処理ではト
レイに保持されている第1種アドレスが更新されること
となり、セル自体の内容が更新されることはなく、(第
3の従来例のガベージコレクタとは異なり)有効に高速
にコンパクションを行うことができる。また、これらの
スカビンジ処理、コンパクション処理に際しては、(第
1の従来例のガベージコレクタおよび第2の従来例のガベ
ージコレクタのように)リファレンスフラグ等を用いて
アプリケーションと情報交換することがないので、リフ
ァレンスフラグのための領域を確保する必要がなく、セ
ルを利用するアプリケーションの実行に対して過大な負
荷となることが防止される。
【0128】上記のガベージコレクション装置では、前
記スカビンジ処理により新たに特定された未使用セルブ
ロックを指示することとなったトレイを、第1種アドレ
スを保持しない未使用トレイとするものとすることがで
きる。これにより、上記のような効果に加えて、新たに
セルの使用が要求されたとき使用を終えたトレイが有効
に再利用されることとなる。
【0129】また、上記のガベージコレクション装置で
は、セルが保持しているデータが第2種アドレスに対応
する範囲にあり、かつ、前記データを第2種アドレスと
みなしたとき指示されることとなるトレイが未使用トレ
イでないときに限って、前記データが第2種アドレスで
あると、前記推測を行い、新たにセルに代入される数値
を第2種アドレスとみなしたとき、前記第2種アドレスに
よって指示されることとなるトレイの使用を禁止するも
のとすることができる。
【0130】これにより、先述のような効果に加えて、
新たにセルに代入される数値に対応するトレイの使用が
禁止され、(セルに代入されるデータによって特定され
るトレイが未使用トレイであるか否かが推測の際に判定
されるため、)第2種アドレスと同一の範囲内にある数
値を第2種アドレスと誤って推測することが回避される
こととなる。
【0131】さらに、上記のガベージコレクション装置
では、第1種アドレスを保持することまたは使用が禁止さ
れていることにより所定の個数のトレイが使用できない
際、新たなトレイの使用が要求されたときに、前記トレ
イに対する使用の禁止をすべて解除するものとすること
ができる。これにより、先述のような効果に加えて、誤
推測が回避されつつ、加えて使用を終えたトレイが有効
に再利用されることとなる。
【図面の簡単な説明】
【図1】本発明の実施例の1つであるガベージコレクタが
用いるヒープ領域の構成を説明するための図である。
【図2】ヒープ領域を構成するセルに格納される内容の
例およびこれらのセル間の参照関係を示す図である。
【図3】本ガベージコレクタが用いるヒープ領域にて割
り当てられるセルブロックの例およびこれらのセルブロ
ック間の参照関係を示す図である。
【図4】図3に示す状態のヒープ領域に対するガベージコ
レクションを説明するための図である。
【図5】本ガベージコレクタが行うスカビンジ処理の手
順を示す第1のフローチャートである。
【図6】本ガベージコレクタが行うスカビンジ処理の手
順を示す第2のフローチャートである。
【図7】本発明に係るガベージコレクタを用いる予約シ
ステムの構成の概略を示す図である。
【図8】本予約システムに含まれる予約データベース管
理部4の構成を説明するための図である。
【図9】アプリケーション部42での処理の手順を示すフ
ローチャートである。
【図10】初期化部41での処理の手順を示すフローチャー
トである。
【図11】セルブロック割り当て部441での処理の手順を
示すフローチャートである。
【図12】セルブロック割り当て部441から呼び出される
スカビンジ処理部442での処理の手順を示すフローチャ
ートである。
【図13】セルブロック割り当て部441から呼び出される
コンパクション処理部443での処理の手順を示す第1のフ
ローチャートである。
【図14】コンパクション処理部443での処理の手順を示
す第2のフローチャートである。
【図15】端末部A1〜端末部C3の各々での処理の手順を
示す第1のフローチャートである。
【図16】端末部A1〜端末部C3の各々での処理の手順を
示す第2のフローチャートである。
【図17】端末部A1〜端末部C1から呼び出されるセル代
入部43での処理の手順を示すフローチャートである。
【図18】[表2]中の操作Iおよび操作II終了直後の
セルの状態を示す図である。
【図19】操作III終了後から操作IVに際してのスカ
ビンジ処理中S34の処理(図12参照)直前のセルの状態
を示す図である。
【図20】操作IVに際してのスカビンジ処理中S45の処
理直前のセルの状態を示す図である。
【図21】操作IVに際してのスカビンジ処理終了直後の
セルの状態を示す図である。
【図22】操作IVに際してのコンパクション処理中S61
の処理(図13参照)直前のセルの状態を示す図である。
【図23】操作IVに際してのコンパクション処理終了直
後のセルの状態を示す図である。
【図24】本変形例のガベージコレクタの実行に先立って
行われる初期化部での処理(図10に示す処理に対応)を
示すフローチャートである。
【図25】本変形例のガベージコレクタのセルブロック割
り当て部での処理(図11に示す処理に対応)を示すフロ
ーチャートである。
【図26】本変形例のガベージコレクタのセル代入部での
処理(図17に示す処理に対応)を示すフローチャートで
ある。
【図27】ガベージコレクタが用いるヒープ領域の構成を
説明するための図である。
【図28】ヒープ領域を構成するセルに格納される内容の
例を示す図である。
【図29】複数のセルから構成されるセルブロックの例を
示す図である。
【図30】図29(b)に示す状態のヒープ領域に対するガ
ベージコレクションを説明するための図である。
【図31】第1の従来例のガベージコレクタが用いるヒー
プ領域の構成を説明するための図である。
【図32】ヒープ領域を構成するセルに格納される内容の
例およびこれらのセル間の参照関係を示す図である。
【図33】第1の従来例のガベージコレクタが用いるヒー
プ領域にて割り当てられるセルブロックの例およびこれ
らのセルブロック間の参照関係を示す図である。
【図34】図33に示す状態のヒープ領域に対するガベージ
コレクションを説明するための図である。
【図35】第1の従来例のガベージコレクタが行うスカビ
ンジ処理Aの手順を示すフローチャートである。
【図36】第1の従来例のガベージコレクタが行うコンパ
クション処理Aの手順を示す第1のフローチャートであ
る。
【図37】第1の従来例のガベージコレクタが行うコンパ
クション処理Aの手順を示す第2のフローチャートであ
る。
【図38】第2の従来例のガベージコレクタが用いるヒー
プ領域の構成を説明するための図である。
【図39】ヒープ領域を構成するセルに格納される内容お
よびトレイに格納される内容の例ならびにこれらのセル
間の参照関係を示す図である。
【図40】第2の従来例のガベージコレクタが用いるヒー
プ領域にて割り当てられるセルブロックの例およびこれ
らのセルブロック間の参照関係を示す図である。
【図41】図40に示す状態のヒープ領域に対するガベージ
コレクションを説明するための図である。
【図42】第2の従来例のガベージコレクタが行うコンパ
クション処理Bの手順を示すフローチャートである。
【図43】第3の従来例のガベージコレクタが用いるヒー
プ領域のセルに格納される内容の例を示す図である。
【図44】第3の従来例のガベージコレクタが用いるヒー
プ領域にて割り当てられるセルブロックの例およびこれ
らのセルブロック間の参照関係を示す図である。
【図45】図44に示す状態のヒープ領域に対するガベージ
コレクションを説明するための図である。
【図46】第3の従来例のガベージコレクタが行うスカビ
ンジ処理Bの手順を示すフローチャートである。
【符号の説明】
1 端末部A 2 端末部B 3 端末部C 4 予約データベース管理部 41 初期化部 42 アプリケーション部 43 セル代入部 44 ガベージコレクタ 441 セルブロック割り当て部 442 スカビンジ処理部 443 コンパクション処理部

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 第1種アドレスにより特定され第2種アド
    レスおよび第2種アドレス以外の数値のいずれかのデー
    タを保持するセルからなる複数のセルブロックのうち、
    第2種アドレスにより特定され第1種アドレスを保持する
    トレイを介して他のセルブロックへの参照を繰り返すこ
    とにより所定のルートセルブロックからたどることので
    きるセルブロック以外の、未使用セルブロックを特定す
    るスカビンジ処理と、 前記特定された未使用セルブロックおよびスカビンジ処
    理に先立ちデータを保持しない連続する複数のセルが1
    つの連続する領域として配置されるよう、第1種アドレ
    スおよびセルからなるメモリ上でセルブロックを移動さ
    せ、セルブロックの移動前後にて前記参照の関係が保た
    れるよう、トレイに保持されている第1種アドレスを更
    新するコンパクション処理とを行うガベージコレクショ
    ン装置であって、 前記スカビンジ処理での未使用セルブロックの特定を、 第1セルブロックに含まれるセルが第2種アドレスを保持
    しているか否かを、第2種アドレスが保持されている際
    に第2種アドレスが保持されていないと誤ることがない
    よう推測し、 第2種アドレスを保持していると推測されたセルにより
    指示されるトレイが保持する、第1種アドレスに対応す
    るセルを含む第2セルブロックを、第1セルブロックから
    参照があるものと推定することによって行うことを特徴
    とするガベージコレクション装置。
  2. 【請求項2】 前記スカビンジ処理により新たに特定さ
    れた未使用セルブロックを指示することとなったトレイ
    を、第1種アドレスを保持しない未使用トレイとする請
    求項1に記載のガベージコレクション装置。
  3. 【請求項3】 セルが保持しているデータが第2種アドレ
    スに対応する範囲にあり、かつ、前記データを第2種ア
    ドレスとみなしたとき指示されることとなるトレイが未
    使用トレイでないときに限って、前記データが第2種ア
    ドレスであると、前記推測を行い、 新たにセルに代入される数値を第2種アドレスとみなし
    たとき、前記第2種アドレスによって指示されることと
    なるトレイの使用を禁止する請求項1に記載のガベージ
    コレクション装置。
  4. 【請求項4】 第1種アドレスを保持することまたは使用
    が禁止されていることにより所定の個数のトレイが使用
    できない際、新たなトレイの使用が要求されたときに、
    前記トレイに対する使用の禁止をすべて解除する請求項
    3に記載のガベージコレクション装置。
  5. 【請求項5】 第1種アドレスにより特定され第2種アド
    レスおよび第2種アドレス以外の数値のいずれかのデー
    タを保持するセルからなる複数のセルブロックのうち、
    第2種アドレスにより特定され第1種アドレスを保持する
    トレイを介して他のセルブロックへの参照を繰り返すこ
    とにより所定のルートセルブロックからたどることので
    きるセルブロック以外の、未使用セルブロックを特定す
    るスカビンジ処理と、 前記特定された未使用セルブロックおよびスカビンジ処
    理に先立ちデータを保持しない連続する複数のセルが1
    つの連続する領域として配置されるよう、第1種アドレ
    スおよびセルからなるメモリ上でセルブロックを移動さ
    せ、セルブロックの移動前後にて前記参照の関係が保た
    れるよう、トレイに保持されている第1種アドレスを更
    新するコンパクション処理とを含むガベージコレクショ
    ン方法であって、 前記スカビンジ処理での未使用セルブロックの特定を、 第1セルブロックに含まれるセルが第2種アドレスを保持
    しているか否かを、第2種アドレスが保持されている際
    に第2種アドレスが保持されていないと誤ることがない
    よう推測し、 第2種アドレスを保持していると推測されたセルにより
    指示されるトレイが保持する、第1種アドレスに対応す
    るセルを含む第2セルブロックを、第1セルブロックから
    参照があるものと推定することによって行うことを特徴
    とするガベージコレクション方法。
  6. 【請求項6】 インストールされて実行されることによ
    り、第1種アドレスにより特定され第2種アドレスおよび
    第2種アドレス以外の数値のいずれかのデータを保持す
    るセルからなる複数のセルブロックのうち、第2種アド
    レスにより特定され第1種アドレスを保持するトレイを
    介して他のセルブロックへの参照を繰り返すことにより
    所定のルートセルブロックからたどることのできるセル
    ブロック以外の、未使用セルブロックを特定するスカビ
    ンジ処理と、 前記特定された未使用セルブロックおよびスカビンジ処
    理に先立ちデータを保持しない連続する複数のセルが1
    つの連続する領域として配置されるよう、第1種アドレ
    スおよびセルからなるメモリ上でセルブロックを移動さ
    せ、セルブロックの移動前後にて前記参照の関係が保た
    れるよう、トレイに保持されている第1種アドレスを更
    新するコンパクション処理とを行うガベージコレクタと
    して動作する、プログラムを記録したコンピュータ読み
    取り可能な記録媒体であって、 前記スカビンジ処理での未使用セルブロックの特定を、 第1セルブロックに含まれるセルが第2種アドレスを保持
    しているか否かを、第2種アドレスが保持されている際
    に第2種アドレスが保持されていないと誤ることがない
    よう推測し、 第2種アドレスを保持していると推測されたセルにより
    指示されるトレイが保持する、第1種アドレスに対応す
    るセルを含む第2セルブロックを、第1セルブロックから
    参照があるものと推定することによって行うことを特徴
    とする、プログラムを記録したコンピュータ読み取り可
    能な記録媒体。
JP2000020844A 2000-01-28 2000-01-28 ガベージコレクション装置および方法 Expired - Fee Related JP4050855B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000020844A JP4050855B2 (ja) 2000-01-28 2000-01-28 ガベージコレクション装置および方法
US09/772,257 US6766336B2 (en) 2000-01-28 2001-01-29 Garbage collection apparatus and a garbage collection method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000020844A JP4050855B2 (ja) 2000-01-28 2000-01-28 ガベージコレクション装置および方法

Publications (2)

Publication Number Publication Date
JP2001209572A true JP2001209572A (ja) 2001-08-03
JP4050855B2 JP4050855B2 (ja) 2008-02-20

Family

ID=18547341

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000020844A Expired - Fee Related JP4050855B2 (ja) 2000-01-28 2000-01-28 ガベージコレクション装置および方法

Country Status (2)

Country Link
US (1) US6766336B2 (ja)
JP (1) JP4050855B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004295889A (ja) * 2003-03-26 2004-10-21 Arm Ltd データ処理システム内での処理タスクの実行を制御する方法および装置

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8245239B2 (en) * 2005-07-06 2012-08-14 Honeywell International Inc. Deterministic runtime execution environment and method
US7962707B2 (en) * 2005-07-06 2011-06-14 Honeywell International Inc. Apparatus and method for deterministic garbage collection of a heap memory
US7827373B2 (en) * 2005-10-31 2010-11-02 Honeywell International Inc. System and method for managing a short-term heap memory
KR100725410B1 (ko) * 2006-01-20 2007-06-07 삼성전자주식회사 전원 상태에 따라 비휘발성 메모리의 블록 회수를 수행하는장치 및 그 방법
US9772936B2 (en) * 2008-07-10 2017-09-26 Micron Technology, Inc. Data collection and compression in a solid state storage device
US10635316B2 (en) 2014-03-08 2020-04-28 Diamanti, Inc. Methods and systems for data storage using solid state drives
US10289566B1 (en) * 2017-07-28 2019-05-14 EMC IP Holding Company LLC Handling data that has become inactive within stream aware data storage equipment

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4775932A (en) * 1984-07-31 1988-10-04 Texas Instruments Incorporated Computer memory system with parallel garbage collection independent from an associated user processor
US5561785A (en) * 1992-10-29 1996-10-01 International Business Machines Corporation System for allocating and returning storage and collecting garbage using subpool of available blocks
JPH08106415A (ja) 1994-10-04 1996-04-23 Fujitsu Ltd ガーベジコレクタ装置
JPH10111830A (ja) 1996-10-08 1998-04-28 Fujitsu Ltd 動的記憶領域管理装置
JPH10320263A (ja) 1997-05-22 1998-12-04 Fujitsu Ltd Gcアタッチメント装置及びプログラム記憶媒体
JPH11120072A (ja) 1997-10-21 1999-04-30 Fujitsu Ltd ガーベジコレクタ付加装置
US6249793B1 (en) * 1999-06-10 2001-06-19 Sun Microsystems, Inc. Mostly concurrent compaction in a garbage collection system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004295889A (ja) * 2003-03-26 2004-10-21 Arm Ltd データ処理システム内での処理タスクの実行を制御する方法および装置
US8176286B2 (en) 2003-03-26 2012-05-08 Edward Colles Nevill Memory recycling in computer systems

Also Published As

Publication number Publication date
JP4050855B2 (ja) 2008-02-20
US6766336B2 (en) 2004-07-20
US20010042074A1 (en) 2001-11-15

Similar Documents

Publication Publication Date Title
US11775429B2 (en) NUMA-aware garbage collection
JP3942941B2 (ja) 通信装置及びプラグインモジュール制御方法及びコンピュータに実行させるためのプログラム及びコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体
US6804691B2 (en) Method for optimization of memory usage for a computer program
JP2002251307A (ja) データベース管理システム、データベース管理システムにおける問合せ方法、およびデータベース管理システムにおける問い合わせ実行プログラム
CN113094183B (zh) Ai训练平台的训练任务创建方法、装置、系统及介质
CN110413282A (zh) 一种冗余资源处理方法、装置、设备及存储介质
JP2001209572A (ja) ガベージコレクション装置および方法
CN115827162A (zh) 一种智能化处理镜像仓库数据方法、装置、介质及设备
CN113805816B (zh) 一种磁盘空间管理方法、装置、设备及存储介质
CN111190711B (zh) Bdd结合启发式a*搜索的多机器人任务分配方法
JP2004030567A (ja) キューを維持するための方法及び装置
US20090168092A1 (en) Job management and scheduling method for network system
CN114168594A (zh) 一种水平分区表的二级索引创建方法、装置、设备及存储介质
CN108563507A (zh) 一种内存管理方法、装置、设备及可读存储介质
JPH0566989A (ja) 情報処理システムにおける記憶管理装置
CN117009090B (zh) 设计层次树子结点信息存储方法、电子设备和介质
Kale et al. Efficient parallel graph coloring with prioritization
CN116610456B (zh) 一种基于急切内存重用算法的内存优化方法
CN112445428B (zh) 一种硬盘主从垃圾回收方法及装置
JPH06282446A (ja) ジョブスケジュール作成方法
JPH10124363A (ja) 順編成索引管理方法
CN117556088A (zh) 内存多维数据库的数据管理方法及装置
CN117555488A (zh) 磁盘资源管理方法、装置、电子设备及存储介质
CN117608497A (zh) 一种车辆诊断设备存储空间管理方法、装置、设备及介质
JPH08249171A (ja) 通信サービス仕様作成方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060906

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070809

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070821

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071015

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20071106

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071130

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4050855

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101207

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101207

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111207

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111207

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121207

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121207

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131207

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees