JPH0816457A - 自動ガーベジ・コレクション方法 - Google Patents
自動ガーベジ・コレクション方法Info
- Publication number
- JPH0816457A JPH0816457A JP5076857A JP7685793A JPH0816457A JP H0816457 A JPH0816457 A JP H0816457A JP 5076857 A JP5076857 A JP 5076857A JP 7685793 A JP7685793 A JP 7685793A JP H0816457 A JPH0816457 A JP H0816457A
- Authority
- JP
- Japan
- Prior art keywords
- pointer
- pointers
- strong
- destroyed
- weak
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0261—Garbage collection, i.e. reclamation of unreferenced memory using reference counting
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/289—Object oriented databases
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99956—File allocation
- Y10S707/99957—Garbage collection
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Memory System (AREA)
Abstract
(57)【要約】
【目的】ソフトウェア・システムにおけるダングリング
・ポインタ問題とガーベジ・コレクション問題の両方を
解決する。 【構成】オブジェクトの参照に強いポインタを利用する
ステップと、前記ソフトウェア・システムにおけるオブ
ジェクトに対する強いポインタのサイクルを識別するス
テップと、前記サイクルにおける前記オブジェクトに対
する強いポインタのうち少なくとも1つを、前記オブジ
ェクトの破壊時にゼロになる弱い簡略化したポインタに
置き換えるステップと、前記オブジェクトに対する強い
ポインタのカウントがゼロに達するとオブジェクトを破
壊するステップから構成される。
・ポインタ問題とガーベジ・コレクション問題の両方を
解決する。 【構成】オブジェクトの参照に強いポインタを利用する
ステップと、前記ソフトウェア・システムにおけるオブ
ジェクトに対する強いポインタのサイクルを識別するス
テップと、前記サイクルにおける前記オブジェクトに対
する強いポインタのうち少なくとも1つを、前記オブジ
ェクトの破壊時にゼロになる弱い簡略化したポインタに
置き換えるステップと、前記オブジェクトに対する強い
ポインタのカウントがゼロに達するとオブジェクトを破
壊するステップから構成される。
Description
【0001】
【産業上の利用分野】本発明は、一般に、コンピュータ
・プログラミングの分野に関するものであり、とりわ
け、ダングリング・ポインタの問題及びガーベジ収集の
問題の解決に関するものである。
・プログラミングの分野に関するものであり、とりわ
け、ダングリング・ポインタの問題及びガーベジ収集の
問題の解決に関するものである。
【0002】
【従来の技術】ソフトウェアの場合、しばしば、プログ
ラムのある部分が、プログラムの他の部分によって構成
されたデータ構造のようなプログラム要素を参照するこ
とが必要になる。こうした要素は一般にオブジェクトと
呼ばれる。一般に、オブジェクトを参照するための手段
には、オブジェクトに対するポインタが利用される。指
示されたオブジェクトが破壊され、引き続きそのポイン
タを利用してそのオブジェクトにアクセスしようとする
試みがなされる場合に、問題が生じる。通常、このため
に致命的なプログラム・エラーが生じることになる。こ
れは、一般にダングリング・ポインタ問題と呼ばれる。
ラムのある部分が、プログラムの他の部分によって構成
されたデータ構造のようなプログラム要素を参照するこ
とが必要になる。こうした要素は一般にオブジェクトと
呼ばれる。一般に、オブジェクトを参照するための手段
には、オブジェクトに対するポインタが利用される。指
示されたオブジェクトが破壊され、引き続きそのポイン
タを利用してそのオブジェクトにアクセスしようとする
試みがなされる場合に、問題が生じる。通常、このため
に致命的なプログラム・エラーが生じることになる。こ
れは、一般にダングリング・ポインタ問題と呼ばれる。
【0003】ダングリング問題を解決するアプローチの
1つは、オブジェクトに対する参照の数をカウントする
ことである。オブジェクトはそれに対する全ての参照が
片付くまで安全に破壊することができないので、オブジ
ェクトの破壊はポインタのカウントがゼロに達するまで
延期される。このため、循環参照が行われる場合に問題
が生じることになる。
1つは、オブジェクトに対する参照の数をカウントする
ことである。オブジェクトはそれに対する全ての参照が
片付くまで安全に破壊することができないので、オブジ
ェクトの破壊はポインタのカウントがゼロに達するまで
延期される。このため、循環参照が行われる場合に問題
が生じることになる。
【0004】図2の場合、オブジェクトA及びBは、互
いに対するポインタを有しており、他の大域ポインタ
(プログラム内の他のどこかにおける)は、オブジェク
トAを指示している。図示のポインタが、A及びBに対
する現存の全てのポインタであると仮定することができ
る。
いに対するポインタを有しており、他の大域ポインタ
(プログラム内の他のどこかにおける)は、オブジェク
トAを指示している。図示のポインタが、A及びBに対
する現存の全てのポインタであると仮定することができ
る。
【0005】大域ポインタを取り除くと(破壊するか、
あるいは別のオブジェクトを指示させて)、オブジェク
トA及びBはプログラムの残りの部分からアクセスでき
ないままになる。それぞれが、それに対する残りの1つ
のポインタを有しているので、該オブジェクトを破壊す
ることはできない。プログラムの残りの部分に関する限
り、オブジェクトA及びBは、ガーベジである。これら
をガーベジとして識別する問題は、ガーベジ収集問題と
して知られている。
あるいは別のオブジェクトを指示させて)、オブジェク
トA及びBはプログラムの残りの部分からアクセスでき
ないままになる。それぞれが、それに対する残りの1つ
のポインタを有しているので、該オブジェクトを破壊す
ることはできない。プログラムの残りの部分に関する限
り、オブジェクトA及びBは、ガーベジである。これら
をガーベジとして識別する問題は、ガーベジ収集問題と
して知られている。
【0006】従来のポインタ・カウント案の場合、ガー
ベジ収集問題を取り扱うには、解説したばかりのような
状況を明確に識別し、図2におけるBからAへのポイン
タのような、いくつかのポインタを明確に取り除くコー
ドを書くアプリケーション・プログラマを必要とした。
これらのポインタを除去すると、いくつかのオブジェク
ト(この例の場合はA)は、残りのポインタがなくな
り、破壊が可能になる。破壊のプロセスにおいて、これ
らのオブジェクトが備えている他のオブジェクトに対す
るポインタ(この例の場合、AからBへのポインタ)
が、やはり破壊されるので、他のオブジェクト(B)
も、残りのポインタが無い状態になる。このプロセス
は、孤立した全てのオブジェクトが破壊されるまで継続
される。
ベジ収集問題を取り扱うには、解説したばかりのような
状況を明確に識別し、図2におけるBからAへのポイン
タのような、いくつかのポインタを明確に取り除くコー
ドを書くアプリケーション・プログラマを必要とした。
これらのポインタを除去すると、いくつかのオブジェク
ト(この例の場合はA)は、残りのポインタがなくな
り、破壊が可能になる。破壊のプロセスにおいて、これ
らのオブジェクトが備えている他のオブジェクトに対す
るポインタ(この例の場合、AからBへのポインタ)
が、やはり破壊されるので、他のオブジェクト(B)
も、残りのポインタが無い状態になる。このプロセス
は、孤立した全てのオブジェクトが破壊されるまで継続
される。
【0007】このアプローチに関する問題は、ポインタ
を取り除くコードを書くことではなく、コードをいつ呼
び出すべきかを判定することである。プログラマは、各
セグメントがいつ孤立するかを判定しなければならな
い。
を取り除くコードを書くことではなく、コードをいつ呼
び出すべきかを判定することである。プログラマは、各
セグメントがいつ孤立するかを判定しなければならな
い。
【0008】ガーベジ収集問題は、ソフトウェア開発プ
ロセスに重大な影響を及ぼす。言語及びソフトウェア・
テクノロジの絶えざる進歩にもかかわらず、メモリの適
正な管理は引き続きソフトウェア・システムの開発に要
する努力全体において大きな部分を占めている。一般的
なC言語の場合、malloc()及びfree()の単純さが大きい
魅力である。しかし、この単純さは、その代価を支払う
ことになる。あまりに平易すぎるため、メモリをはやま
って解放し、従って該メモリをダングリング・ポインタ
で参照することになったり、あるいはメモリを完全に解
放し損なって、メモリのリークを生じさせることにな
る。
ロセスに重大な影響を及ぼす。言語及びソフトウェア・
テクノロジの絶えざる進歩にもかかわらず、メモリの適
正な管理は引き続きソフトウェア・システムの開発に要
する努力全体において大きな部分を占めている。一般的
なC言語の場合、malloc()及びfree()の単純さが大きい
魅力である。しかし、この単純さは、その代価を支払う
ことになる。あまりに平易すぎるため、メモリをはやま
って解放し、従って該メモリをダングリング・ポインタ
で参照することになったり、あるいはメモリを完全に解
放し損なって、メモリのリークを生じさせることにな
る。
【0009】あいにくこうしたタイプのエラーが生じる
と、その位置を突き止め処理するのは、通常極めて困難
である。それらは通常、テストにもかかわらず、検出さ
れずに残る可能性のあるタイプのエラーであり、該分野
のソフトウェアの危険で、高くつく故障につながる可能
性がある。
と、その位置を突き止め処理するのは、通常極めて困難
である。それらは通常、テストにもかかわらず、検出さ
れずに残る可能性のあるタイプのエラーであり、該分野
のソフトウェアの危険で、高くつく故障につながる可能
性がある。
【0010】
【発明が解決しようとする課題】プログラマの観点から
すると、これらの問題の最良の改善策は、自動ガーベジ
収集である。自動ガーベジ収集を支援する言語におい
て、メモリ管理は些細なことになり、必要が生じる毎に
オブジェクトの割り付けを行うだけでその割り付け解除
について悩むことはない。自動ガーベジ収集案の大部分
は、オブジェクトに対する任意の参照及び全ての参照に
ついて行う、アプリケーションのデータ空間に対する徹
底した探索に依存している。
すると、これらの問題の最良の改善策は、自動ガーベジ
収集である。自動ガーベジ収集を支援する言語におい
て、メモリ管理は些細なことになり、必要が生じる毎に
オブジェクトの割り付けを行うだけでその割り付け解除
について悩むことはない。自動ガーベジ収集案の大部分
は、オブジェクトに対する任意の参照及び全ての参照に
ついて行う、アプリケーションのデータ空間に対する徹
底した探索に依存している。
【0011】しかしこうした徹底した探索の処理要件の
ために、この技法はほとんどの現行C及びC++言語で
開発されるアプリケーションにとってあまりにも非能率
的なものになるので、別のメカニズムが必要になる。
ために、この技法はほとんどの現行C及びC++言語で
開発されるアプリケーションにとってあまりにも非能率
的なものになるので、別のメカニズムが必要になる。
【0012】本発明の目的は、このような点に鑑みてな
されたもので、ソフトウェア・システムにおけるダング
リング・ポインタ問題とガーベジ収集問題の両方を解決
することのできる自動ガーベジ・コレクション方法を提
供することにある。
されたもので、ソフトウェア・システムにおけるダング
リング・ポインタ問題とガーベジ収集問題の両方を解決
することのできる自動ガーベジ・コレクション方法を提
供することにある。
【0013】
【課題を解決するための手段】このような目的を達成す
るために本発明においては、オブジェクトの参照に強い
ポインタを利用するステップと、前記ソフトウェア・シ
ステムにおけるオブジェクトに対する強いポインタのサ
イクルを識別するステップと、前記サイクルにおける前
記オブジェクトに対する強いポインタのうち少なくとも
1つを、前記オブジェクトの破壊時にゼロになる弱い簡
略化したポインタに置き換えるステップと、前記オブジ
ェクトに対する強いポインタのカウントがゼロに達する
とオブジェクトを破壊するステップから構成されること
を特徴とする。
るために本発明においては、オブジェクトの参照に強い
ポインタを利用するステップと、前記ソフトウェア・シ
ステムにおけるオブジェクトに対する強いポインタのサ
イクルを識別するステップと、前記サイクルにおける前
記オブジェクトに対する強いポインタのうち少なくとも
1つを、前記オブジェクトの破壊時にゼロになる弱い簡
略化したポインタに置き換えるステップと、前記オブジ
ェクトに対する強いポインタのカウントがゼロに達する
とオブジェクトを破壊するステップから構成されること
を特徴とする。
【0014】
【作用】安全なオブジェクト・ポインタが、強いポイン
タと弱いポインタに分割される。強いポインタは、明確
に新しい値を割り当てられるか、ゼロにセットされる
か、あるいは破壊されない限り、あるオブジェクトを指
示している。弱いポインタは、オブジェクトが破壊され
ない限りそのオブジェクトを指示している。オブジェク
トが破壊されると、弱いポインタは有効にゼロになるの
で、コンピュータ・メモリにおける参照サイクルの中断
が可能になる。
タと弱いポインタに分割される。強いポインタは、明確
に新しい値を割り当てられるか、ゼロにセットされる
か、あるいは破壊されない限り、あるオブジェクトを指
示している。弱いポインタは、オブジェクトが破壊され
ない限りそのオブジェクトを指示している。オブジェク
トが破壊されると、弱いポインタは有効にゼロになるの
で、コンピュータ・メモリにおける参照サイクルの中断
が可能になる。
【0015】
【実施例】以下図面を用いて本発明を詳しく説明する。
本発明においては、 まず、オブジェクトに対するポイ
ンタのサイクルが識別され、そのサイクルにおけるポイ
ンタの少なくとも1つが、弱い簡略化したポインタに置
き換えられる。この弱いポインタは、オブジェクトが破
壊されるまでそのオブジェクトを指示する。該ポインタ
は、オブジェクトの破壊を阻止する代わりにそれが指示
しているオブジェクトが破壊されると安全にゼロ・ポイ
ンタになる。
本発明においては、 まず、オブジェクトに対するポイ
ンタのサイクルが識別され、そのサイクルにおけるポイ
ンタの少なくとも1つが、弱い簡略化したポインタに置
き換えられる。この弱いポインタは、オブジェクトが破
壊されるまでそのオブジェクトを指示する。該ポインタ
は、オブジェクトの破壊を阻止する代わりにそれが指示
しているオブジェクトが破壊されると安全にゼロ・ポイ
ンタになる。
【0016】弱い簡略化したポインタを利用して、サイ
クルを中断すると、サイクルの不在によってセグメント
がプログラムの残りの部分から孤立した時そのセグメン
トが確実に破壊されることになるので、ガーベジ収集プ
ロセスが促進される。弱いポインタによって指示されて
いるオブジェクトは、それに対する強いポインタのカウ
ントがゼロまでデクリメントしている限り安全に破壊す
ることが可能である。破壊してしまうと、そのオブジェ
クトから他のオブジェクトへの全てのポインタがやはり
取り除かれるので、システムから「ガーベジ」が有効に
除去されるまでさらに多くのオブジェクトを破壊するこ
とが可能になる。
クルを中断すると、サイクルの不在によってセグメント
がプログラムの残りの部分から孤立した時そのセグメン
トが確実に破壊されることになるので、ガーベジ収集プ
ロセスが促進される。弱いポインタによって指示されて
いるオブジェクトは、それに対する強いポインタのカウ
ントがゼロまでデクリメントしている限り安全に破壊す
ることが可能である。破壊してしまうと、そのオブジェ
クトから他のオブジェクトへの全てのポインタがやはり
取り除かれるので、システムから「ガーベジ」が有効に
除去されるまでさらに多くのオブジェクトを破壊するこ
とが可能になる。
【0017】図1には、本発明の簡略化した強弱のポイ
ンタの利用によって利点が得られる単純なデータ構造の
概略図が示されている。強い簡略化ポインタ110及び
130と、弱い簡略化ポインタ120は、オブジェクト
に関する別個の参照カウントを保持することによって支
援される。
ンタの利用によって利点が得られる単純なデータ構造の
概略図が示されている。強い簡略化ポインタ110及び
130と、弱い簡略化ポインタ120は、オブジェクト
に関する別個の参照カウントを保持することによって支
援される。
【0018】Aの参照カウント2は、強いカウント1と
弱いカウント1から構成される。ポインタ110を取り
除くと、Aの参照カウントはゼロまでデクリメントし、
その結果、Aはその非ゼロの弱い参照カウントにもかか
わらず破壊される。Aを指示するBの弱いポインタは、
ゼロ・ポインタになる。Aを破壊するとBを指示するそ
の強い簡略化ポインタ130が破壊されて、その結果B
の強い参照カウントがゼロまでデクリメントし、Bも破
壊されることになる。したがって、コンピュータのメモ
リからガーベジが除去される。
弱いカウント1から構成される。ポインタ110を取り
除くと、Aの参照カウントはゼロまでデクリメントし、
その結果、Aはその非ゼロの弱い参照カウントにもかか
わらず破壊される。Aを指示するBの弱いポインタは、
ゼロ・ポインタになる。Aを破壊するとBを指示するそ
の強い簡略化ポインタ130が破壊されて、その結果B
の強い参照カウントがゼロまでデクリメントし、Bも破
壊されることになる。したがって、コンピュータのメモ
リからガーベジが除去される。
【0019】アプリケーションのデータ構造は、発生す
るどの参照サイクルにも少なくとも1つの弱い簡略化ポ
インタが含まれるように設計しなければならない。自動
ガーベジ収集は、データ構造に強い簡略化ポインタのサ
イクルが含まれていないアプリケーションでは行われな
い。この場合やはりアプリケーションが明確にメモリ管
理を実施しなければならないが、それでもアプリケーシ
ョンには安全な簡略化ポインタを利用することによる利
点がある。
るどの参照サイクルにも少なくとも1つの弱い簡略化ポ
インタが含まれるように設計しなければならない。自動
ガーベジ収集は、データ構造に強い簡略化ポインタのサ
イクルが含まれていないアプリケーションでは行われな
い。この場合やはりアプリケーションが明確にメモリ管
理を実施しなければならないが、それでもアプリケーシ
ョンには安全な簡略化ポインタを利用することによる利
点がある。
【0020】本発明を利用するため、プログラマは、ま
ず参照サイクルを識別しなければならない。サイクル内
において、少なくとも1つの弱いポインタを利用しなけ
ればならない。サイクル内のオブジェクトがプログラム
の残りの部分から孤立すると、サイクルは強いポインタ
だけに適用される通常のカウントによるポインタ案によ
って自動的に破壊される。本発明の新規の態様は、上述
のように弱いポインタの利用である。
ず参照サイクルを識別しなければならない。サイクル内
において、少なくとも1つの弱いポインタを利用しなけ
ればならない。サイクル内のオブジェクトがプログラム
の残りの部分から孤立すると、サイクルは強いポインタ
だけに適用される通常のカウントによるポインタ案によ
って自動的に破壊される。本発明の新規の態様は、上述
のように弱いポインタの利用である。
【0021】簡略化した、すなわち「スマートな」ポイ
ンタの概念は、新しいものではない。こうしたポインタ
は、正規のポインタと同様の働きをするが、それを介し
た各アクセス毎に参照カウントを更新するという追加機
能を実施する。簡略化ポインタに特定のオブジェクトを
指示させると、該ポインタはそのオブジェクトであるこ
とを告げる。さらに該オブジェクトは、それを指示した
簡略化ポインタの数を記録しておく。
ンタの概念は、新しいものではない。こうしたポインタ
は、正規のポインタと同様の働きをするが、それを介し
た各アクセス毎に参照カウントを更新するという追加機
能を実施する。簡略化ポインタに特定のオブジェクトを
指示させると、該ポインタはそのオブジェクトであるこ
とを告げる。さらに該オブジェクトは、それを指示した
簡略化ポインタの数を記録しておく。
【0022】オブジェクトに関するポインタのカウント
を調べることによって、ダングリング・ポインタを生成
せずに、いつそのオブジェクトを安全に破壊できるかに
ついて判定することが可能になる。ただし、先行技術に
よる簡略化ポインタでは、従来の技術セクションに記載
の循環参照の問題を扱わない。強弱の簡略化ポインタを
用いることによってこの問題が処理される。
を調べることによって、ダングリング・ポインタを生成
せずに、いつそのオブジェクトを安全に破壊できるかに
ついて判定することが可能になる。ただし、先行技術に
よる簡略化ポインタでは、従来の技術セクションに記載
の循環参照の問題を扱わない。強弱の簡略化ポインタを
用いることによってこの問題が処理される。
【0023】強い簡略化ポインタは、明確に新しい値を
割り当てられるかゼロにセットされるか、あるいは破壊
されない限り、永久にあるオブジェクトを指示してい
る。オブジェクトに対する強い簡略化ポインタの存在に
よってそのオブジェクトが決して破壊されないことが保
証されるので、その強い簡略化ポインタによるオブジェ
クトの参照は常に安全である。弱い簡略化ポインタは、
オブジェクトが破壊されない限りそのオブジェクトを指
示するか、さもなければ安全にゼロになる。弱い簡略化
ポインタは非持久性であり、ゼロ値について明確なチェ
ックが実施されると、弱い簡略化ポインタを通じて安全
にオブジェクトを参照することが可能になる。
割り当てられるかゼロにセットされるか、あるいは破壊
されない限り、永久にあるオブジェクトを指示してい
る。オブジェクトに対する強い簡略化ポインタの存在に
よってそのオブジェクトが決して破壊されないことが保
証されるので、その強い簡略化ポインタによるオブジェ
クトの参照は常に安全である。弱い簡略化ポインタは、
オブジェクトが破壊されない限りそのオブジェクトを指
示するか、さもなければ安全にゼロになる。弱い簡略化
ポインタは非持久性であり、ゼロ値について明確なチェ
ックが実施されると、弱い簡略化ポインタを通じて安全
にオブジェクトを参照することが可能になる。
【0024】なお、上記説明では本発明の特定の実施例
について示し解説してきたが、本発明はこれに限定され
るものではない。
について示し解説してきたが、本発明はこれに限定され
るものではない。
【0025】
【発明の効果】以上説明したように本発明の方法によれ
ば、オブジェクトに対する任意の参照及び全ての参照に
ついて行う、従来のようなデータ空間に対する徹底した
探索を必要とすることなく、ソフトウェア・システムに
おけるダングリング・ポインタ問題とガーベジ・コレク
ション問題の両方を解決することができる。
ば、オブジェクトに対する任意の参照及び全ての参照に
ついて行う、従来のようなデータ空間に対する徹底した
探索を必要とすることなく、ソフトウェア・システムに
おけるダングリング・ポインタ問題とガーベジ・コレク
ション問題の両方を解決することができる。
【図1】本発明の強弱の簡略化ポインタを利用すること
によって利点のある単純なデータ構造の概略図である。
によって利点のある単純なデータ構造の概略図である。
【図2】本発明に係るポインタのサイクルを含む単純な
データ構造の概略図である。
データ構造の概略図である。
110 強い簡略化ポインタ 120 弱い簡略化ポインタ 130 強い簡略化ポインタ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ポール・キャメロン・ブラウン アメリカ合衆国ニューヨーク州スケネクタ ディ コロリン テラス 23
Claims (1)
- 【請求項1】ソフトウェア・システムにおけるガーベジ
の自動収集方法において、 オブジェクトの参照に強いポインタを利用するステップ
と、 前記ソフトウェア・システムにおけるオブジェクトに対
する強いポインタのサイクルを識別するステップと、 前記サイクルにおける前記オブジェクトに対する強いポ
インタのうち少なくとも1つを、前記オブジェクトの破
壊時にゼロになる弱い簡略化したポインタに置き換える
ステップと、 前記オブジェクトに対する強いポインタのカウントがゼ
ロに達するとオブジェクトを破壊するステップから構成
されるた自動ガーベジ・コレクション方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US07/863924 | 1992-04-06 | ||
| US07/863,924 US5398334A (en) | 1992-04-06 | 1992-04-06 | System for automatic garbage collection using strong and weak encapsulated pointers |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0816457A true JPH0816457A (ja) | 1996-01-19 |
Family
ID=25342124
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP5076857A Pending JPH0816457A (ja) | 1992-04-06 | 1993-04-02 | 自動ガーベジ・コレクション方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US5398334A (ja) |
| JP (1) | JPH0816457A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1086306C (zh) * | 1996-05-30 | 2002-06-19 | 三菱重工业株式会社 | 烟气处理的方法和系统 |
Families Citing this family (42)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2269033A (en) * | 1992-07-22 | 1994-01-26 | Ibm | Controlling data storage to enable garbage collection |
| JPH0816669A (ja) * | 1994-06-27 | 1996-01-19 | Fujitsu Ltd | 帳票編集機能を備えた情報処理装置 |
| JP2924705B2 (ja) * | 1995-04-10 | 1999-07-26 | 富士ゼロックス株式会社 | メモリ管理方法およびオブジェクト管理方法 |
| US6101525A (en) * | 1995-05-19 | 2000-08-08 | Emc Corporation | Method and apparatus for shared memory cleanup |
| US5765174A (en) * | 1995-10-06 | 1998-06-09 | Sun Microsystems, Inc. | System amd method for distributed object resource management |
| US5689707A (en) * | 1995-12-04 | 1997-11-18 | Ncr Corporation | Method and apparatus for detecting memory leaks using expiration events and dependent pointers to indicate when a memory allocation should be de-allocated |
| US5923877A (en) * | 1996-05-01 | 1999-07-13 | Electronic Data Systems Corporation | Object-oriented programming memory management framework and method |
| US5819299A (en) * | 1996-06-06 | 1998-10-06 | Electric Communities | Process for distributed garbage collection |
| US5794256A (en) * | 1996-12-12 | 1998-08-11 | Microsoft Corporation | Pointer swizzling facility using three-state references to manage access to referenced objects |
| US6015071A (en) | 1997-03-11 | 2000-01-18 | Prince Corporation | Vehicle storage divider |
| US6081812A (en) * | 1998-02-06 | 2000-06-27 | Ncr Corporation | Identifying at-risk components in systems with redundant components |
| US6247077B1 (en) | 1998-02-06 | 2001-06-12 | Ncr Corporation | Highly-scalable parallel processing computer system architecture |
| US6421690B1 (en) * | 1998-04-30 | 2002-07-16 | Honeywell International Inc. | Computer memory management system |
| US6098080A (en) * | 1998-05-05 | 2000-08-01 | International Business Machines Corporation | Computer system, program product and method of collecting interned data with a mark sweep collector |
| GB9813828D0 (en) * | 1998-06-27 | 1998-08-26 | Philips Electronics Nv | Reference counting mechanism for garbage collectors |
| US6345276B1 (en) * | 1998-09-18 | 2002-02-05 | Microsoft Corporation | Representing base pointers in a shared memory heap |
| US6366932B1 (en) * | 1999-06-24 | 2002-04-02 | International Business Machines Corporation | Apparatus and method for accessing an object oriented object using a smart passive reference |
| US6363403B1 (en) * | 1999-06-30 | 2002-03-26 | Lucent Technologies Inc. | Garbage collection in object oriented databases using transactional cyclic reference counting |
| US6324550B1 (en) * | 1999-08-25 | 2001-11-27 | Bullant Technology Pty Ltd | Data object identification and removal system |
| US6799191B2 (en) * | 2000-05-16 | 2004-09-28 | Sun Microsystems, Inc. | Object sampling technique for runtime observations of representative instances thereof |
| US8032886B2 (en) * | 2000-11-22 | 2011-10-04 | Microsoft Corporation | Tracking asynchronous execution of program using hierarchical structure of objects |
| US6654773B2 (en) | 2001-02-27 | 2003-11-25 | Tajea Corporation | Method of deterministic garbage collection |
| US7203756B2 (en) * | 2001-04-27 | 2007-04-10 | International Business Machines Corporation | Mechanism to cache references to Java RMI remote objects implementing the unreferenced interface |
| US6785698B2 (en) * | 2001-05-02 | 2004-08-31 | Alcatel | Instance-reduction algorithm for garbage-collected language |
| US7328438B2 (en) * | 2003-03-27 | 2008-02-05 | International Business Machines Corporation | Deallocation of computer data in a multithreaded computer |
| US20040268367A1 (en) * | 2003-06-30 | 2004-12-30 | Roe Bryan Y. | Method for managing a callback object in an event-based environment using weak references |
| JP4144609B2 (ja) * | 2004-09-29 | 2008-09-03 | ソニー株式会社 | 情報処理装置、メモリ領域管理方法、並びにコンピュータ・プログラム |
| US8055689B1 (en) * | 2005-03-14 | 2011-11-08 | Oracle America, Inc. | Methods and systems for distributing information model nodes in memory |
| US20070143792A1 (en) * | 2005-12-16 | 2007-06-21 | Microsoft Corporation | Extensible Mechanism For Storage And Interchange Of Objects |
| US10324735B2 (en) | 2006-05-15 | 2019-06-18 | Avaya Inc. | Method invocation for persistent objects with dynamic multikeys |
| US10185579B2 (en) | 2006-05-15 | 2019-01-22 | Avaya Inc. | Dynamic multikeys for persistent objects |
| US10289728B2 (en) * | 2006-05-15 | 2019-05-14 | Avaya Inc. | Garbage collection of persistent objects with dynamic multikeys |
| US9785549B2 (en) * | 2007-04-27 | 2017-10-10 | Microsoft Technology Licensing, Llc | Managing object lifetime for native/managed peers |
| US20100241675A1 (en) * | 2009-03-19 | 2010-09-23 | Microsoft Corporation | Breaking a circular reference between parent and child objects |
| US8838656B1 (en) | 2009-07-31 | 2014-09-16 | Hiscamp Systems, Inc. | Hardware-protected reference count-based memory management using weak references |
| US8566368B2 (en) | 2010-09-29 | 2013-10-22 | Microsoft Corporation | Garbage collection extensibility via managed code |
| US20140040326A1 (en) * | 2012-07-31 | 2014-02-06 | International Business Machines Corporation | Garbage collection of an object |
| US9747088B2 (en) * | 2013-04-22 | 2017-08-29 | Embarcadero Technologies, Inc. | Automatic reference counting |
| US10437720B2 (en) | 2014-03-12 | 2019-10-08 | Optumsoft, Inc. | Deferred destruction for efficient resource reclamation |
| US9032410B1 (en) * | 2014-08-19 | 2015-05-12 | Xamarin Inc. | Non-precise garbage collection in non-cooperative systems |
| CN106020822B (zh) * | 2016-05-18 | 2019-03-26 | 腾讯科技(成都)有限公司 | 面向Pool对象的弱引用实现方法和装置 |
| US10223163B2 (en) * | 2016-07-14 | 2019-03-05 | Microsoft Technology Licensing, Llc | Workflow-based object destruction |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4695949A (en) * | 1984-07-19 | 1987-09-22 | Texas Instruments Incorporated | Method for efficient support for reference counting |
| US4775932A (en) * | 1984-07-31 | 1988-10-04 | Texas Instruments Incorporated | Computer memory system with parallel garbage collection independent from an associated user processor |
| GB8529890D0 (en) * | 1985-12-04 | 1986-01-15 | Watson P | Garbage collection in computer system |
| US4775934A (en) * | 1986-06-17 | 1988-10-04 | Yeda Research And Development Co. | Method for concurrent logic program |
| US4912629A (en) * | 1986-06-26 | 1990-03-27 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Real-time garbage collection for list processing using restructured cells for increased reference counter size |
| US4807120A (en) * | 1987-04-30 | 1989-02-21 | Texas Instruments Incorporated | Temporal garbage collector with indirection cells |
| NL9001262A (nl) * | 1990-06-05 | 1992-01-02 | Oce Nederland Bv | Werkwijze voor het in een logisch georganiseerd systeem, van door digrafen te representeren groepen van met elkaar in relatie staande entiteiten, distribueren van status-informatie betreffende een digraaf en een inrichting voor het toepassen van een dergelijke werkwijze. |
| US5274804A (en) * | 1991-11-20 | 1993-12-28 | Parcplace Systems | Automatic storage-reclamation postmortem finalization process |
-
1992
- 1992-04-06 US US07/863,924 patent/US5398334A/en not_active Expired - Fee Related
-
1993
- 1993-04-02 JP JP5076857A patent/JPH0816457A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1086306C (zh) * | 1996-05-30 | 2002-06-19 | 三菱重工业株式会社 | 烟气处理的方法和系统 |
Also Published As
| Publication number | Publication date |
|---|---|
| US5398334A (en) | 1995-03-14 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0816457A (ja) | 自動ガーベジ・コレクション方法 | |
| US6144965A (en) | Performing memory management in an object-oriented programming environment | |
| US6529982B2 (en) | Locking of computer resources | |
| US5794256A (en) | Pointer swizzling facility using three-state references to manage access to referenced objects | |
| US6542167B1 (en) | System and method for flexible software linking | |
| US8024505B2 (en) | System and method for optimistic creation of thread local objects in a virtual machine environment | |
| US6295640B1 (en) | Method and apparatus for distinguishing reference values from non-reference values in a runtime environment | |
| US5293614A (en) | System and method for hard real-time garbage collection requiring a write barrier but no read barrier | |
| US6493730B1 (en) | Efficient object faulting with generational garbage collection | |
| US5226176A (en) | System for selectively aborting operation or waiting to load required data based upon user response to non-availability of network load device | |
| US11347698B2 (en) | Garbage collection for hash-based data structures | |
| EP2176764B1 (en) | Using type stability to facilitate contention management | |
| US5485573A (en) | Method and apparatus for assisting in the determination of the source of errors in a multi-host data base management system | |
| US7660961B2 (en) | Concurrent evacuation of the young generation | |
| AU2021339989B2 (en) | Tri-color bitmap array for garbage collection | |
| US6842893B1 (en) | Method for global breakout identification | |
| EP0954780B1 (en) | Locking of computer resources | |
| US7313566B1 (en) | Method and apparatus for isolating selected heap objects using a faulting address trap | |
| US20080040407A1 (en) | Identification of a cause of an allocation failure in a java virtual machine | |
| US20240168851A1 (en) | System and method for scanning file systems | |
| KR0139724B1 (ko) | 유닉스 환경의 dbms에서 좀비 트랜잭션의 발견 및 처리 방법 | |
| JPH0667942A (ja) | ログ採取方式 | |
| GB2300496A (en) | Data processing system | |
| Baker | Modifications to the VAX/VMS DR11-W/DRV11-WA interface driver for high speed, real-time data acquisition | |
| JPS61272834A (ja) | バツクアツププログラムの探索実行方式 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20030422 |