JPH0552974B2 - - Google Patents
Info
- Publication number
- JPH0552974B2 JPH0552974B2 JP17179288A JP17179288A JPH0552974B2 JP H0552974 B2 JPH0552974 B2 JP H0552974B2 JP 17179288 A JP17179288 A JP 17179288A JP 17179288 A JP17179288 A JP 17179288A JP H0552974 B2 JPH0552974 B2 JP H0552974B2
- Authority
- JP
- Japan
- Prior art keywords
- pointer
- cell
- area
- sweep
- garbage collection
- 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.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 claims description 77
- 238000005056 compaction Methods 0.000 claims description 27
- 238000012545 processing Methods 0.000 description 32
- 238000010586 diagram Methods 0.000 description 15
- 230000000694 effects Effects 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 2
- 238000010408 sweeping Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Description
【発明の詳細な説明】
〔産業上の利用分野〕
この発明は計算機において、プログラム実行中
に動的に生成されたガベージデータを実メモリの
一端に詰め合わせるガベージコレクシヨン方式に
関するものである。DETAILED DESCRIPTION OF THE INVENTION [Field of Industrial Application] The present invention relates to a garbage collection method in a computer, in which garbage data dynamically generated during program execution is packed into one end of real memory.
従来の計算機の応用分野は数値計算が主流であ
つた。近年人間の知識を直接取扱ういわゆる記号
処理が注目を集め、人工知能ブームと呼ばれるま
でになつている。これら、記号処理では、主記憶
(実メモリ)中の有意なデータをポインタとよば
れる主記憶のアドレスを内容とするデータで指し
示し必要なデータをポインタでつなぐ処理が多用
される。このポインタでつなぐ処理はプログラム
実行中に必要に応じて行われ、ポインタの張替な
ども行われる。ポインタの張替により参照されな
くなつた主記憶上の領域はそれ以後のプログラム
実行中に二度と参照されない。このようなデータ
をガベージと呼ぶ。ガベージデータはプログラム
実行中に動的に生成され主記憶中に散在している
のでこれを除き主記憶全体を圧縮する処理、すな
わちガベージコレクシヨンが必要となる。
Numerical calculations have been the main field of application for conventional computers. In recent years, so-called symbolic processing, which directly handles human knowledge, has attracted attention and has even been called an artificial intelligence boom. These symbolic processes often involve pointing to significant data in the main memory (real memory) using data whose content is an address in the main memory, called a pointer, and connecting necessary data with a pointer. This process of connecting with pointers is performed as necessary during program execution, and pointers are also replaced. An area in the main memory that is no longer referenced due to pointer replacement will not be referenced again during subsequent program execution. Such data is called garbage. Garbage data is dynamically generated during program execution and is scattered in the main memory, so it is necessary to remove it and compress the entire main memory, ie, garbage collection.
マーク&スライデイングコンパクシヨン方式の
ガベージコレクシヨンでは、まずプログラム実行
のために必要なデータを保持している主記憶セル
にマーク付け(マーキングと呼ぶ)を行う。次に
スライデイングコンパクシヨンではマーク付けの
されているセルを主記憶の一端からマーク付けさ
れているセルの相互の位置関係を保つたまま詰め
合わせを行う。スライデイングコンパクシヨンの
アルゴリズムは、COMM OF THE ACM、21、
8、1978 (PP662−665)に発表されたモリス
の方法が有名である。これは、ガベージコレクシ
ヨン対象領域の詰め合わせを行うことにより必要
になるポインタの値の変更(ポインタのメンテナ
ンスと呼ぶ)を特別な作業領域を使わず、逆転ポ
インタを使用し、対象領域を2回スイープするこ
とによつて行う方式である。 In garbage collection using the mark and sliding compaction method, first, a mark is placed on the main memory cells that hold data necessary for program execution. Next, in sliding compaction, the marked cells are packed from one end of the main memory while maintaining the mutual positional relationship of the marked cells. The sliding compaction algorithm is COMM OF THE ACM, 21,
8, 1978 (PP662-665) is famous. This method uses an inverted pointer and sweeps the target area twice, without using a special work area, to change the pointer value (called pointer maintenance) that is required by reorganizing the garbage collection target area. This method is carried out by
第20図〜第23図は先に述べたモリスのアル
ゴリズムとして知られるスライデイング・コンパ
クシヨンの解説図である。第20図において、1
はプログラムの実行単位であるプロセス毎に独立
した論理空間に対応する実メモリの1セルずつス
イープするためのポインタ、2はセル3を参照す
る上向きポインタ4を保持しているセル、5はセ
ル3からセル2を参照する逆転ポインタである。
第21図において、3′はセル3の移動先セル、
6は逆転ポインタ5を処理することによつて、得
られる上向きポインタ4に対応するガベージコレ
クシヨン後のポインタである。第22図におい
て、7は不要領域(ごみ)でないセルを論理空間
の一端から詰め合わせるためのロケーシヨンポイ
ンタ、8はセル11を参照している下向きポイン
タ、12はポインタ8を処理した時に生成される
逆転ポインタである。第23図において、13は
逆転ポインタ12を処理することで得られる上記
ポインタ8に対応するガベージコレクシヨン後の
ポインタである。 FIGS. 20 to 23 are explanatory diagrams of the sliding compaction known as the Morris algorithm mentioned above. In Figure 20, 1
is a pointer for sweeping one cell at a time in real memory corresponding to an independent logical space for each process, which is a program execution unit, 2 is a cell holding upward pointer 4 that refers to cell 3, and 5 is cell 3 This is an inverted pointer that refers to cell 2 from cell 2.
In FIG. 21, 3' is the destination cell of cell 3,
6 is a pointer after garbage collection that corresponds to the upward pointer 4 obtained by processing the reverse pointer 5. In FIG. 22, 7 is a location pointer for packing cells that are not unnecessary areas (garbage) from one end of the logical space, 8 is a downward pointer that refers to cell 11, and 12 is a pointer generated when pointer 8 is processed. This is an inverted pointer. In FIG. 23, 13 is a pointer after garbage collection that corresponds to the pointer 8 obtained by processing the inverted pointer 12.
次にモリスの方法によるコンパクシヨン動作に
ついて説明する。コンパクシヨンはガベージコレ
クシヨンの対象とする論理空間のスイープを2パ
スすなわち2回のスイープによつて行う。このと
き、対象領域中のガベージセルの総数がわかつて
いること、ガベージでないセルにはマーク付けが
なされていることが前提条件である。これらの条
件を満足するようにマーキングが行われる。 Next, the compaction operation according to Morris' method will be explained. In compaction, the logical space to be garbage collected is swept through two passes, that is, two sweeps. At this time, the preconditions are that the total number of garbage cells in the target area is known and that non-garbage cells are marked. Marking is performed to satisfy these conditions.
第20図および第21図はコンパクシヨンフエ
ーズの1パス目の処理を示す。1パス目のスイー
プは詰め合わせを行う方向と同一方向に行う。主
記憶のスイープポインタ1はセル2からセル3の
方向へスイープする。又図中においてセル2の論
理アドレスはセル3の論理アドレスより大きい。
1パス目の処理では、上向きポインタ(ポインタ
の書かれているセルより論理アドレスの小さいセ
ルを参照しているポインタ)と逆転ポインタのみ
が処理対象となる。第20図はスイープポインタ
1が上向きポインタ4を検出した時の処理であ
る。この場合、セル3にセル2への逆転ポインタ
5を書き、セル2にはセル3の内容をコピーす
る。第21図はスイープポインタ1が逆転ポイン
タ5を検出した時の処理である。逆転ポインタ5
の参照しているセル2には、セル3のガベージコ
レクシヨン後、移動先アドレスを計算し、セル3
の移動先セル3′へのポインタ6を書く。又、セ
ル2の内容はセル3にコピーする。このガベージ
コレクシヨン後の移動先アドレスは、以下のよう
にして求める。スイープポインタ1は、不要領域
のセルを検出するごとにコンパクシヨン開始時に
知つていたコンパクシヨン対象領域の不要領域セ
ル数を減らしていく。このようにすることで、ス
イープポインタは現在スイープ中の論理アドレス
と未スイープ領域中に存在する不要領域セル数と
から現在スイープ中のセルのガベージコレクシヨ
ン後、移動先論理アドレスを計算することが可能
である。 FIGS. 20 and 21 show the first pass processing of the compaction phase. The first pass sweep is performed in the same direction as the sorting direction. Sweep pointer 1 in the main memory sweeps from cell 2 to cell 3. Also, in the figure, the logical address of cell 2 is greater than the logical address of cell 3.
In the first pass processing, only upward pointers (pointers that refer to cells with a smaller logical address than the cell in which the pointer is written) and reverse pointers are processed. FIG. 20 shows the process when the sweep pointer 1 detects the upward pointer 4. In this case, a reverse pointer 5 to cell 2 is written in cell 3, and the contents of cell 3 are copied to cell 2. FIG. 21 shows the process when the sweep pointer 1 detects the reverse pointer 5. Reverse pointer 5
After the garbage collection of cell 3, the destination address is calculated for cell 2, which is referenced by cell 3.
Write a pointer 6 to the destination cell 3'. Also, the contents of cell 2 are copied to cell 3. The destination address after garbage collection is determined as follows. The sweep pointer 1 reduces the number of unnecessary area cells in the compaction target area known at the start of compaction each time it detects cells in the unnecessary area. By doing this, the sweep pointer can calculate the destination logical address after garbage collection of the cell currently being swept from the logical address currently being swept and the number of unnecessary area cells existing in the unswept area. It is.
第22図および第23図は、2パス目の論理空
間スイープでスイープポインタ1がポインタの書
かれているセルを検出した場合の処理である。こ
の時、実際の論理空間内でのセルの詰め合わせと
下向きポインタの処理、下向きポインタの処理中
に生成した逆転ポインタの処理を行う。ロケーシ
ヨンポインタ7は初めに論理アドレスが最小のセ
ルを押さえる。スイープポインタ1が不要領域で
ないセル10を検出し、かつそのセル10の内容
がポインタでなければロケーシヨンポインタ7の
ポイント先セルにスイープポインタ1のポイント
先セルの内容をコピーしロケーシヨンポインタ7
の値を1増す。第22図において、スイープポイ
ンタ1は下向きポインタ8の書かれているセル1
0を検出している。この時、セル10からの下向
きポインタ8により参照されているセル11には
ロケーシヨンポインタ7が参照しているセル9へ
のポインタ12を書く。第22図に示した例では
ロケーシヨンポインタ7の参照しているセル9に
Xが書かれている。これはXがポインタでなかつ
た場合であり、正確にはスイープポインタ1が参
照していたセル10の内容が、Xであつたと考え
て処理を続ける。第23図はスイープポインタ1
が逆転ポインタ12の書かれているセル11を検
出している。この時、逆転ポインタ12の参照し
ているセル9にはロケーシヨンポインタ7の参照
しているセル14へのポインタ13が書かれる。 FIGS. 22 and 23 show the processing when the sweep pointer 1 detects a cell in which the pointer is written in the second pass of the logical space sweep. At this time, the cells are arranged in the actual logical space, the downward pointer is processed, and the inverted pointer generated during the downward pointer processing is processed. The location pointer 7 first selects the cell with the smallest logical address. Sweep pointer 1 detects a cell 10 that is not an unnecessary area, and if the content of that cell 10 is not a pointer, copies the content of the cell pointed to by sweep pointer 1 to the cell pointed to by location pointer 7, and moves the location pointer 7 to the cell pointed to by sweep pointer 1.
Increase the value by 1. In FIG. 22, sweep pointer 1 is cell 1 where downward pointer 8 is written.
0 is detected. At this time, a pointer 12 to cell 9, which is referred to by location pointer 7, is written in cell 11, which is referred to by downward pointer 8 from cell 10. In the example shown in FIG. 22, an X is written in the cell 9 referred to by the location pointer 7. This is a case where X is not a pointer, and to be more precise, processing continues assuming that the contents of cell 10 referred to by sweep pointer 1 were X. Figure 23 shows sweep pointer 1
detects the cell 11 in which the inversion pointer 12 is written. At this time, a pointer 13 pointing to the cell 14 referred to by the location pointer 7 is written in the cell 9 referred to by the inversion pointer 12.
このように、第22図の左側に示したセル9と
セル11の関係はそのままにして論理空間のアド
レスのより小さい側に詰め合わされる。又、第2
3図に示すように2パス目の処理において、スイ
ープポインタ1が上向きポインタ12を検出した
場合、上向きポインタ12の値はすでに1パス目
の処理でガベージコレクシヨン後の値にメンテナ
ンスされているので、スイープポインタ1が参照
しているセル11の内容をロケーシヨンポインタ
7の参照しているセル14にコピーすれば良い。 In this way, the relationship between cells 9 and 11 shown on the left side of FIG. 22 remains unchanged and they are packed on the side with smaller addresses in the logical space. Also, the second
As shown in Figure 3, when the sweep pointer 1 detects the upward pointer 12 in the second pass processing, the value of the upward pointer 12 has already been maintained to the value after garbage collection in the first pass processing, so The contents of the cell 11 referred to by the sweep pointer 1 may be copied to the cell 14 referred to by the location pointer 7.
ところが、上述したように従来のガベージコレ
クシヨン方式におけるスライデイングコンパクシ
ヨンアルゴリズムでは、スライデイングコンパク
シヨン対象領域のメモリスイープを2回行う必要
があり、また、マーキング時にマーク付けしたセ
ルの総数などの計測がスライデイングコンパクシ
ヨンに必要となり、これによりガベージコレクシ
ヨンの処理時間が長くなつてしまうという問題点
があつた。
However, as mentioned above, in the sliding compaction algorithm of the conventional garbage collection method, it is necessary to perform memory sweep of the sliding compaction target area twice, and it is difficult to measure the total number of cells marked at the time of marking. This is necessary for sliding compaction, which poses a problem in that the processing time for garbage collection becomes longer.
この発明は上記のような問題点を解決するため
になされたもので、スライデイングコンパクシヨ
ン対象領域のメモリスイープを1回で終わらせる
とともに、マーキング時にマーク付けしたセルの
総数の計測を不要にし、ガベージコレクシヨンの
処理時間を短縮できるガベージコレクシヨン方式
を提供することを目的とする。 This invention was made in order to solve the above-mentioned problems, and it completes the memory sweep of the sliding compaction target area in one go, eliminates the need to measure the total number of marked cells at the time of marking, and An object of the present invention is to provide a garbage collection method that can shorten garbage collection processing time.
この発明に係るガベージコレクシヨン方式は、
全プロセス間で共有される実メモリ上の領域にガ
ベージコレクタのための作業領域21をとり、こ
の作業領域21を使い共有領域20内のポインタ
の向きが、コンパクシヨン時の実メモリスイープ
方向と一致するときはポインタの向きをそのまま
とし、スイープ方向と逆向きのときはポインタの
向きをすべて作業領域21を向くように実メモリ
セルをマーク付けし、これによりコンパクシヨン
時の共有領域20に対する実メモリスイープを1
回で終わらせることを特徴とするものである。
The garbage collection method according to this invention is
A work area 21 for the garbage collector is set in a real memory area shared among all processes, and this work area 21 is used to ensure that the direction of the pointer in the shared area 20 matches the real memory sweep direction during compaction. When performing a sweep, the direction of the pointer is left as is, and when the direction is opposite to the sweep direction, the real memory cells are marked so that the pointer is all directed toward the work area 21. This makes it possible to change the real memory cells for the shared area 20 at the time of compaction. Sweep 1
It is characterized by ending in one episode.
作業領域21は、マーキング時にプロセス固有
領域から共有領域20への中間テーブルとなると
ともに、コンパクシヨン時の実メモリスイープ方
向と逆向きに張られた共有領域20内のポインタ
値の変更に使用される。作業領域21を使うこと
により、マーキング終了時点で共有領域20内の
ポインタはすべて実質的に一方向にそろう。(作
業領域21の方向に向く。又は、実メモリスイー
プ方向)
〔発明の実施例〕
第1図はこの発明の一実施例に係るガベージコ
レクシヨン方式によるカベージコレクシヨン実行
前、マーキング終了、および共有領域のコンパク
シヨン後の動作の説明図である。図において、2
2はガベージコレクシヨン実行前の主記憶(実メ
モリ)の状態例、16,17は物理空間(実メモ
リの一部領域)、18,27,19,28はセル、
20は全プロセス間で共有される共有領域、21
は共有領域中におけるガベージコレクシヨン対象
外の領域にとられたガベージコレクシヨン用作業
領域、23,24,25,26はポインタを示
す。また、39はマーキングの終了時点の主記憶
の状態例、27,28,29,30,31はセ
ル、32〜38はポインタを示す。また、43は
共有領域のコンパクシヨン終了時の主記憶の状態
例、40,41,42は作業領域21中に書き込
まれた他のセルから参照されていた共有領域中セ
ルのガベージコレクシヨン終了時の移動先アドレ
スを示すポインタである。
The work area 21 serves as an intermediate table from the process-specific area to the shared area 20 during marking, and is used to change pointer values in the shared area 20 that are stretched in the opposite direction to the real memory sweep direction during compaction. . By using the work area 21, all pointers in the shared area 20 are substantially aligned in one direction at the end of marking. (Towards the work area 21, or in the real memory sweep direction) [Embodiment of the Invention] Figure 1 shows the state before garbage collection is executed, the end of marking, and the shared area according to the garbage collection method according to an embodiment of the present invention. FIG. 3 is an explanatory diagram of the operation after compaction. In the figure, 2
2 is an example of the state of main memory (real memory) before garbage collection is executed, 16 and 17 are physical spaces (partial areas of real memory), 18, 27, 19, and 28 are cells,
20 is a shared area shared among all processes, 21
is a garbage collection work area set in an area not subject to garbage collection in the shared area, and 23, 24, 25, and 26 are pointers. Further, 39 indicates an example of the state of the main memory at the end of marking, 27, 28, 29, 30, and 31 indicate cells, and 32 to 38 indicate pointers. 43 is an example of the state of the main memory at the end of compaction of the shared area, and 40, 41, and 42 are examples of the state of the main memory at the end of garbage collection of cells in the shared area that were referenced by other cells written in the work area 21. This is a pointer indicating the destination address.
第2図に、この発明による一実施例で扱うデー
タタイプおよび1語の構成を示す。図において、
44はガベージコレクタが各セルの意味(セル状
態)を知るためのフラグとしてのgcビツト(2
ビツト)、45は値部46のデータ属性を示すタ
グ部である。データタイプとしては、vect、
cdsc、INTがある。vectは共有領域中に連続し
てとられる領域へのポインタであり、ポイント先
のデータはcdsc(記述子)である。cdscの値部は
連続してとられている領域の大きさが書かれてい
る。INTは値部が整数であることを表している。
vectでポイントしている共有領域中の連続領域を
vect bodyと呼ぶ。又、共有領域中にのみvect
bodyはとられる。vect body中に現れるデータタ
イプとしてはINTとvectが許される。 FIG. 2 shows data types and the structure of one word handled in an embodiment according to the present invention. In the figure,
44 is the gc bit (2
45 is a tag section indicating the data attribute of the value section 46. Data types include vect,
There are CDSC and INT. vect is a pointer to a contiguous area in the shared area, and the data pointed to is cdsc (descriptor). The value part of cdsc describes the size of the contiguous area. INT indicates that the value part is an integer.
Contiguous area in the shared area pointed to by vect
It is called vect body. Also, vect only in the shared area
The body is removed. INT and vect are allowed data types that appear in the vect body.
なお、vectは第3図に示すようにvect body中
に入れ子のようになることはないものとする。
又、共有領域上に作られる構造体は木構造であ
る。 It is assumed that the vect is not nested within the vect body as shown in FIG.
Furthermore, the structure created on the shared area is a tree structure.
gcビツトは、ガベージコレクシヨン開始前は
全て0であり、ガベージコレクシヨン後も必要な
セルのgcビツトには、mk、en、revの3状態の
いずれかにされる。mkはすでにそのセルのマー
キングが終了しており、かつそのセルを参照して
いるセルが存在しないことを意味する。enはそ
のセルを参照しているセルが存在することを意味
する。revはコンパクシヨン時に生成されるポイ
ンタであり、セルの内容が逆転ポインタであるこ
とを表している。 All gc bits are 0 before garbage collection starts, and even after garbage collection, the gc bits of necessary cells are set to one of three states: mk, en, and rev. mk means that the marking of that cell has already been completed and that there is no cell that refers to that cell. en means that there is a cell referencing that cell. rev is a pointer generated during compaction and indicates that the contents of the cell are reversed pointers.
ガベージコレクタのマーキング時には、プロセ
ス固有領域内に書かれているデータのうちガベー
ジコレクシヨン後も必要なデータの書かれている
セルに順次gcビツトを立ててゆく。このとき、
共有領域へのポインタvectを検出すると(このポ
インタを以下ルートポインタと呼ぶ)、そのvect
からたどることの可能な共有領域中のセルのgc
ビツトを後述する手順で立ててゆく。 When marking the garbage collector, it sequentially sets the gc bit in cells in which data that is necessary even after garbage collection is written in the process-specific area. At this time,
When a pointer vect to the shared area is detected (this pointer is hereinafter referred to as the root pointer), that vect
gc of cells in the shared area that can be traced from
Set up the bits according to the procedure described below.
第4図はルートポインタから始まるマーキング
手順を示すフローチヤートである。まず、ステツ
プS1においてリングマークrmにリングトツプrt
を代入する。リングマークrmとは次にマーキン
グすべきvect bodyへのポインタが書かれている
ものを示し、リングトツプrtとはマーキング中の
構造体中に未マーキングのvectへのポインタが現
れたときそのポインタを書くべき作業領域のアド
レスを保持するポインタを示す。ステツプS2で
はルートポインタのポイント先セルを読み、ステ
ツプS3でgcビツトの判定を行い、gcビツトがen
を示せばステツプS4へ移りルートの処理を行
う。このルートの処理を第5図を参照して説明
する。ルートポインタによつて参照されているセ
ル53のgcビツトはすでにenとなつており、こ
の場合、ルートポインタの書かれていたセル52
には、セル53の内容をコピーする。また、ステ
ツプS3においてgcビツトがun(mk、en、revのい
ずれにも属さない状態)であると判定されると、
ステツプS5へ移りルートの処理を行う。この
ルートの処理を第6図を参照して説明する。ル
ートポインタによつて参照されているセル59の
gcビツトはunである。まず、作業領域21を制
御するポインタ56のポイント先のセル60にセ
ル59の内容をコピーする。その後、セル58,
59にセル60へのポインタを書き込んだ後、ポ
インタ56の値を「1」減らす。 FIG. 4 is a flowchart showing the marking procedure starting from the route pointer. First, in step S1, the ring top rt is placed on the ring mark rm.
Substitute. The ring mark rm is a pointer to the next vect body to be marked, and the ring top rt is a pointer to an unmarked vect that appears in the structure being marked. Indicates a pointer that holds the address of the work area to be written to. In step S2, the cell to which the root pointer points is read, and in step S3, the gc bit is determined and the gc bit is enabled.
If this is indicated, the process moves to step S4 to process the route. The processing of this route will be explained with reference to FIG. The gc bit of cell 53 referenced by the root pointer is already en, and in this case, the cell 52 where the root pointer was written is
, copy the contents of cell 53. Also, if it is determined in step S3 that the gc bit is un (a state that does not belong to any of mk, en, and rev),
Proceeding to step S5, route processing is performed. The processing of this route will be explained with reference to FIG. of cell 59 referenced by the root pointer.
gc bit is un. First, the contents of the cell 59 are copied to the cell 60 pointed to by the pointer 56 that controls the work area 21 . After that, cell 58,
After writing the pointer to cell 60 in 59, the value of pointer 56 is decreased by "1".
ここで作業領域21を制御するポインタ類54
〜57(第6図および第7図参照)について説明
する。54は上述したリングマークrm、55は
上述したリングトツプrt、56はリングボトムrb
と呼びルートポインタの参照しているセルが未マ
ーキングの場合そのセルの内容をコピーする作業
領域のアドレスを保持するポインタを示す。 Here, pointers 54 that control the work area 21
57 (see FIGS. 6 and 7) will be explained. 54 is the ring mark rm mentioned above, 55 is the ring top rt mentioned above, and 56 is the ring bottom rb.
If the cell referenced by the root pointer is unmarked, it indicates a pointer that holds the address of the work area where the contents of that cell will be copied.
ルートの処理の後はステツプS6へ移り、
vectのボデイのマーキングを行う。この処理を第
8図に示すフローチヤートを参照して説明する。
まず、ステツプS11においてvectのボデイサイズ
を設定し、そのサイズが「0」でない場合はステ
ツプS12からステツプS13へ移り、ボデイ要素の
読み込みを行い、ステツプS14でタグ(tag)の
分岐を行う。タグの分岐を行つた結果、INTの
場合はステツプS15へ、vectの場合はステツプ
S16へ移る。ステツプS15のINTの処理は、その
ボデイ要素の書かれているセルのgcビツトがun
であればそのセルのgcビツトをmkとし、それ以
外の場合は何もしない。一方、ステツプS16の
vectの処理については第9図に示すフローチヤー
トを参照して説明する。ステツプS21において参
照先セルの読み込みを行い、ステツプS22で参照
先セルのgcビツトの判定を行う。この判定の結
果、gcビツトがenのときステツプS23へ移る。こ
のステツプS23のポインタの向きの判定は、vect
のボデイ中に検出されたvectタグのデータの値部
と、そのデータの書かれていたセルの論理アドレ
スと比較することで行う。ポインタの向きが下向
きであると判定されると、ステツプS25において
ポインタの書かれていたセルのgcビツトをmkと
する処理を行う。また、ステツプS23においてポ
インタの向きが上向きであると判定されるとステ
ツプS26に移る。一方、ステツプS22においてgc
ビツトがunであると判定されると、ステツプS24
へ移りポインタの向きの判定を行い、ポインタが
下向きであればステツプS27へ、ポインタが上向
きであればステツプS28へそれぞれ移る。 After processing the route, move on to step S6.
Mark the body of the vect. This process will be explained with reference to the flowchart shown in FIG.
First, the body size of the vect is set in step S11, and if the size is not "0", the process moves from step S12 to step S13, the body element is read, and the tag is branched in step S14. As a result of tag branching, if it is INT, go to step S15, if it is vect, go to step S15.
Move to S16. The INT processing in step S15 is performed when the gc bit of the cell in which the body element is written is un
If so, set the gc bit of that cell to mk, otherwise do nothing. On the other hand, in step S16
The processing of vect will be explained with reference to the flowchart shown in FIG. The reference destination cell is read in step S21, and the gc bit of the reference destination cell is determined in step S22. As a result of this determination, if the gc bit is en, the process moves to step S23. The direction of the pointer in step S23 is determined by vect
This is done by comparing the value part of the vect tag data detected in the body of the cell with the logical address of the cell where the data was written. If it is determined that the direction of the pointer is downward, processing is performed to set the gc bit of the cell where the pointer was written to mk in step S25. Further, if it is determined in step S23 that the direction of the pointer is upward, the process moves to step S26. On the other hand, in step S22, gc
If it is determined that the bit is un, step S24
The direction of the pointer is determined, and if the pointer is pointing downward, the process moves to step S27, and if the pointer is pointing upward, the process moves to step S28.
ここで、上記ステツプS26、S27、S28の処理を
第10図〜第12図を参照して説明する。ステツ
プS26の処理を第10図に示す。第10図におい
てセル66は上向きポインタによりセル65を参
照しており、セル65のgcビツトはenである。
このような場合、セル66にはセル65の内容を
コピーする。ステツプS27の処理を第11図に示
す。第11図においてセル68は下向きポインタ
で未マーキングセル69を参照している。このよ
うな場合、セル68のgcビツトをmkとし、セル
68の参照していたセル69のgcビツトはenと
する。リングトツプ55の参照していたセル70
にはセル68の内容をコピーしリングトツプ55
に「1」を加える。ステツプS28の処理を第12
図に示す。第12図においてセル72は上向きポ
インタで未マーキングセル71を参照している。
このような場合、リングトツプ55の参照してい
るセル73にセル72の内容をコピーし、セル7
1はgcビツトをenとする。また、セル72には
gcビツトをmkとし、値部にはセル73の論理ア
ドレスを書く。 Here, the processing of steps S26, S27, and S28 will be explained with reference to FIGS. 10 to 12. FIG. 10 shows the process of step S26. In FIG. 10, cell 66 references cell 65 by an upward pointer, and the gc bit of cell 65 is en.
In such a case, the contents of cell 65 are copied to cell 66. FIG. 11 shows the process of step S27. In FIG. 11, cell 68 refers to unmarked cell 69 with a downward pointer. In such a case, the gc bit of cell 68 is set to mk, and the gc bit of cell 69 referred to by cell 68 is set to en. Cell 70 referenced by ring top 55
Copy the contents of cell 68 to ring top 55.
Add "1" to. The process of step S28 is performed in the 12th step.
As shown in the figure. In FIG. 12, cell 72 refers to unmarked cell 71 with an upward pointer.
In such a case, copy the contents of cell 72 to cell 73 that is referenced in ring top 55, and
1 sets the gc bit to en. Also, in cell 72
The gc bit is set to mk, and the logical address of cell 73 is written in the value field.
このような処理の後、第4図のステツプS6か
らステツプS7へ移り上述したマーキングの終了
判定を行い、終了していない場合にはステツプ
S8のポツプ処理を行う。このステツプS8のポツ
プ処理を第13図に示す。第13図において、ポ
ツプ処理時にはリングマーク54の参照している
セル75から次にマーキングすべき構造体(実メ
モリ)の論理アドレスを得る。セル75の内容か
らセル76の内容を読み出し、マーキングする構
造体74の大きさを知る。またセル75にはセル
76の内容をコピーし、セル76にはその値部に
セル75の論理アドレスを書く。これらの処理の
後、リングマーク54の内容に「1」を加え、構
造体74のマーキングはvectのボデイのマーキン
グ(ステツプS6)のアルゴリズムに従つて進め
られる。なお、ステツプS3においてgcビツトが
mkの場合はステツプS9のエラー処理を行う。 After such processing, the process moves from step S6 to step S7 in FIG. 4, where it is determined whether the marking has been completed as described above, and if the marking has not been completed, the process returns to step S7.
Perform pop processing of S8. This pop processing at step S8 is shown in FIG. In FIG. 13, during pop processing, the logical address of the structure (real memory) to be marked next is obtained from the cell 75 referred to by the ring mark 54. The contents of the cell 76 are read from the contents of the cell 75 to know the size of the structure 74 to be marked. The contents of cell 76 are also copied to cell 75, and the logical address of cell 75 is written in the value field of cell 76. After these processes, "1" is added to the contents of the ring mark 54, and the marking of the structure 74 proceeds according to the algorithm for marking the body of the vect (step S6). Note that the gc bit is set in step S3.
In the case of mk, perform error processing in step S9.
以上ここまで述べたアルゴリズムにより、この
実施例で説明したデータ構造を持つガベージコレ
クシヨン領域は共有領域を1パスのスイープでコ
ンパクシヨンが可能なようになる。 With the algorithm described above, the garbage collection area having the data structure described in this embodiment can be compacted by sweeping the shared area in one pass.
次に共有領域のコンパクシヨンの処理を第14
図のフローチヤートを参照して説明する。ステツ
プS31の初期設定では、スイープポインタ、ロケ
ーシヨンポインタおよび終了判定に必要な条件設
定などを行う。ステツプS32ではスイープポイン
タ(SP)の参照しているセルから値を読み、ス
テツプS33でその読み出した値のgcビツト判定を
行い、gcビツトがunのときはステツプS37へ、
mkのときはステツプS34へ、enのときはステツ
プS35へ、revのときはステツプS36へそれぞれ移
る。gcビツトがunのときはステツプS37でスイー
プポインタの値を「1」加算する。gcビツトが
mkのときステツプS34のmkセルの処理を行う。
このmkセルの処理を第15図に示す。第15図
において、ステツプS41では読み出したデータの
tag分岐を行い、この分岐結果がINTまたはcdsc
の場合はステツプS42の処理を行う。即ち、ステ
ツプS42の処理は読み出したデータのgcビツトを
unとし、ロケーシヨンポインタの参照している
セルに書き込み、その後ロケーシヨンポインタに
「1」を加算する。 Next, the shared area compaction process is performed in the 14th step.
This will be explained with reference to the flowchart shown in the figure. In the initial setting at step S31, the sweep pointer, location pointer, and conditions necessary for end determination are set. In step S32, the value is read from the cell referenced by the sweep pointer (SP), and in step S33, the gc bit of the read value is determined. If the gc bit is un, the process advances to step S37.
If mk, the process moves to step S34; if en, the process moves to step S35; and if rev, the process moves to step S36. When the gc bit is un, "1" is added to the value of the sweep pointer in step S37. gc bit
When the cell is mk, processing of the mk cell in step S34 is performed.
FIG. 15 shows the processing of this mk cell. In FIG. 15, in step S41, the read data is
Performs a tag branch and the result of this branch is INT or cdsc
In this case, the process of step S42 is performed. That is, the process in step S42 reads the gc bit of the read data.
un, write to the cell referenced by the location pointer, and then add "1" to the location pointer.
一方、分岐結果がvectの場合はステツプS43の
処理を行う。この処理を第16図および第17図
に示す。読み出したデータのtagがvectであり、
gcビツトがmkである場合、ポインタが下向きで
共有領域中のセルを参照しているか、またはガベ
ージコレクタの作業領域を参照しているかのいず
れかである。 On the other hand, if the branch result is vect, the process of step S43 is performed. This process is shown in FIGS. 16 and 17. The tag of the read data is vect,
If the gc bit is mk, either the pointer points downward and refers to a cell in the shared area, or it refers to the garbage collector's work area.
第16図は下向きポインタの処理を示す。この
場合、セル84の参照しているセル85の内容を
ロケーシヨンポインタ7の参照しているセル83
にコピーする。その後、セル85にセル83を参
照する逆転ポインタを書き、ロケーシヨンポイン
タ7に「1」を加える。 FIG. 16 shows the processing of the downward pointer. In this case, the contents of the cell 85 referred to by the cell 84 are transferred to the cell 83 referred to by the location pointer 7.
Copy to. Thereafter, a reverse pointer that refers to cell 83 is written in cell 85, and "1" is added to location pointer 7.
第17図は作業領域を参照するポインタの処理
を示す。この場合セル89のガベージコレクタ起
動前のデータは上向きポインタが書かれていたセ
ル89の参照していたセルのガベージコレクシヨ
ン終了後の論理アドレスはセル89が参照してい
る作業領域中のセル90に保持されている。した
がつて、ロケーシヨンポインタ7が参照している
セル88において、gcビツトはun、tagはvect
(セル89のtag部)、値はセル90の値部をそれ
ぞれ書き込む。 FIG. 17 shows the processing of a pointer that refers to a work area. In this case, the data of cell 89 before the garbage collector is activated is the logical address of the cell referenced by cell 89 to which the upward pointer is written, and the logical address after garbage collection is completed is cell 90 in the work area referenced by cell 89. Retained. Therefore, in cell 88 referred to by location pointer 7, the gc bit is un and the tag is vect.
(tag part of cell 89) and value write the value part of cell 90, respectively.
第14図において、読み出したデータのgcビ
ツトがenの場合のステツプS35の処理を第18図
に示す。本実施例で扱うデータタイプでは、gc
ビツトがenとなるセルに、ガベージコレクタ起
動前に書かれていたデータはcdscのみである。セ
ル92が参照している作業領域中のセル93にロ
ケーシヨンポインタ7の参照しているセル91の
論理アドレスを書き、セル93からセル91にポ
インタを張る。セル91にはセル92のtag部を
本実施例ではcdscのみとし、gcビツトをunとし、
値はセル93に書かれていたものを書き込む。第
14図において、読み出したデータのgcビツト
がrevの場合のステツプS36の処理を第19図に
示す。逆転ポインタの処理は前述したモリスのア
ルゴリズムと同様の処理である。本実施例の場
合、逆転ポインタの参照しているセルの内容は、
gcビツトen、tag部cdscに決まつている。逆点ポ
インタの参照しているセル94には、gcビツト
はun、tag部は逆転ポインタのtag、値はロケー
シヨンポインタ7の参照しているセル95の論理
アドレスを書く。セル95に書く値は、スイープ
ポインタ1がセル94を参照していたものとし
て、第14図のステツプS35の処理を行う。 FIG. 18 shows the process of step S35 when the gc bit of the read data is en in FIG. 14. In the data type handled in this example, gc
The only data written to the cell whose bit is en before the garbage collector starts is CDSC. The logical address of the cell 91 referred to by the location pointer 7 is written in the cell 93 in the work area referred to by the cell 92, and the pointer is extended from the cell 93 to the cell 91. In the cell 91, the tag part of the cell 92 is set to CDSC only in this embodiment, and the gc bit is set to UN.
The value written in cell 93 is written. FIG. 19 shows the process of step S36 in FIG. 14 when the gc bit of the read data is rev. Processing of the inverted pointer is similar to the Morris algorithm described above. In this example, the contents of the cell referenced by the reverse pointer are:
The GC bit is set to EN, and the tag part is determined to be CDSC. In the cell 94 referred to by the reverse pointer, the gc bit is un, the tag part is the tag of the reverse pointer, and the value is the logical address of the cell 95 referred to by the location pointer 7. The value written in cell 95 is assumed to be that sweep pointer 1 referred to cell 94, and the process of step S35 in FIG. 14 is performed.
上記実施例によれば、各プロセス間で共有され
る領域にガベージコレクタのための作業領域をと
り、この作業領域を使用し各プロセス固有領域か
らプロセス間共有領域へのポインタと共有領域内
のポインタのメンテナンスを行うことで、プロセ
ス共有領域のスライデイングコンパクシヨンをメ
モリスイープ1回で行うことができる。 According to the above embodiment, a work area for the garbage collector is set in an area shared between each process, and this work area is used to transfer pointers from each process-specific area to the inter-process shared area and a pointer within the shared area. By performing maintenance, sliding compaction of the process shared area can be performed in one memory sweep.
なお、上記実施例では、共有領域上に許される
データ構造は木構造であることなどの制限を付け
た。しかし、共有領域上にループした構造や構造
体そのものが入れ子になつているような場合であ
つても、ガベージコレクシヨン用の作業領域を共
有領域中に存在する他のセルから参照され得るセ
ルの総数ではなく参照され得るセルに比例して作
業領域をより多くとることでコンパクシヨンを1
パスで終了させることができるようにマーキング
することは可能である。又、上記実施例では構造
体のマーキングを広さ優先(ブレツズフアース
ト)でマーキングするものを示したが、深さ優先
(デツプスフアースト)のマーキングでも上記実
施例と同様の効果を奏する。又、上記実施例では
プログラム実行単位固有領域から共有領域へのポ
インタを作業領域経由とする処理をガベージコレ
クシヨンの内部処理とした。これらの処理はガベ
ージコレクシヨンの内部処理とせず、通常のプロ
グラム実行時に行つても良い。 Note that in the above embodiment, restrictions are imposed such that the data structure allowed on the shared area is a tree structure. However, even if a looped structure or the structure itself is nested in the shared area, the work area for garbage collection is set to the total number of cells that can be referenced by other cells in the shared area. By taking up more workspace in proportion to the cells that can be referenced, instead of
It is possible to mark it so that it can be terminated with a pass. Further, in the above embodiment, the structure is marked with breadth priority (breath first), but depth priority (depth first) marking can also produce the same effect as in the above embodiment. . Further, in the above embodiment, the process of passing the pointer from the program execution unit specific area to the shared area via the work area is an internal process of garbage collection. These processes may be performed during normal program execution, rather than as internal garbage collection processing.
以上のように本発明によれば、全プロセス間で
共有される実メモリ上の共有領域にガベージコレ
クタのための作業領域をとり、この作業領域を使
い共有領域内のポインタの向きが、コンパクシヨ
ン時の実メモリスイープ方向と一致するときはポ
インタの向きをそのままとし、スイープ方向と逆
向きのときはポインタの向きをすべて作業領域を
向くように実メモリセルをマーク付けし、これに
よりコンパクシヨン時の共有領域に対する実メモ
リスイープを1回で終わらせるようにしたので、
スライデイングコンパクシヨン対象領域のメモリ
スイープは1回で終了することができ、マーキン
グ時にマーク付けしたセルの総数を計測する必要
がなくなり、したがつてガベージコレクシヨンの
処理時間が短縮され、効率の良い実メモリの再利
用が可能となるという効果が得られる。
As described above, according to the present invention, a work area for the garbage collector is set in a shared area on real memory shared among all processes, and this work area is used to change the direction of the pointer in the shared area. When the direction of the real memory sweep matches the real memory sweep direction at the time, the pointer direction is left as is, and when the direction is opposite to the sweep direction, the real memory cells are marked so that all the pointer directions point toward the work area. Since the real memory sweep for the shared area is completed in one time,
The memory sweep of the sliding compaction target area can be completed in one go, and there is no need to count the total number of marked cells during marking, which reduces garbage collection processing time and improves efficiency. This has the effect that memory can be reused.
第1図はこの発明の一実施例に係るガベージコ
レクシヨン方式によるガベージコレクシヨン実行
前、マーキング終了、および共有領域のコンパク
シヨン後の動作説明図、第2図および第3図はこ
の実施例において共有領域中に許したデータ構成
図、第4図はこの実施例においてルートポインタ
から始まるマーキング手順を示すフローチヤー
ト、第5図は第4図のステツプS4の処理を示す
動作説明図、第6図は第4図のステツプS5の処
理を示す動作説明図、第7図はこの実施例におけ
る作業領域を制御するポインタ類の説明図、第8
図は第4図のステツプS6の処理を示すフローチ
ヤート、第9図は第8図のステツプS16の処理を
示すフローチヤート、第10図は第9図のステツ
プS26の処理を示す動作説明図、第11図は第9
図のステツプS27の処理を示す動作説明図、第1
2図は第9図のステツプS28の処理を示す動作説
明図、第13図は第4図のステツプS8の処理を
示す動作説明図、第14図はこの実施例において
共有領域のコンパクシヨンの処理を示すフローチ
ヤート、第15図は第14図のステツプS34の処
理を示すフローチヤート、第16図および第17
図は第15図のステツプS43の処理を示す動作説
明図、第18図は第14図のステツプS35の処理
を示す動作説明図、第19図は第14図のステツ
プS36の処理を示す動作説明図、第20図〜第2
3図は従来のガベージコレクシヨン方式としての
モリスのアルゴリズムとして知られるコンパクシ
ヨンの動作説明図である。
18,19,27,28,29,30,31…
…実メモリセル、20……プロセス共有領域、2
1……作業領域。
FIG. 1 is an explanatory diagram of operations before garbage collection is executed, after marking is completed, and after compaction of a shared area according to a garbage collection method according to an embodiment of the present invention. FIGS. FIG. 4 is a flowchart showing the marking procedure starting from the route pointer in this embodiment, FIG. 5 is an operation explanatory diagram showing the process of step S4 in FIG. 4, and FIG. 4 is an explanatory diagram showing the process of step S5, FIG. 7 is an explanatory diagram of pointers that control the work area in this embodiment, and FIG.
9 is a flowchart showing the process of step S6 in FIG. 4, FIG. 9 is a flowchart showing the process of step S16 in FIG. 8, and FIG. 10 is an operation explanatory diagram showing the process of step S26 in FIG. Figure 11 is the 9th
Operation explanatory diagram showing the process of step S27 in the figure, 1st
2 is an operational explanatory diagram showing the process of step S28 in FIG. 9, FIG. 13 is an operational explanatory diagram showing the process of step S8 in FIG. 4, and FIG. 14 is an explanatory diagram of the process of compaction of the shared area in this embodiment. 15 is a flowchart showing the process of step S34 in FIG. 14, and FIGS. 16 and 17 are
15 is an operational explanatory diagram showing the process of step S43 in FIG. 15, FIG. 18 is an operational explanatory diagram showing the process of step S35 in FIG. 14, and FIG. 19 is an operational explanatory diagram showing the process of step S36 in FIG. 14. Figures, Figures 20-2
FIG. 3 is an explanatory diagram of the operation of compaction known as Morris' algorithm as a conventional garbage collection method. 18, 19, 27, 28, 29, 30, 31...
...Real memory cell, 20...Process shared area, 2
1...Work area.
Claims (1)
立した論理空間を与え、かつこの論理空間の一部
分に対応する実メモリが各プロセス間で共有され
るようにメモリ割付けを行い、各実メモリセルに
各セルの状態を区別することができるフラグを持
ち、有効なセルをマーク付けした後、マーク付け
セル内容を実メモリ上の一端にスイーピングして
詰め合わせるガベージコレクシヨン方式におい
て、プロセス間で共有される実メモリ上の領域に
ガベージコレクタのための作業領域をとり、この
作業領域を使い、マーク付け処理中に、その共有
領域内のポインタの向きが、上記詰め合せるコン
パクシヨン時の実メモリスイープ方向と一致する
ときはポインタの向きをそのままとし、スイープ
方向と逆向きのときはポインタの向きを作業領域
に向くように処理し、これによりコンパクシヨン
時の共有領域に対する実メモリスイープを1回で
終わらせることを特徴とするガベージコレクシヨ
ン方式。1. Allocate memory so that each process, which is the execution unit of a program, is given an independent logical space, and the real memory corresponding to a portion of this logical space is shared between each process. Real memory shared between processes in a garbage collection method that sweeps and packs the marked cell contents to one end of real memory after marking valid cells. A work area is set up for the garbage collector in the upper area, and this work area is used to ensure that during the marking process, the direction of the pointer in the shared area matches the real memory sweep direction during the above-mentioned compaction. When the direction is opposite to the sweep direction, the direction of the pointer is kept as is, and when the direction is opposite to the sweep direction, the pointer is directed to the work area. This allows the real memory sweep for the shared area during compaction to be completed in one operation. Features a garbage collection method.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP17179288A JPH0222745A (en) | 1988-07-12 | 1988-07-12 | Garbage collection system |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP17179288A JPH0222745A (en) | 1988-07-12 | 1988-07-12 | Garbage collection system |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH0222745A JPH0222745A (en) | 1990-01-25 |
| JPH0552974B2 true JPH0552974B2 (en) | 1993-08-06 |
Family
ID=15929783
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP17179288A Granted JPH0222745A (en) | 1988-07-12 | 1988-07-12 | Garbage collection system |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0222745A (en) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6449625B1 (en) * | 1999-04-20 | 2002-09-10 | Lucent Technologies Inc. | Use of a two-way stack approach to optimize flash memory management for embedded database systems |
-
1988
- 1988-07-12 JP JP17179288A patent/JPH0222745A/en active Granted
Also Published As
| Publication number | Publication date |
|---|---|
| JPH0222745A (en) | 1990-01-25 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4043528B2 (en) | Bounded downtime garbage collection system having a read barrier and a write barrier associated with partially relocated object instances and method of garbage collection thereof | |
| US5218695A (en) | File server system having high-speed write execution | |
| TW200816001A (en) | System and method for garbage collection in heterogeneous multiprocessor systems | |
| KR20010023280A (en) | Reference counting mechanism for garbage collectors | |
| JP2002506549A (en) | Bounded downtime garbage collection system and method including write barrier associated with source instance of partially relocated object | |
| JP2004295889A (en) | Method and device for controlling execution of processing task within data processing system | |
| JPH0552974B2 (en) | ||
| JP2526384B2 (en) | Garbage collection method | |
| JP2920660B2 (en) | A method for determining accessible objects in a garbage collection system | |
| JP3520527B2 (en) | Data management method | |
| JP3868585B2 (en) | Memory management device and computer-readable recording medium | |
| JP2867441B2 (en) | List processing method | |
| CN109408278A (en) | Data processing method and device | |
| JPS6037931B2 (en) | List processing method | |
| US6865584B2 (en) | Method for recovering a database provided with disk back-up | |
| DeMartinis et al. | A self managing secondary memory system | |
| KR100318281B1 (en) | Satellite's dump data select, merge and data base building method | |
| JPS62295145A (en) | Garbage collection system | |
| Reid | Malloc pointers and stable pointers: Improving Haskell's foreign language interface | |
| JPS61123953A (en) | Virtual object control method | |
| JPS6158059A (en) | Changing system of data pointer part | |
| JPH03196343A (en) | Dynamic storage management method | |
| Wiseman | The SMITE object oriented backing store | |
| JP2522031B2 (en) | Garbage collection method | |
| JP2906787B2 (en) | File compression method and file recovery method |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| EXPY | Cancellation because of completion of term |