JPH0442338A - ガーベッジコレクションシステムにおけるアクセス可能なオブジェクトの判別方法 - Google Patents
ガーベッジコレクションシステムにおけるアクセス可能なオブジェクトの判別方法Info
- Publication number
- JPH0442338A JPH0442338A JP2149285A JP14928590A JPH0442338A JP H0442338 A JPH0442338 A JP H0442338A JP 2149285 A JP2149285 A JP 2149285A JP 14928590 A JP14928590 A JP 14928590A JP H0442338 A JPH0442338 A JP H0442338A
- Authority
- JP
- Japan
- Prior art keywords
- area
- data
- pointer
- garbage collection
- objects
- 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
Links
- 238000000034 method Methods 0.000 claims description 22
- 230000001419 dependent effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 6
- 238000005056 compaction Methods 0.000 description 4
- 238000013467 fragmentation Methods 0.000 description 4
- 238000006062 fragmentation reaction Methods 0.000 description 4
- 230000007423 decrease Effects 0.000 description 2
- COCAUCFPFHUGAA-MGNBDDOMSA-N n-[3-[(1s,7s)-5-amino-4-thia-6-azabicyclo[5.1.0]oct-5-en-7-yl]-4-fluorophenyl]-5-chloropyridine-2-carboxamide Chemical compound C=1C=C(F)C([C@@]23N=C(SCC[C@@H]2C3)N)=CC=1NC(=O)C1=CC=C(Cl)C=N1 COCAUCFPFHUGAA-MGNBDDOMSA-N 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明はガーベッジコレクションシステムにおけるアク
セス可能なオブジェクトの判別方法に関する。
セス可能なオブジェクトの判別方法に関する。
従来のガーベツジコレクシンシステムには、オブジェク
トポインタ(ガーベッジコレクションシステムで管理す
るヒープ領域内のオブジェクトへのポインタ)と、整数
などのデータとを区別するのに、タグを用いたり、ある
いはオブジェクトの種類毎に定められたメモリ領域にオ
ブジェクトを格納したりしているものがある。これによ
ってアクセス可能なオブジェクトの判別を行い、ガーベ
ッジコレクションを実行するようにしている。
トポインタ(ガーベッジコレクションシステムで管理す
るヒープ領域内のオブジェクトへのポインタ)と、整数
などのデータとを区別するのに、タグを用いたり、ある
いはオブジェクトの種類毎に定められたメモリ領域にオ
ブジェクトを格納したりしているものがある。これによ
ってアクセス可能なオブジェクトの判別を行い、ガーベ
ッジコレクションを実行するようにしている。
ま た、 [John Wiley&5ons、Lt
d J発行のrBoehm H−J。
d J発行のrBoehm H−J。
、and Weiser、M、、“Garbage C
o11ection in an Uncoopera
tive Environment−9oftware
Practice and Experience、
Vol、18(9)、September 1988.
pp、807−820. J (以下、文献という)に
は、オブジェクトポインタの可能性がある全てのデータ
(レジスタ、スタック、データ領域なと)の中で、アロ
ケータが管理している正当なオブジェクトアドレスと同
じものは、アクセス可能なオブジェクトへのポインタで
あると仮定し、ガーベッジコレクションを行うようにす
るものが記載されている。この文献に記載されているガ
ーベッジコレクタのアクセス可能なオブジェクトの判別
方法では、データを標準のマシン表現(32ビツト整数
等)で扱うことができるので実行効率が低下することが
なく、またコンパイラ等を変更しなくてもC,Pa5k
a1等の一般の言語で使用することができる。
o11ection in an Uncoopera
tive Environment−9oftware
Practice and Experience、
Vol、18(9)、September 1988.
pp、807−820. J (以下、文献という)に
は、オブジェクトポインタの可能性がある全てのデータ
(レジスタ、スタック、データ領域なと)の中で、アロ
ケータが管理している正当なオブジェクトアドレスと同
じものは、アクセス可能なオブジェクトへのポインタで
あると仮定し、ガーベッジコレクションを行うようにす
るものが記載されている。この文献に記載されているガ
ーベッジコレクタのアクセス可能なオブジェクトの判別
方法では、データを標準のマシン表現(32ビツト整数
等)で扱うことができるので実行効率が低下することが
なく、またコンパイラ等を変更しなくてもC,Pa5k
a1等の一般の言語で使用することができる。
ところが、上記従来のアクセス可能なオブジェクトの判
別方法では、タグを用いて判別する方法にあっては、例
えば、ポインタや整数などを32bitのデータで表現
する場合には、タグ用に1bit割り当てなければなら
ないので、ポインタあるいは整数そのものを示すデータ
は31bitとなってしまい、このためデータ(31b
’itで表現されているポインタあるいは整数)を標準
のマシン表現(32ビツト整数等)で扱うことがてきな
いので、実行効率が低下してしまう。またオブジェクト
の種類に応したメモリ領域にオブジェクトを格納して、
アクセス可能なオブジェクトを判別する方法にあっては
、特殊なデータ表現を必要とするため、C,Pa5ka
1等の一般の言語てガーベツジコレクションを実行する
には、コンパイラ等を変更する必要がある。
別方法では、タグを用いて判別する方法にあっては、例
えば、ポインタや整数などを32bitのデータで表現
する場合には、タグ用に1bit割り当てなければなら
ないので、ポインタあるいは整数そのものを示すデータ
は31bitとなってしまい、このためデータ(31b
’itで表現されているポインタあるいは整数)を標準
のマシン表現(32ビツト整数等)で扱うことがてきな
いので、実行効率が低下してしまう。またオブジェクト
の種類に応したメモリ領域にオブジェクトを格納して、
アクセス可能なオブジェクトを判別する方法にあっては
、特殊なデータ表現を必要とするため、C,Pa5ka
1等の一般の言語てガーベツジコレクションを実行する
には、コンパイラ等を変更する必要がある。
一方、上記文献に記載されているガーベツジコレクタの
判別方法では、整数等の値と正当なオブジェクトアドレ
ス(オブジェクトポインタ)とが同一であった場合には
、オブジェクトポインタか直接ヒープ領域内のオブジェ
クトを指しているので、オブジェクトポインタを書替え
ることができない。従って、実行効率の良いコピー型ガ
ーベ・ソジコレクションと絹み合わせることや、ヒープ
領域のフラグメンテーションが起こった場合にコンパク
ションを行うことができない。
判別方法では、整数等の値と正当なオブジェクトアドレ
ス(オブジェクトポインタ)とが同一であった場合には
、オブジェクトポインタか直接ヒープ領域内のオブジェ
クトを指しているので、オブジェクトポインタを書替え
ることができない。従って、実行効率の良いコピー型ガ
ーベ・ソジコレクションと絹み合わせることや、ヒープ
領域のフラグメンテーションが起こった場合にコンパク
ションを行うことができない。
また、上記文献に記載されているガーベツジコレクタの
判別方法では、アロケータが管理している正当なオブジ
ェクトアドレスと同じかどうかを判別するのが複雑であ
る。
判別方法では、アロケータが管理している正当なオブジ
ェクトアドレスと同じかどうかを判別するのが複雑であ
る。
本発明は上記実情に鑑みてなされたものであり、実行効
率の良いガーベッジコレクションを行うことができると
ともに、ヒープ領域にフラグメンテジョンが起こった場
合であってもコンパクションを行うことのできるガーベ
ッジコレクションシステムにおけるアクセス可能なオブ
ジェクトの判別方法を提供することを]」的とする。
率の良いガーベッジコレクションを行うことができると
ともに、ヒープ領域にフラグメンテジョンが起こった場
合であってもコンパクションを行うことのできるガーベ
ッジコレクションシステムにおけるアクセス可能なオブ
ジェクトの判別方法を提供することを]」的とする。
上述した課題を解決するために、本発明に係るガーベッ
ジコレクションシステムにおけるアクセス可能なオブジ
ェクトの判別方法では、ヒープ領域内のオブジェクトへ
のポインタを記憶するオブジェクトテーブルを設け、ヒ
ープ領域とは異なる領域からヒープ領域内のオブジェク
トへは前記テーブルを介して間接的に参照し、そのとき
参照されるポインタで指定されているオブジェクトをア
クセス可能なオブジェクト対象とするようにしている。
ジコレクションシステムにおけるアクセス可能なオブジ
ェクトの判別方法では、ヒープ領域内のオブジェクトへ
のポインタを記憶するオブジェクトテーブルを設け、ヒ
ープ領域とは異なる領域からヒープ領域内のオブジェク
トへは前記テーブルを介して間接的に参照し、そのとき
参照されるポインタで指定されているオブジェクトをア
クセス可能なオブジェクト対象とするようにしている。
本発明に係るガーベッジコレクションシステムにおける
アクセス可能なオブジェクトの判別方法では、レジスタ
、スタック、データ領域からヒープ領域内のオブジェク
トへは、ヒープ領域内のオブジェクトへのポインタを記
憶するオジェクトテプルを介して間接的に参照するよう
にしたので、オブジェクトが存在する領域は、例えばデ
ータ領域内に存在し、ヒープ領域内のオブジェクトを参
照すべくポインタの可能性があるデータ、に対応するポ
インタには依存しないことになり、このためオブジクト
テーブル内のポインタの値を書換えることかでき、オブ
ジェクトを移動することが可能になる。
アクセス可能なオブジェクトの判別方法では、レジスタ
、スタック、データ領域からヒープ領域内のオブジェク
トへは、ヒープ領域内のオブジェクトへのポインタを記
憶するオジェクトテプルを介して間接的に参照するよう
にしたので、オブジェクトが存在する領域は、例えばデ
ータ領域内に存在し、ヒープ領域内のオブジェクトを参
照すべくポインタの可能性があるデータ、に対応するポ
インタには依存しないことになり、このためオブジクト
テーブル内のポインタの値を書換えることかでき、オブ
ジェクトを移動することが可能になる。
以下、本発明に係るガーベッジコレクションシステムに
おけるアクセス可能なオブジェクトの判別方法の実施例
を、添付図面を参照して説明する。
おけるアクセス可能なオブジェクトの判別方法の実施例
を、添付図面を参照して説明する。
第1図は本発明に係るアクセス可能なオブジェクトの判
別方法を説明するための図である。
別方法を説明するための図である。
このオブジェクト判別方法では、データ領域1、レジス
タ及びスタック2から、ヒープ領域3へはオブジェクト
テーブル4を介して間接的に参照する。すなわち、オブ
ジェクトテーブル4のエンドυ内にヒープ領域3へのポ
インタを持ち、データ領域]、レジスタやスタック2は
、ヒープを参照する部分のオブジェクトテーブルエント
リへのポインタを持っている。
タ及びスタック2から、ヒープ領域3へはオブジェクト
テーブル4を介して間接的に参照する。すなわち、オブ
ジェクトテーブル4のエンドυ内にヒープ領域3へのポ
インタを持ち、データ領域]、レジスタやスタック2は
、ヒープを参照する部分のオブジェクトテーブルエント
リへのポインタを持っている。
このオブジェクト判別方法を適用したガーベツジコレク
ションシステムでは、オブジェクトポインタ(ガーベッ
ジコレクションシステムで管理するヒープ領域内のオブ
ジェクトへのポインタ)の可能性がある全てのデータ(
レジスタ、スタック、データ領域など)の中で、後述す
る条件I〜■を全で満たすものは、アクセス可能なオブ
ジェクトへのポインタ(実際にはオブジェクトテーブル
エントリ ジコレクションを行う。
ションシステムでは、オブジェクトポインタ(ガーベッ
ジコレクションシステムで管理するヒープ領域内のオブ
ジェクトへのポインタ)の可能性がある全てのデータ(
レジスタ、スタック、データ領域など)の中で、後述す
る条件I〜■を全で満たすものは、アクセス可能なオブ
ジェクトへのポインタ(実際にはオブジェクトテーブル
エントリ ジコレクションを行う。
1)データの値が、オブジェクトテーブルが占めるアド
レスの範囲内にある。範囲内になければオブジェクトポ
インタではない。
レスの範囲内にある。範囲内になければオブジェクトポ
インタではない。
■)データの値のオブジェクトテーブルヘッダからのオ
フセットが、オブジェクトテーブルエンI・りのサイズ
の倍数である。倍数でなければオブジェクトポインタで
はない。
フセットが、オブジェクトテーブルエンI・りのサイズ
の倍数である。倍数でなければオブジェクトポインタで
はない。
■)データの示すオブジェクトテーブルエントリが使用
されている。使用されていなければオブジェクトポイン
タではない。
されている。使用されていなければオブジェクトポイン
タではない。
なお、整数等の値がたまたま上記条件I〜■を全て満た
す場合があっても、オブジェクトテーブルエントリ内の
ヒープ領域へのポインタの値を書き換えることにより、
オブジェクトを移動することが可能である。
す場合があっても、オブジェクトテーブルエントリ内の
ヒープ領域へのポインタの値を書き換えることにより、
オブジェクトを移動することが可能である。
第2図は本発明に係るアクセス可能なオブジェクトの判
別方法を適用したガーベッジコレクションシステムの一
実施例を示す構成図である。
別方法を適用したガーベッジコレクションシステムの一
実施例を示す構成図である。
この実施例では、本発明に係るアクセス可能なオブジェ
クトの判別方法を適用したマーク&スイープ型ガーベツ
ジコレクションシステムの動作について説明する。
クトの判別方法を適用したマーク&スイープ型ガーベツ
ジコレクションシステムの動作について説明する。
図示しないメモリにはヒープ領域10とオブジェクトテ
ーブル20とが割り当てられている。
ーブル20とが割り当てられている。
オブジェクトテーブル2oには、ヒープ領域10内のオ
ブジェクトへのポインタと、そのポインタで指定される
オブジェクトが参照されたことを示すマークとを記憶す
る複数のオブジェクトテーブルエントリ2OAが設けら
れている。
ブジェクトへのポインタと、そのポインタで指定される
オブジェクトが参照されたことを示すマークとを記憶す
る複数のオブジェクトテーブルエントリ2OAが設けら
れている。
ヒープ領域10とオブジェクトテーブル20のメモリ配
置では、ヒープ領域10を高アドレスに配置する。ここ
で、第2図に示すように、ヒープ領域10のトップアド
レスをHeapTop 、ヒープ領域10のボトムアド
レスをIIeapBottom、オブジェクトテーブル
20のトップアドレスを0TTop 、オブジェクトテ
ーブル20のボトムアドレスをO’TB。
置では、ヒープ領域10を高アドレスに配置する。ここ
で、第2図に示すように、ヒープ領域10のトップアド
レスをHeapTop 、ヒープ領域10のボトムアド
レスをIIeapBottom、オブジェクトテーブル
20のトップアドレスを0TTop 、オブジェクトテ
ーブル20のボトムアドレスをO’TB。
ttomとすると、0TTop < = HeapBo
ttomが成り立つ。
ttomが成り立つ。
またオブジェクトテーブル20のエントリサイズを0T
EntrySizeとする。ここで、0TBO1tom
と0TTop間は0TEntrySizeの倍数になる
ようにする。
EntrySizeとする。ここで、0TBO1tom
と0TTop間は0TEntrySizeの倍数になる
ようにする。
なお使用されていないオブジェクトテーブルエントリ2
0A(第2図の斜線で示すエントリ)は、フリーリスト
(PreeList) 30からのリストを構成する。
0A(第2図の斜線で示すエントリ)は、フリーリスト
(PreeList) 30からのリストを構成する。
リストの最後のエントリには「0」が記述されている。
そしてレジスタ及びスタック40、データ領域50から
ヒープ領域10内のオブジェクトへは、オブジェクトテ
ーブル20を介して間接的に参照する。
ヒープ領域10内のオブジェクトへは、オブジェクトテ
ーブル20を介して間接的に参照する。
次にマーク及スィーブ型ガーへツジコレクションシステ
ムのガーベッジコレクション動作を説明する。
ムのガーベッジコレクション動作を説明する。
最初に、ガーベッジコレクションのマークフェーズにお
いて、レジスタ及びスタック40、データ領域50の全
てのデータの中で、後述する条件■〜■を全で満たすも
のは、アクセス可能なオブジェクトへのポインタ(実際
にはオブジェクトテーブルエントリへのポインタ)であ
ると仮定し、それらのポインタをルートとして再帰的に
オブジェクトテーブルエントリ2OA内にマークしてい
く。
いて、レジスタ及びスタック40、データ領域50の全
てのデータの中で、後述する条件■〜■を全で満たすも
のは、アクセス可能なオブジェクトへのポインタ(実際
にはオブジェクトテーブルエントリへのポインタ)であ
ると仮定し、それらのポインタをルートとして再帰的に
オブジェクトテーブルエントリ2OA内にマークしてい
く。
ここで、調べるデータの値をdataとすると、■:
OT[3ottom< =data< 0TTop(上
述した条件Iに対応している) ■: data mod 0TEntrySize=
0(dataが0TIEntrySizeの倍数である
こと)(上述した条件Hに対応している) ■: eontents ofdata addreS
S> = l1eapBO1iO+1(オブジェクトテ
ーブルエントりが使用されていること) (上述した条件■に対応している) 上記条件■〜■の全てを満足する場合は、アクセス可能
なオブジェクトへのポインタ(実際にはオブジェクトテ
ーブルエントりへのポインタ)であると仮定する。
OT[3ottom< =data< 0TTop(上
述した条件Iに対応している) ■: data mod 0TEntrySize=
0(dataが0TIEntrySizeの倍数である
こと)(上述した条件Hに対応している) ■: eontents ofdata addreS
S> = l1eapBO1iO+1(オブジェクトテ
ーブルエントりが使用されていること) (上述した条件■に対応している) 上記条件■〜■の全てを満足する場合は、アクセス可能
なオブジェクトへのポインタ(実際にはオブジェクトテ
ーブルエントりへのポインタ)であると仮定する。
一方、スイープフェイズでは、全てのオブジェクトテー
ブルエントリ2OAの中で、オブジェクトテーブルエン
トリ2OA内にマークされていないオブジェクトを回収
する。
ブルエントリ2OAの中で、オブジェクトテーブルエン
トリ2OA内にマークされていないオブジェクトを回収
する。
第3図は本発明に係るアクセス可能なオブジェクトの判
別方法を適用したガーベツジコレクションシステムの他
の実施例を示す構成図である。
別方法を適用したガーベツジコレクションシステムの他
の実施例を示す構成図である。
この実施例では、本発明に係るアクセス可能なオブジェ
クトの判別方法を適用したジェネレーションスキャベン
ジ型ガーベッジコレクションシステムの動作について説
明する。
クトの判別方法を適用したジェネレーションスキャベン
ジ型ガーベッジコレクションシステムの動作について説
明する。
第3図において、第2図に示した構成部分と同様の機能
を果たす部分には同一の符号を付している。
を果たす部分には同一の符号を付している。
ヒープ領域100とオブジェクトテーブル2゜のメモリ
配置では、ヒープ領域100を高アドレスに配置する。
配置では、ヒープ領域100を高アドレスに配置する。
ここで、第3図に示すように、ヒープ領域1゜Oのトッ
プアドレスをHeapTop 、ヒープ領域100のボ
トムアドレスをHeapBottom、オブジェクトテ
ーブル20のトップアドレスを0TTop ’ 、オブ
ジェクトテーブル20のボトムアドレスをOTBott
omとすると、0TTop < −11eapBott
omが成立する。
プアドレスをHeapTop 、ヒープ領域100のボ
トムアドレスをHeapBottom、オブジェクトテ
ーブル20のトップアドレスを0TTop ’ 、オブ
ジェクトテーブル20のボトムアドレスをOTBott
omとすると、0TTop < −11eapBott
omが成立する。
また同図に示すように、ヒープ領域100は、高アドレ
スから順に、クリエーションスペース(Creaiio
nSpace ) 101、サバイバスペース(Sur
vivorSpace ) 1、サバイバスペース(S
urvivorspace ) 2、オールドスペース
(0IdSpace)102から構成されている。クリ
エーションスペース1−01とサバイバスペース1.2
とをまとめて一ユースペース(NewSpace) 1
03とする。
スから順に、クリエーションスペース(Creaiio
nSpace ) 101、サバイバスペース(Sur
vivorSpace ) 1、サバイバスペース(S
urvivorspace ) 2、オールドスペース
(0IdSpace)102から構成されている。クリ
エーションスペース1−01とサバイバスペース1.2
とをまとめて一ユースペース(NewSpace) 1
03とする。
ここで、第3図に示すように、ニュースペース103の
トップアドレスをNevTop、ニュースペース103
のボトムアドレスをNewBottom 、オールドス
ペース102のトップアドレスを0IdTop、オール
ドスペース102のボトムアドレスを旧d13otLo
mとする。
トップアドレスをNevTop、ニュースペース103
のボトムアドレスをNewBottom 、オールドス
ペース102のトップアドレスを0IdTop、オール
ドスペース102のボトムアドレスを旧d13otLo
mとする。
またオブジェクトテーブル20のエントリサイズを0T
EntrySizeとする。ここで、0TBoi to
mと0TTop間は0TEntrySizeの倍数にな
るようにする。
EntrySizeとする。ここで、0TBoi to
mと0TTop間は0TEntrySizeの倍数にな
るようにする。
なお使用されていないオブジェクトテーブルエントリ2
0A(第3図の斜線で示すエントリ)は、フリーリスト
(FreeList) 30からのリストを構成する。
0A(第3図の斜線で示すエントリ)は、フリーリスト
(FreeList) 30からのリストを構成する。
リストの最後のエントリには「0」が記述されている。
そしてレジスタ及びスタック40、データ領域50から
ヒープ領域100内のオブジェクトへは、オブジェクト
テーブル20を介して間接的に参照する。
ヒープ領域100内のオブジェクトへは、オブジェクト
テーブル20を介して間接的に参照する。
次にジェネレーションスキャベンジ型ガーベッジコレク
ションシステムのガーベッジコレクション動作を説明す
る。
ションシステムのガーベッジコレクション動作を説明す
る。
最初に、ガーベッジコレクションのジェネレーション交
代フェーズではレジスタ及びスタック40、データ領域
50、それとオールドスペース102内の全てのデータ
の中で、後述する条件a〜Cを全て満足するものは、生
き残らせるべきオブジェクトへのポインタ(実際にはオ
ブジェクトテーブルエントリへのポインタ)であると仮
定し、それらのポインタをルートとして再帰的に、2つ
あるサバイバスペースのうち空いているほうのサバイバ
スペースに、クリエーションスペース101内のオブジ
ェクトをコピーしていく。
代フェーズではレジスタ及びスタック40、データ領域
50、それとオールドスペース102内の全てのデータ
の中で、後述する条件a〜Cを全て満足するものは、生
き残らせるべきオブジェクトへのポインタ(実際にはオ
ブジェクトテーブルエントリへのポインタ)であると仮
定し、それらのポインタをルートとして再帰的に、2つ
あるサバイバスペースのうち空いているほうのサバイバ
スペースに、クリエーションスペース101内のオブジ
ェクトをコピーしていく。
ここで調べるデータの値をdataとすると、a )
: OTBottom< −data< 0TTop
(上述した条件Iに対応している) b ) : data mod 0TEntrySi
ze= 0(dataが0TEntrySizeの倍数
であること)(上述した条件■に対応している) c ) : contents ofdata ad
dress> = NewBoLLom(オブジェクト
テーブルエントすが使用されていて、かつそれがNew
Space内のオブジェクトポインタであること) (上述した条件■に対応している) 上記条件a −cの全てを満足している場合は、生き残
らせるべきオブジェクトへのポインタ(実際にはオブジ
ェクトテーブルエントすへのポインタ)であると仮定す
る。
: OTBottom< −data< 0TTop
(上述した条件Iに対応している) b ) : data mod 0TEntrySi
ze= 0(dataが0TEntrySizeの倍数
であること)(上述した条件■に対応している) c ) : contents ofdata ad
dress> = NewBoLLom(オブジェクト
テーブルエントすが使用されていて、かつそれがNew
Space内のオブジェクトポインタであること) (上述した条件■に対応している) 上記条件a −cの全てを満足している場合は、生き残
らせるべきオブジェクトへのポインタ(実際にはオブジ
ェクトテーブルエントすへのポインタ)であると仮定す
る。
なお上述したクリエーションスペース1.01内のオブ
ジェクトのコピーに際しては、周知のように、最初の全
データに関して生き残らせるべきオブジェクトをサバイ
バスペース1にコピーしたら、次の全データに関して生
き残らせるべきオブジェクトを、空いているサバイバス
ペース2にコピーし、以下同様にして、サバイバスペー
ス1とサバイバスペース2とに交互にコピーしていくこ
とになる。
ジェクトのコピーに際しては、周知のように、最初の全
データに関して生き残らせるべきオブジェクトをサバイ
バスペース1にコピーしたら、次の全データに関して生
き残らせるべきオブジェクトを、空いているサバイバス
ペース2にコピーし、以下同様にして、サバイバスペー
ス1とサバイバスペース2とに交互にコピーしていくこ
とになる。
上記各実施例によれば、ポインタの値と整数等の値とが
同じ場合であっても、レジスタ、スタック、データ領域
内のデータのポインタは直接ヒープ領域内のオブジェク
トを指していないので、オブジェクトテーブルエントリ
内のヒープ領域へのポインタの値を書き換えることがで
き、これによりオブジェクトを移動することが可能であ
る。すなわち、スタック、レジスタなどの値を書換える
必要がない(なお、書換えた場合には誤動作する虞が極
めて大きい)。
同じ場合であっても、レジスタ、スタック、データ領域
内のデータのポインタは直接ヒープ領域内のオブジェク
トを指していないので、オブジェクトテーブルエントリ
内のヒープ領域へのポインタの値を書き換えることがで
き、これによりオブジェクトを移動することが可能であ
る。すなわち、スタック、レジスタなどの値を書換える
必要がない(なお、書換えた場合には誤動作する虞が極
めて大きい)。
以上説明したように本実施例によれば、次に示すような
利点がある。
利点がある。
■:オブジェクトの判別には、タグを用いていないので
、ポインタや整数などのデータを標準のマシン表現(3
2ビツト整数等)で扱うことができるので、実行効率の
低下を防止することができる。
、ポインタや整数などのデータを標準のマシン表現(3
2ビツト整数等)で扱うことができるので、実行効率の
低下を防止することができる。
■:オブジェクトの種類に応じたメモリ領域にオブジェ
クトを格納するようにしていないので、特殊なデータ表
現を必要としないため、コンパイラ等の変更がなくても
、C,Pa5clなどの一般の言語で使用することがで
きる。
クトを格納するようにしていないので、特殊なデータ表
現を必要としないため、コンパイラ等の変更がなくても
、C,Pa5clなどの一般の言語で使用することがで
きる。
■:ヒープ領域へのポインタの値を書換えることにより
、ヒープ領域内のオブジェクトを移動することが可能と
なるので、コピーコピー型ガーベッジコレクションと組
み合わせて実行効率の良いガーベッジコレクションを行
うことができる。
、ヒープ領域内のオブジェクトを移動することが可能と
なるので、コピーコピー型ガーベッジコレクションと組
み合わせて実行効率の良いガーベッジコレクションを行
うことができる。
■:ヒープ領域へのポインタの値を書換えることにより
、ヒープ領域内のオブジェクi・を移動することが可能
となるので、コンパクションを行いヒープ領域のフラグ
メンテーションを防ぐことができる。
、ヒープ領域内のオブジェクi・を移動することが可能
となるので、コンパクションを行いヒープ領域のフラグ
メンテーションを防ぐことができる。
■:ヒープを参照する領域内のデータがアクセス可能な
オブジェクトへのポインタであるがどうかを調べる手順
が簡単になる。
オブジェクトへのポインタであるがどうかを調べる手順
が簡単になる。
以上説明したように本発明によれば、ヒープ領域とは異
なる領域からヒープ領域内のオブジェクトへは、そのオ
ブジェクトへのポインタを記憶しているオブジェクトテ
ーブルを介して間接的に参照するようにしているので、
オブジェクトが存在する領域は、例えばデータ領域内に
存在し、ヒープ領域内のオブジェクトを参照すべくポイ
ンタの可能性があるデータ、に対応するポインタには依
存しないことになり、このためオブジェクトテーブル内
のポインタの値を書換えてオブジェクトを移動すること
が可能となる。
なる領域からヒープ領域内のオブジェクトへは、そのオ
ブジェクトへのポインタを記憶しているオブジェクトテ
ーブルを介して間接的に参照するようにしているので、
オブジェクトが存在する領域は、例えばデータ領域内に
存在し、ヒープ領域内のオブジェクトを参照すべくポイ
ンタの可能性があるデータ、に対応するポインタには依
存しないことになり、このためオブジェクトテーブル内
のポインタの値を書換えてオブジェクトを移動すること
が可能となる。
またオブジェクトを移動することができることにより、
ヒープ領域にフラグメンテーションが起こった場合であ
っても、コンパクションを行うことができ、メモリを有
効に利用することが可能となる。さらにオブジェクトを
移動することができることにより、コピー型ガーベツジ
コレクションと組み合わせることができるので、実行効
率の良いガーベツジコレクションを行うことができる。
ヒープ領域にフラグメンテーションが起こった場合であ
っても、コンパクションを行うことができ、メモリを有
効に利用することが可能となる。さらにオブジェクトを
移動することができることにより、コピー型ガーベツジ
コレクションと組み合わせることができるので、実行効
率の良いガーベツジコレクションを行うことができる。
第1図は本発明に係るアクセス可能なオブジェクトの判
別方法を説明するための説明図、第2図は本発明に係る
アクセス可能なオブジェクトの判別方法を適用したガー
ヘツジコレクションシステムの一実施例を示す構成図、
第3図は本発明に係るアクセス可能なオブジェクトの判
別方法を適用したガーベッジコレクションシステムの他
の実施例を示す構成図である。 10.100・・・ヒープ領域、20・・・オブジェク
トテーブル、2OA・・・オブジェクトテーブルエント
リ、30・・・フリーリスト、40・・・レジスタ及び
スタック、50・・・データ領域。 第1
別方法を説明するための説明図、第2図は本発明に係る
アクセス可能なオブジェクトの判別方法を適用したガー
ヘツジコレクションシステムの一実施例を示す構成図、
第3図は本発明に係るアクセス可能なオブジェクトの判
別方法を適用したガーベッジコレクションシステムの他
の実施例を示す構成図である。 10.100・・・ヒープ領域、20・・・オブジェク
トテーブル、2OA・・・オブジェクトテーブルエント
リ、30・・・フリーリスト、40・・・レジスタ及び
スタック、50・・・データ領域。 第1
Claims (1)
- 【特許請求の範囲】 ヒープ領域内のオブジェクトへのポインタを記憶するオ
ブジェクトテーブルを設け、ヒープ領域とは異なる領域
からヒープ領域内のオブジェクトへは前記テーブルを介
して間接的に参照し、そのとき参照されるポインタで指
定されているオブジェクトをアクセス可能なオブジェク
ト対象とするようにした ことを特徴とするガーベッジコレクションシステムにお
けるアクセス可能なオブジェクトの判別方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2149285A JP2920660B2 (ja) | 1990-06-07 | 1990-06-07 | ガーベッジコレクションシステムにおけるアクセス可能なオブジェクトの判別方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2149285A JP2920660B2 (ja) | 1990-06-07 | 1990-06-07 | ガーベッジコレクションシステムにおけるアクセス可能なオブジェクトの判別方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0442338A true JPH0442338A (ja) | 1992-02-12 |
JP2920660B2 JP2920660B2 (ja) | 1999-07-19 |
Family
ID=15471854
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2149285A Expired - Fee Related JP2920660B2 (ja) | 1990-06-07 | 1990-06-07 | ガーベッジコレクションシステムにおけるアクセス可能なオブジェクトの判別方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2920660B2 (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5525017A (en) * | 1992-05-01 | 1996-06-11 | Kabushiki Kaisha Komatsu Seisakusho | Work support device of camshaft miller |
KR100384905B1 (ko) * | 1999-04-23 | 2003-05-22 | 인터내셔널 비지네스 머신즈 코포레이션 | 컴퓨터 메모리에서 데이터 관리 방법, 장치 및 기록매체 |
JP2006056724A (ja) * | 2004-08-17 | 2006-03-02 | Hoya Corp | モールドプレス成形型、及び光学素子の製造方法 |
JP2014513354A (ja) * | 2011-04-25 | 2014-05-29 | マイクロソフト コーポレーション | メモリー管理のための無難なガベージ・コレクションおよびタグ付き整数 |
CN107636624A (zh) * | 2015-06-30 | 2018-01-26 | 国际商业机器公司 | 没有使用的特殊指令的垃圾收集 |
-
1990
- 1990-06-07 JP JP2149285A patent/JP2920660B2/ja not_active Expired - Fee Related
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5525017A (en) * | 1992-05-01 | 1996-06-11 | Kabushiki Kaisha Komatsu Seisakusho | Work support device of camshaft miller |
KR100384905B1 (ko) * | 1999-04-23 | 2003-05-22 | 인터내셔널 비지네스 머신즈 코포레이션 | 컴퓨터 메모리에서 데이터 관리 방법, 장치 및 기록매체 |
JP2006056724A (ja) * | 2004-08-17 | 2006-03-02 | Hoya Corp | モールドプレス成形型、及び光学素子の製造方法 |
JP4490761B2 (ja) * | 2004-08-17 | 2010-06-30 | Hoya株式会社 | モールドプレス成形型、及び光学素子の製造方法 |
JP2014513354A (ja) * | 2011-04-25 | 2014-05-29 | マイクロソフト コーポレーション | メモリー管理のための無難なガベージ・コレクションおよびタグ付き整数 |
US9684679B2 (en) | 2011-04-25 | 2017-06-20 | Microsoft Technology Licensing, Llc. | Conservative garbage collecting and tagged integers for memory management |
JP2018067331A (ja) * | 2011-04-25 | 2018-04-26 | マイクロソフト テクノロジー ライセンシング,エルエルシー | メモリー管理のための無難なガベージ・コレクションおよびタグ付き整数 |
US10628398B2 (en) | 2011-04-25 | 2020-04-21 | Microsoft Technology Licensing, Llc. | Conservative garbage collecting and tagged integers for memory management |
CN107636624A (zh) * | 2015-06-30 | 2018-01-26 | 国际商业机器公司 | 没有使用的特殊指令的垃圾收集 |
JP2018524696A (ja) * | 2015-06-30 | 2018-08-30 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 特殊命令を使用しないガベージ・コレクション |
CN107636624B (zh) * | 2015-06-30 | 2021-06-15 | 国际商业机器公司 | 没有使用的特殊指令的垃圾收集 |
Also Published As
Publication number | Publication date |
---|---|
JP2920660B2 (ja) | 1999-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6928460B2 (en) | Method and apparatus for performing generational garbage collection in a segmented heap | |
JP3628032B2 (ja) | コンサーバティブ・スタックとジェネレイショナル・ヒープガーベージ・コレクション用コンピュータシステム及び方法 | |
US6434577B1 (en) | Scalable-remembered-set garbage collection | |
Bartlett | Compacting garbage collection with ambiguous roots | |
US6424977B1 (en) | Train-algorithm-based garbage collector employing reduced oversized-object threshold | |
US6185581B1 (en) | Train-algorithm-based garbage collector employing fixed-size remembered sets | |
US6826583B1 (en) | Local allocation buffers for parallel garbage collection | |
US6434576B1 (en) | Popular-object handling in a train-algorithm-based garbage collector | |
US6249793B1 (en) | Mostly concurrent compaction in a garbage collection system | |
US6415302B1 (en) | Train-algorithm-based garbage collector employing farthest-forward-car indicator | |
US6449626B1 (en) | Reduced-cost remembered-set processing in a train-algorithm-based garbage collector | |
US5903899A (en) | System and method for assisting exact Garbage collection by segregating the contents of a stack into sub stacks | |
EP1197868B1 (en) | Method of driving remapping in flash memory and flash memory architecture suitable therefor | |
JP4176857B2 (ja) | リファレンスされたオブジェクトを管理するための3状態リファレンスの使用 | |
US6401181B1 (en) | Dynamic allocation of physical memory space | |
US7136887B2 (en) | Method and mechanism for finding references in a card in time linear in the size of the card in a garbage-collected heap | |
Christopher | Reference count garbage collection | |
US6105040A (en) | Method and apparatus for managing stored objects | |
US7389395B1 (en) | Split-reference, two-pass mark-compaction | |
US7412580B1 (en) | Concurrent incremental garbage collector with a card table summarizing modified reference locations | |
JP2000513854A (ja) | タグビットのスタック・キャッシュを用いて厳密なガーベッジ・コレクションを支援するための装置及びその方法 | |
US5963982A (en) | Defragmentation of stored data without pointer indirection | |
US6427154B1 (en) | Method of delaying space allocation for parallel copying garbage collection | |
US7499961B2 (en) | Method and apparatus for limiting the size and facilitating maintenance of remembered sets in a space incremental garbage collector | |
JPH05274152A (ja) | オブジェクト管理方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080430 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090430 Year of fee payment: 10 |
|
LAPS | Cancellation because of no payment of annual fees |