JP2005529384A - 異なるクラスのインスタンスであるオブジェクトへの共通のメモリ管理コードの提供 - Google Patents
異なるクラスのインスタンスであるオブジェクトへの共通のメモリ管理コードの提供 Download PDFInfo
- Publication number
- JP2005529384A JP2005529384A JP2004504112A JP2004504112A JP2005529384A JP 2005529384 A JP2005529384 A JP 2005529384A JP 2004504112 A JP2004504112 A JP 2004504112A JP 2004504112 A JP2004504112 A JP 2004504112A JP 2005529384 A JP2005529384 A JP 2005529384A
- Authority
- JP
- Japan
- Prior art keywords
- class
- code
- providing
- grandparent
- hierarchy
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 212
- 238000000034 method Methods 0.000 claims abstract description 79
- 238000010586 diagram Methods 0.000 description 27
- 238000004891 communication Methods 0.000 description 15
- 239000012634 fragment Substances 0.000 description 12
- 238000012545 processing Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 210000001072 colon Anatomy 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Description
この出願は、Shoaib Lari、Ravikanth Kasamsetty、およびSrinath Krishnaswamyによる「異なるクラスのインスタンスであるオブジェクトへの共通のメモリ管理コードの提供("Providing Common Memory Management Code to Objects that are Instances of Different Classes")」と題される、2002年5月7日に出願された米国仮特許出願連続番号第60/378,872号(代理人事務処理番号50277−1989)に関連し、それからの優先権を主張し、ここに十分に説明されるかの如くその開示全体をここに引用により援用する。この出願は、Shoaib Lari、Ravikanth Kasamsetty、およびSrinath Krishnaswamyによる「異なるクラスのインスタンスであるオブジェクトへの共通のメモリ管理コードの提供("Providing Common Memory Management Code to Objects that are Instances of Different Classes")」と題される、2002年5月31日に出願された米国仮特許出願連続番号第60/384,647号(代理人事務処理番号50277−2031)に関連し、それからの優先権を主張し、ここに十分に説明されるかの如くその開示全体をここに引用により援用する。
この発明はオブジェクトのためのメモリ管理に関し、特に、異なるクラスであるインスタンスであるオブジェクトへの共通のメモリ管理コードの提供、およびオブジェクトの階層で特定のオブジェクトと関連付けられるメモリおよび階層でその特定のオブジェクトの下にあるオブジェクトを解放することに関する。
メモリの管理は、メモリの割当および割当の取消を管理してオブジェクトまたは他のデータ構造を記憶するために行なわれる動作およびプロセスを指す。典型的には、大抵のアプリケーションは、そのアプリケーションが書かれるコンピュータ言語によって供給されるメモリ管理コードを使用する。しかしながら、コンピュータ言語によって供給されるメモリ管理コードは、性能のための最適化、メモリの割当のための最適化または互いに関係を有するオブジェクトのセットに対するメモリを解放することなどの或る望ましい特徴を有さないことがある。したがって、オブジェクトが自分自身のメモリ管理コードを有すると有利である。
複数の照会がステートメントを伴って実行され、照会に応答して結果セットが戻される。したがって、データベース接続、関連するステートメント、結果セットおよびストリームの間に階層的な関係が存在する。接続および関連するステートメント、結果セットおよびストリームは、各々それら自身のオブジェクトによって表現することができ、これらオブジェクトは、これらオブジェクト間の関係を反映する階層的なツリーに組織化することができる。たとえば、接続オブジェクトは階層的なツリーの頂点のオブジェクトであり、ステートメントオブジェクトは接続オブジェクトのすぐ下のオブジェクトであり、結果セットオブジェクトはステートメントオブジェクトのすぐ下にある、等である。とりわけ、オブジェクトと関連付けられるメソッドを実行するため、またはオブジェクトのために計算を行なうためにメモリが必要とされる。したがって、メモリは階層的なツリー(以降は、「メモリ管理ツリー」と称される)で各オブジェクトと関連付けられる。
オブジェクトのためのメモリ管理を提供するための技術が説明される。特に、異なるクラスのインスタンスであるオブジェクトに共通のメモリ管理コードを提供するための技術、およびメモリ管理のツリー内で特定のオブジェクトで開始するメモリ管理の下位ツリーを解放するための技術が説明される。
オブジェクトに共通のメモリ管理コードを提供するための方法である。以下の説明では、説明のため、多くの具体的な詳細を説明してこの発明を完全に理解できるようにしている。しかしながら、この発明は、これらの具体的な詳細な詳細なしに実現可能であることは明らかである。場合によっては、この発明を不必要にわかりにくくするのを避けるために、ブロック図の形で周知の構造および装置を示す。
図1は、この発明の実施例による異なるクラスのインスタンスであるオブジェクトに共通のメモリ管理コードを提供するためにメモリ管理テンプレートを使用する3つのクラスの階層(class hierarchy)を示すブロック図である。3つのクラスの階層、クラスの階層1、クラスの階層2およびクラスの階層3内のクラスはすべて1つの形または別の形でコードを提供する。コードを提供することは、後続のコンパイルおよび実行のためにコー
ドを作成するプロセスまたは動作を指す。たとえば、プログラマは、クラスの形でファイルにソースを入力することによってコードを提供し、それはコンパイルのためにコンパイラによってアクセス可能である。コードを提供することは、ライブラリを参照する他のアプリケーションの後のコンパイルのためにコードをライブラリに記憶することも指す。
る。たとえば、一般的なメモリ管理の抽象クラス、MM_Absは、任意の種類のオブジェクトを作成するためのインターフェイスなどの一般的なインターフェイスを提供するためにのみ使用され、クラスの階層1、2および3で抽象クラスとして使用される。次に、特別なテンプレート120、150、180は、すべて、MM<MM_Abs>であり、特別化なテンプレートのサブクラスは、A_STS:MM<MM_Abs>130、B_STS:MM<MM_Abs>160、およびC_STS:MM<MM_Abs>190である。
図2は、この発明の実施例による共通のプリプロセッサメモリ管理コードを提供するメモリ管理テンプレートのブロック図である。メモリ管理テンプレートは、図2に示されるように、共通のプリプロセッサメモリ管理コードを提供し、これは、新規および削除のオペレータを過負荷にすることによって、共通のメモリマネージャに対するインターフェイス(204、205)およびインプリメンテーション(230、240)を提供する。クラスおよびテンプレートは、典型的には、(1)メソッドおよび/またはオペレータに対するインターフェイスを規定する規定の部分、および(2)メソッドおよび/またはオペレータに対するコードを規定するインプリメンテーション部分の2つの部分を有する。MMテンプレート(MM Template)200はメモリ管理テンプレートの規定を示す。MMテンプレート200の公開のセクションでは、3つのインターフェイス(202、204、205)が提供される。1つのインターフェイス202はMMテンプレートのコンストラクタ(MM Template's Constructor)210に対応する。他の2つのインターフェイス(新規(new)204および削除(delete)205)は、共通のメモリ管理のインプリメンテーション(230および240)に対応する。保護されたセクションでは、データメンバ、hndlp_206が提供される。データメンバhndlp_206は、共通のプリプロセッサメモリ管理コード(230、240)によって使用されるヒープまたはサブヒープへのポインタを記憶するために使用される。「T」(201、211、231、241)は、メモリ管理テンプレートの一般的な種類のパラメータであり、後に詳細に説明するように、特別なテンプレートMM<接続Abs>(MM<ConnectionAbs>)、MM<ステートメントAbs>(MM<StatementAbs>)およびMM<結果セットAbs>(M
M<ResultsetAbs>)を作成するために使用される。
図3は、この発明の実施例による特別なテンプレートを提供するために特定の種類としてメモリ管理テンプレートに渡される抽象クラスのブロック図である。接続Absクラス(ConnectionAbs Class)300、ステートメントAbsクラス(StatementAbs Class)310、および結果セットAbsクラス(ResultsetAbs Class)320は、抽象クラスの例であり、(1)特別なテンプレートのサブクラスで実現されるインターフェイスを提供し、(2)特定の種類としてMMテンプレート200に渡される。一実施例によると、インターフェイス(301、311)は抽象クラス(300、310、320)で提供される。たとえば、これらインターフェイス(301、311)に対するインプリメンテーションは、特別なテンプレートのサブクラスのメソッド(510、530)で提供される。一実施例によると、抽象クラス内のインターフェイス(301、311)および特別なテンプレートのサブクラス内の対応するインプリメンテーション(510、530)はファクトリメソッドに対するものである。
図4は、この発明の実施例による特別なテンプレートのサブクラスの規定のブロック図である。図5Aおよび図5Bは、この発明の実施例によるこれら特別なテンプレートのサブクラスに対する規定を実現するメソッドのブロック図である。これらの例では、3つの特別なテンプレートのサブクラスの規定(400、410、420)が示される。特別なテンプレートのサブクラスは、共通のメモリ管理コードにアクセスするオブジェクトのインスタンスを作成するために使用される(コードの断片401、411および421では、クラス400、410および420は特別なテンプレートのサブクラスであることに注意されたい)。たとえば、オブジェクトAが接続STSクラス(ConnectionSTS Class)400のインスタンスである場合、オブジェクトBはステートメントSTSクラス(StatementSTS Class)410のインスタンスであり、オブジェクトCは結果セットSTSクラス(ResultsetSTS Class)420のインスタンスであり、オブジェクトA、BおよびCは、コンパイル時間中にメモリ管理テンプレート(200、210、230、240)内の同じ共通のプリプロセッサメモリ管理コードからすべて生成されたメモリ管理実行ファイルを有する。
520、および結果セットSTSのコンストラクタ(ResultsetSTS's Constructor)540である。コンストラクタは、そのコンストラクタが属するクラスのインスタンスであるオブジェクトを作成するために使用される。コンストラクタが提供することができる機能の1つは、オブジェクトのデータメンバの初期化である。たとえば、コンストラクタ500、520および540は、以下に詳しく説明するように、命令501、521および541でデータメンバhndlp_206を初期化する。別の実施例では、データメンバhndlp_206は、以下に詳しく説明するように、オブジェクトに対するインスタンスを作成するプロセス中にMMテンプレートのコンストラクタ(MM Template's Constructor)210が起動されるときにコードの断片212で初期化される。コンストラクタ500および520は、命令502および522でそれぞれデータメンバ405および415を初期化する。
MM<ステートメントAbs>のサブクラスであるため、MMテンプレートのコンストラクタ210の特別な形、MM<ステートメントAbs>::Mが起動される。一実施例によると、MM<ステートメントAbs>::Mが起動されると、hndlp_206はコードの断片212で初期化される。
図6は、この発明の実施例による共通のメモリ管理を使用するオブジェクトを作成するアプリケーションプログラム(application program)のブロック図である。アプリケーションプログラム600は、接続STSオブジェクト、ステートメントSTSオブジェクト、および結果セットSTSオブジェクトの3つのそのようなオブジェクトを一連の命令(602、603および604)で作成する。つまり、接続STSオブジェクト、connは命令602で作成される。conn内のファクトリメソッドは、命令603で起動され、ステートメントSTSオブジェクト、stmtを作成する。stmt内の別のファクトリメソッドが命令604で起動され、結果セットSTSオブジェクト、rsを作成する。すべての3つのオブジェクトは、後に詳細に説明するように、共通のプリプロセッサメモリ管理コードから生成されたメモリ管理実行ファイルおよび共通のヒープへのポインタを含む。
図7は、この発明の実施例による互いに階層的なツリー関係(以降は「階層的なツリー」と称される)を有するオブジェクトのセットのブロック図である。たとえば、所与のデータベース接続では、1つまたは複数の照会はステートメントを伴って実行される。結果セットが照会に応答して戻される。ストリームは、1つのファンクションコールで読出すことができないバイナリラージオブジェクト(Binary Large Objects)などの大きなデータオブジェクトの読出を調整するために結果セットから獲得される。したがって、階層的な関係は、データベース接続、および関連するステートメント、結果セットおよびストリームの間に存在する。接続および関連するステートメント、結果セットおよびストリームは各々オブジェクトによって表現することができ、オブジェクトはオブジェクト間の関係を反映した階層的なツリーに組織化することができる。
図8は、この発明の実施例によるオブジェクトのセットの各オブジェクトと関連付けられるいくつかのメモリのブロック図である。いくつかのメモリ(以降は、階層的なメモリのツリーと称される)は、オブジェクトのセットの階層的なツリーの関係を反映するよう
に組織化される。一実施例によると、図8は、図7に示されるオブジェクトのセットと関連付けられる階層的なメモリのツリーを示す。たとえば、H0は、オブジェクトConn_1と関連付けられる1つのメモリであり、H1、H2およびH3は、ステートメントオブジェクトStmt_1、Stmt_2およびStmt_3とそれぞれ関連付けられるメモリであり、H11、H12、H31およびH32は、オブジェクト結果セットオブジェクトRS_1、RS_2、RS_3およびRS_4とそれぞれ関連付けられるメモリであり、H111およびH321は、ストリームオブジェクトStream_1およびStream_2と関連付けられるメモリである。
図9、図10Aおよび図10Bは、この発明の実施例による階層的な関係を有するオブジェクトを作成するためのクラス、およびこれらオブジェクトと関連付けられるメモリをのブロック図である。図9は、接続、ステートメントおよび結果セットのクラスに対してクラスの規定を示すブロック図である。図10Aおよび図10Bは、これらクラスと関連付けられるメソッドのブロック図である。この例では、クラスは接続、ステートメントおよび結果セットのオブジェクトを作成するために使用される。図11は、この発明の実施例による、図9、図10Aおよび図10Bに示されるクラスとともにオブジェクトを作成するプログラムを示すブロック図である。
、オブジェクトAと関連付けられるメモリ、およびオブジェクトAと関連付けられる下位ツリーを解放する。たとえば、図7に示されるように、Stmt_1に対するデストラクタがアプリケーションプログラムから起動される場合、図8に示されるように、デストラクタは子および兄弟のポインタを使用して、サブヒープH1、H11、H12、H111が解放されるべきであると決定することができる。
別の実施例によると、階層的なメモリのツリーのためのすべてのメモリは連続した1つのメモリにあり、これは階層的なツリー内で各オブジェクトと関連付けられるメモリの別々の部分にさらに分けられる。ポインタは、個々のオブジェクトと関連付けられるメモリの部分の間の関係を維持するために使用される。これらポインタを維持するための方法であればどのような方法でも使用可能であり、たとえば、単一のメモリ自身にポインタを維持すること、またはテーブルにポインタを維持することが可能である。
図12は、この発明の実施例を実現可能なコンピュータシステム1200を示すブロック図である。コンピュータシステム1200は、情報を通信するためのバス1202または他の通信機構、および情報を処理するためのバス1202に結合されたプロセッサ1204を含む。コンピュータシステム1200は、プロセッサ1204によって実行されるべき情報および命令を記憶するために、バス1202に結合されるランダムアクセスメモリ(RAM)または他の動的記憶装置などのメインメモリ1206も含む。メインメモリ1206は、プロセッサ1204によって実行されるべき命令の実行中に一時的な変数または他の中間情報を記憶するために使用してもよい。コンピュータシステム1200は、プロセッサ1204のための静的な情報および命令を記憶するために、バス1202に結合されるリードオンリメモリ(ROM)1208または他の静的記憶装置をさらに含む。磁気ディスクまたは光ディスクなどの記憶装置1210が、情報および命令を記憶するために設けられ、バス1202に結合される。
Claims (30)
- オブジェクトのセットに共通のメモリマネージャを提供する方法であって、前記方法はコンピュータで実現されるステップを含み、前記コンピュータで実現されるステップは、
クラスの階層で祖父母である祖父母クラスを規定する第1のコードを提供するステップを含み、前記祖父母クラスは第1のインターフェイスを特定し、前記コンピュータで実現されるステップはさらに、
第2のインターフェイス、前記共通のメモリマネージャおよび前記共通のメモリマネージャの第2のインプリメンテーションを特定するテンプレートを規定する第2のコードを提供するステップと、
前記祖父母のクラスを前記テンプレートに対するパラメータとして特定することによって、前記クラスの階層で子クラスを親クラスのサブクラスとして規定する第3のコードを提供するステップとを含み、前記子クラスは前記第1のインターフェイスの第1のインプリメンテーションを特定し、前記コンピュータで実現されるステップはさらに、
前記祖父母のクラスをパラメータとして前記テンプレートに渡すことによって、前記クラスの階層で前記親クラスを規定する第4のコードを生成するステップとを含む、方法。 - 前記子クラスは第1の子クラスであり、第1のデータメンバはメモリ管理で使用されるヒープへのポインタであり、前記第1の子クラスおよび第2のデータメンバと関連付けられ、これはメモリ管理で使用されるヒープへのポインタであり、第2の子クラスと関連付けられ、前記方法はさらに、
前記第2の子クラスと関連付けられるコンストラクタで第5のコードを提供するステップを含み、
前記コンストラクタは、前記第1のデータメンバと関連付けられる値に基づいて前記第2のデータメンバの初期化を行なわせる、請求項1に記載の方法。 - 前記コンストラクタは、前記ヒープのサブヒープへのポインタで前記第2のデータメンバの初期化を行なわせる、請求項2に記載の方法。
- 前記子クラスは第1の子クラスであり、前記方法は、第2の子クラスのオブジェクトを作成するために前記第1の子クラスでファクトリメソッドを規定する第5のコードを提供するステップをさらに含む、請求項1に記載の方法。
- 前記クラスの階層は第1のクラスの階層であり、前記第1の子クラスは前記第1のクラスの階層での子クラスであり、前記第2の子クラスは第2のクラスの階層での子クラスであり、前記第5のコードを提供するステップは、前記第2の子クラスのオブジェクトを作成するために前記第1の子クラスで前記ファクトリメソッドを規定する第5のコードを提供するステップをさらに含む、請求項4に記載の方法。
- 前記祖父母クラスは抽象クラスであり、前記第1のコードを提供するステップは、前記第1のインターフェイスを特定するために前記抽象クラスを規定する第1のコードを提供するステップをさらに含む、請求項1に記載の方法。
- 前記第1のインターフェイスはファクトリメソッドのためのインターフェイスである、請求項6に記載の方法。
- 前記クラスの階層は第1のクラスの階層であり、前記祖父母クラスは前記第1のクラスの階層および第2のクラスの階層での祖父母クラスであり、前記第1のコードを提供するステップは、前記第1のインターフェイスを特定する前記祖父母クラスを規定する第1のコードを提供するステップをさらに含み、前記祖父母クラスは前記第1のクラスの階層お
よび前記第2のクラスの階層での前記祖父母である、請求項1に記載の方法。 - 前記クラスの階層は第1のクラスの階層であり、前記祖父母クラスは第1の祖父母クラスであり、前記親クラスは第1の親クラスであり、前記子クラスは第1の子クラスであり、前記方法は、
第2の階層で祖父母である第2の祖父母クラスを規定する第5のコードを提供するステップと、
前記第2のクラスの階層に前記第2のコードを提供するステップと、
前記第2の祖父母クラスを前記テンプレートに対するパラメータとして特定することによって、前記第2のクラスの階層で第2の子クラスを第2の親クラスのサブクラスとして規定する第6のコードを提供するステップと、
前記第2の祖父母クラスをパラメータとして前記テンプレートに渡すことによって、前記第2のクラスの階層で前記第2の親クラスを規定する第7のコードを生成するステップとをさらに含む、請求項1に記載の方法。 - 前記共通のメモリマネージャは新規のオペレータであり、前記第1のコードを提供するステップは、前記新規のオペレータに対する前記第2のインターフェイスおよび前記新規のオペレータに対する前記第2のインプリメンテーションを特定する前記祖父母クラスを規定する第1のコードを提供するステップをさらに含む、請求項1に記載の方法。
- 前記共通のメモリマネージャは削除のオペレータであり、前記第1のコードを提供するステップは、前記削除のオペレータに対する前記第2のインターフェイスおよび前記削除のオペレータに対する前記第2のインプリメンテーションを特定する前記祖父母クラスを規定する第1のコードを提供するステップをさらに含む、請求項1に記載の方法。
- 前記第2のインプリメンテーションはプリプロセッサコードであり、前記第2のコードを提供するステップは、前記プリプロセッサコードを特定する前記テンプレートを規定する第2のコードを提供するステップをさらに含む、請求項1に記載の方法。
- 前記親クラスは特別なテンプレートであり、前記第3のコードを提供するステップは、前記祖父母クラスを前記テンプレートに対する前記パラメータとして特定することによって、前記クラスの階層で前記子クラスを前記特別なテンプレートの前記サブクラスとして規定する第3のコードを提供するステップをさらに含む、請求項1に記載の方法。
- 前記子クラスは特別なテンプレートのサブクラスであり、前記第3のコードを提供するステップは、前記祖父母クラスを前記テンプレートに対する前記パラメータとして特定することによって、前記クラスの階層で前記特別なテンプレートのサブクラスを前記親クラスの前記サブクラスとして規定する第3のコードを提供するステップをさらに含む、請求項1に記載の方法。
- メモリ管理実行ファイルは前記親クラスと関連付けられ、前記第4のコードを生成するステップは、
前記祖父母クラスを前記パラメータとして前記テンプレートに渡すことによって、前記クラスの階層で前記親クラスを規定する第4のコードを生成するステップをさらに含み、
前記メモリ管理実行ファイルは前記親クラスと関連付けられる、請求項1に記載の方法。 - 共通のメモリマネージャをオブジェクトのセットに提供するために命令の1つまたは複数のシーケンスを運ぶコンピュータ読取可能な媒体であって、1つまたは複数のプロセッサによる前記命令の1つまたは複数のシーケンスの実行は、前記1つまたは複数のプロセ
ッサに以下のステップを行なわせ、前記以下のステップは、
クラスの階層で祖父母である祖父母クラスを規定する第1のコードを提供するステップを含み、前記祖父母クラスは第1のインターフェイスを規定し、前記以下のステップはさらに、
第2のインターフェイス、前記共通のメモリマネージャおよび前記共通のメモリマネージャの第2のインプリメンテーションを特定するテンプレートを規定する第2のコードを提供するステップと、
前記祖父母クラスを前記テンプレートに対するパラメータとして特定することによって、前記クラスの階層で子クラスを親クラスのサブクラスとして規定する第3のコードを提供するステップとを含み、前記子クラスは前記第1のインターフェイスの第1のインプリメンテーションを特定し、前記以下のステップはさらに、
前記祖父母クラスをパラメータとして前記テンプレートに渡すことによって、前記クラスの階層で前記子クラスを規定する第4のコードを生成するステップを含む、コンピュータ読取可能な媒体。 - 前記子クラスは第1の子クラスであり、第1のデータメンバはメモリ管理で使用されるヒープへのポインタであり、前記第1の子クラスおよび第2のデータメンバと関連付けられ、これはメモリ管理で使用されるヒープへのポインタであり、第2の子クラスと関連付けられ、前記コンピュータ読取可能な媒体は、
前記第2の子クラスと関連付けられるコンストラクタで第5のコードを提供するステップをさらに含み、
前記コンストラクタは、前記第1のデータメンバと関連付けられる値に基づいて前記第2のデータメンバの初期化を行なわせる、請求項16に記載のコンピュータ読取可能な媒体。 - 前記コンストラクタは、前記ヒープのサブヒープへのポインタで前記第2のデータメンバの初期化を行なわせる、請求項17に記載のコンピュータ読取可能な媒体。
- 前記子クラスは第1の子クラスであり、前記コンピュータ読取可能な媒体は、第2の子クラスのオブジェクトを作成するために前記第1の子クラスでファクトリメソッドを規定する第5のコードを提供するステップをさらに含む、請求項16に記載のコンピュータ読取可能な媒体。
- 前記クラスの階層は第1のクラスの階層であり、前記第1の子クラスは前記第1のクラスの階層での子クラスであり、前記第2の子クラスは第2のクラスの階層での子クラスであり、前記第5のコードを提供するステップは、前記第2の子クラスのオブジェクトを作成するために前記第1の子クラスで前記ファクトリメソッドを規定する第5のコードを提供するステップをさらに含む、請求項19に記載のコンピュータ読取可能な媒体。
- 前記祖父母クラスは抽象クラスであり、前記第1のコードを提供するステップは、前記第1のインターフェイスを特定するために前記抽象クラスを規定する第1のコードを提供するステップをさらに含む、請求項16に記載のコンピュータ読取可能な媒体。
- 前記第1のインターフェイスはファクトリメソッドのためのインターフェイスである、請求項21にコンピュータ読取可能な媒体。
- 前記クラスの階層は第1のクラスの階層であり、前記祖父母クラスは前記第1のクラスの階層および第2のクラスの階層での祖父母クラスであり、前記第1のコードを提供するステップは、前記第1のインターフェイスを特定する前記祖父母クラスを規定する第1のコードを提供するステップをさらに含み、前記祖父母クラスは前記第1のクラスの階層お
よび前記第2のクラスの階層での前記祖父母である、請求項16に記載のコンピュータ読取可能な媒体。 - 前記クラスの階層は第1のクラスの階層であり、前記祖父母クラスは第1の祖父母クラスであり、前記親クラスは第1の親クラスであり、前記子クラスは第1の子クラスであり、前記コンピュータ読取可能な媒体は、
第2のクラスの階層で祖父母である第2の祖父母クラスを規定する第5のコードを提供するステップと、
前記第2のクラスの階層に前記第2のコードを提供するステップと、
前記第2の祖父母クラスを前記テンプレートに対するパラメータとして特定することによって、前記第2のクラスの階層で第2の子クラスを第2の親クラスのサブクラスとして規定する第6のコードを提供するステップと、
前記第2の祖父母クラスをパラメータとして前記テンプレートに渡すことによって、前記第2のクラスの階層で前記第2の親クラスを規定する第7のコードを生成するステップとをさらに含む、請求項16に記載のコンピュータ読取可能な媒体。 - 前記共通のメモリマネージャは新規のオペレータであり、前記第1のコードを提供するステップは、前記新規のオペレータに対する前記第2のインターフェイスおよび前記新規のオペレータに対する前記第2のインプリメンテーションを特定する前記祖父母クラスを規定する第1のコードを提供するステップをさらに含む、請求項16に記載のコンピュータ読取可能な媒体。
- 前記共通のメモリマネージャは削除のオペレータであり、前記第1のコードを提供するステップは、前記削除のオペレータに対する前記第2のインターフェイスおよび前記削除のオペレータに対する前記第2のインプリメンテーションを特定する前記祖父母クラスを規定する第1のコードを提供するステップをさらに含む、請求項16に記載のコンピュータ読取可能な媒体。
- 前記第2のインプリメンテーションはプリプロセッサコードであり、前記第2のコードを提供するステップは、前記プリプロセッサコードを特定する前記テンプレートを規定する第2のコードを提供するステップをさらに含む、請求項16に記載のコンピュータ読取可能な媒体。
- 前記親クラスは特別なテンプレートであり、前記第3のコードを提供するステップは、前記祖父母クラスを前記テンプレートに対する前記パラメータとして特定することによって、前記クラスの階層で前記子クラスを前記特別なテンプレートの前記サブクラスとして規定する第3のコードを提供するステップをさらに含む、請求項16に記載のコンピュータ読取可能な媒体。
- 前記子クラスは特別なテンプレートのサブクラスであり、前記第3のコードを提供するステップは、前記祖父母クラスを前記テンプレートに対する前記パラメータとして特定することによって、前記クラスの階層で前記特別なテンプレートのサブクラスを前記親クラスの前記サブクラスとして規定する第3のコードを提供するステップをさらに含む、請求項16に記載のコンピュータ読取可能な媒体。
- メモリ管理実行ファイルは前記親クラスと関連付けられ、前記第4のコードを提供するステップは、
前記祖父母クラスを前記パラメータとして前記テンプレートに渡すことによって、前記クラスの階層で前記親クラスを規定する第4のコードを生成するステップをさらに含み、
前記メモリ管理実行ファイルは前記親クラスと関連付けられる、請求項16に記載のコ
ンピュータ読取可能な媒体。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US37887202P | 2002-05-07 | 2002-05-07 | |
US38464702P | 2002-05-31 | 2002-05-31 | |
US10/209,469 US7398531B2 (en) | 2002-05-07 | 2002-07-30 | Providing common memory management code to objects that are instances of different classes |
PCT/US2003/013310 WO2003096186A2 (en) | 2002-05-07 | 2003-04-28 | Providing common memory management code to objects that are instances of different classes |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005529384A true JP2005529384A (ja) | 2005-09-29 |
JP2005529384A5 JP2005529384A5 (ja) | 2006-06-01 |
Family
ID=29424432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004504112A Pending JP2005529384A (ja) | 2002-05-07 | 2003-04-28 | 異なるクラスのインスタンスであるオブジェクトへの共通のメモリ管理コードの提供 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7398531B2 (ja) |
EP (1) | EP1502183A2 (ja) |
JP (1) | JP2005529384A (ja) |
CN (1) | CN1653418A (ja) |
AU (1) | AU2003225220B2 (ja) |
CA (1) | CA2484002C (ja) |
WO (1) | WO2003096186A2 (ja) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100401686C (zh) * | 2005-09-20 | 2008-07-09 | 华为技术有限公司 | 一种实现自动进行设备操作的系统及方法 |
US7567992B1 (en) * | 2006-12-29 | 2009-07-28 | Unisys Corporation | Replicating of plurality of instances of an object model in memory arrangement using portable object references where each object attribute assigned GUID |
US7499992B1 (en) * | 2008-02-27 | 2009-03-03 | International Business Machines Corporation | Association traversal translation for common information model |
CN101373445B (zh) * | 2008-09-09 | 2011-10-26 | 创新科存储技术(深圳)有限公司 | 一种内存调度方法及装置 |
CN101576824B (zh) * | 2009-06-19 | 2011-11-30 | 深圳市科陆电子科技股份有限公司 | 基于jsf开发框架的内存优化系统及方法 |
US8990499B2 (en) | 2010-03-26 | 2015-03-24 | Amazon Technologies, Inc. | Caching of a site model in a hierarchical modeling system for network sites |
US9047196B2 (en) | 2012-06-19 | 2015-06-02 | Concurix Corporation | Usage aware NUMA process scheduling |
US8700838B2 (en) | 2012-06-19 | 2014-04-15 | Concurix Corporation | Allocating heaps in NUMA systems |
US9575813B2 (en) | 2012-07-17 | 2017-02-21 | Microsoft Technology Licensing, Llc | Pattern matching process scheduler with upstream optimization |
US8966462B2 (en) * | 2012-08-10 | 2015-02-24 | Concurix Corporation | Memory management parameters derived from system modeling |
US9043788B2 (en) | 2012-08-10 | 2015-05-26 | Concurix Corporation | Experiment manager for manycore systems |
US8656135B2 (en) | 2012-11-08 | 2014-02-18 | Concurix Corporation | Optimized memory configuration deployed prior to execution |
US8954546B2 (en) | 2013-01-25 | 2015-02-10 | Concurix Corporation | Tracing with a workload distributor |
US8997063B2 (en) | 2013-02-12 | 2015-03-31 | Concurix Corporation | Periodicity optimization in an automated tracing system |
US20130283281A1 (en) | 2013-02-12 | 2013-10-24 | Concurix Corporation | Deploying Trace Objectives using Cost Analyses |
US8924941B2 (en) | 2013-02-12 | 2014-12-30 | Concurix Corporation | Optimization analysis using similar frequencies |
US20130227529A1 (en) | 2013-03-15 | 2013-08-29 | Concurix Corporation | Runtime Memory Settings Derived from Trace Data |
US9575874B2 (en) | 2013-04-20 | 2017-02-21 | Microsoft Technology Licensing, Llc | Error list and bug report analysis for configuring an application tracer |
US9292415B2 (en) | 2013-09-04 | 2016-03-22 | Microsoft Technology Licensing, Llc | Module specific tracing in a shared module environment |
CN105765528B (zh) | 2013-11-13 | 2019-09-24 | 微软技术许可有限责任公司 | 具有可配置原点定义的应用执行路径跟踪的方法、系统和介质 |
CN104679741B (zh) * | 2013-11-26 | 2021-03-12 | 腾讯科技(深圳)有限公司 | 一种获取实例占用内存的方法及装置 |
CN109144477B (zh) * | 2018-07-06 | 2022-02-08 | 武汉斗鱼网络科技有限公司 | 一种自动管理类对象内存的方法及电子设备 |
CN112232003B (zh) * | 2020-12-17 | 2021-03-30 | 芯华章科技股份有限公司 | 对设计进行仿真的方法、电子设备及存储介质 |
CN113849309B (zh) * | 2021-09-26 | 2022-09-16 | 北京元年科技股份有限公司 | 一种业务对象的内存分配方法以及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000057277A1 (en) * | 1999-03-23 | 2000-09-28 | Koninklijke Philips Electronics N.V. | Memory reclamation method |
JP2000322315A (ja) * | 1999-04-23 | 2000-11-24 | Internatl Business Mach Corp <Ibm> | データを管理する方法及び装置 |
WO2001050270A2 (en) * | 2000-01-05 | 2001-07-12 | Sun Microsystems, Inc. | Methods and apparatus for improving locality of reference through memory management |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5923877A (en) | 1996-05-01 | 1999-07-13 | Electronic Data Systems Corporation | Object-oriented programming memory management framework and method |
US5951680A (en) | 1997-06-24 | 1999-09-14 | International Business Machines Corporation | Configurator object |
US6327606B1 (en) | 1998-06-24 | 2001-12-04 | Oracle Corp. | Memory management of complex objects returned from procedure calls |
US6484247B1 (en) | 1998-06-25 | 2002-11-19 | Intellution, Inc. | System and method for storing and retrieving objects |
US6219678B1 (en) | 1998-06-25 | 2001-04-17 | Sun Microsystems, Inc. | System and method for maintaining an association for an object |
US6763440B1 (en) | 2000-06-02 | 2004-07-13 | Sun Microsystems, Inc. | Garbage collection using nursery regions for new objects in a virtual heap |
WO2002041144A1 (en) | 2000-11-01 | 2002-05-23 | Aeroflex Altair Cybernetics Corporation | Information transformation software engine |
US6874074B1 (en) | 2000-11-13 | 2005-03-29 | Wind River Systems, Inc. | System and method for memory reclamation |
WO2002067124A1 (en) * | 2001-02-16 | 2002-08-29 | Nthco. | Type-safe homogeneous linkage for heterogeneous smart pointers |
US6892212B2 (en) | 2001-03-22 | 2005-05-10 | International Business Machines Corporation | Method for efficient garbage collection based on object type |
US20030097537A1 (en) | 2001-10-23 | 2003-05-22 | Sun Microsystems, Inc. | Method and apparatus for scoped memory |
-
2002
- 2002-07-30 US US10/209,469 patent/US7398531B2/en not_active Expired - Lifetime
-
2003
- 2003-04-28 WO PCT/US2003/013310 patent/WO2003096186A2/en active Application Filing
- 2003-04-28 JP JP2004504112A patent/JP2005529384A/ja active Pending
- 2003-04-28 EP EP03721936A patent/EP1502183A2/en not_active Withdrawn
- 2003-04-28 AU AU2003225220A patent/AU2003225220B2/en not_active Expired
- 2003-04-28 CA CA2484002A patent/CA2484002C/en not_active Expired - Lifetime
- 2003-04-28 CN CNA038103796A patent/CN1653418A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000057277A1 (en) * | 1999-03-23 | 2000-09-28 | Koninklijke Philips Electronics N.V. | Memory reclamation method |
JP2000322315A (ja) * | 1999-04-23 | 2000-11-24 | Internatl Business Mach Corp <Ibm> | データを管理する方法及び装置 |
WO2001050270A2 (en) * | 2000-01-05 | 2001-07-12 | Sun Microsystems, Inc. | Methods and apparatus for improving locality of reference through memory management |
Also Published As
Publication number | Publication date |
---|---|
CA2484002C (en) | 2011-03-22 |
WO2003096186A3 (en) | 2004-12-02 |
CA2484002A1 (en) | 2003-11-20 |
CN1653418A (zh) | 2005-08-10 |
EP1502183A2 (en) | 2005-02-02 |
US7398531B2 (en) | 2008-07-08 |
WO2003096186A2 (en) | 2003-11-20 |
AU2003225220A1 (en) | 2003-11-11 |
AU2003225220B2 (en) | 2009-10-01 |
US20050177836A1 (en) | 2005-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2005529384A (ja) | 異なるクラスのインスタンスであるオブジェクトへの共通のメモリ管理コードの提供 | |
JP4541877B2 (ja) | オブジェクトをプログラミングするための簡略化されたメモリの割当ての取消 | |
US6018628A (en) | Method of implementing parameterized types to be compatible with existing unparameterized libraries | |
US6526570B1 (en) | File portability techniques | |
US6253226B1 (en) | Duration-based memory management of complex objects | |
US6633313B1 (en) | Event routing mechanism in a computer system | |
US6070008A (en) | System, method, and computer program product for providing an incremental storage adaptor | |
JPH0687222B2 (ja) | アプリケーションとデータベース管理システム間の相互通信システム及び方法 | |
CN103718155A (zh) | 运行时系统 | |
JP2000155679A (ja) | 共有デ―タ収集において安定反復子を作成する方法及びその装置 | |
JP2002525744A (ja) | テキスト・オブジェクトのコンパイル方法およびシステム | |
JP2007012064A (ja) | 非ジェネリック化方法がジェネリック化方法をオーバーライドすることの許可 | |
US8146068B2 (en) | Managing heuristic properties | |
JP2002116917A (ja) | オブジェクト指向型プログラミング言語によるソース・プログラムをコンパイルするコンパイラ | |
US20050108697A1 (en) | Compiler device, program, and recording medium | |
US7526752B1 (en) | Introspection support for generic types | |
Lortz et al. | Combining contracts and exemplar-based programming for class hiding and customization | |
JP2000347875A (ja) | ファイル移植技術 | |
US6904516B2 (en) | Mechanism for enabling efficient execution of an instruction | |
KR100287065B1 (ko) | 객체지향데이터베이스시스템의영속객체관리방법 | |
US9058339B2 (en) | Source control inheritance locking | |
Biliris et al. | Ode 2.0 user's manual | |
Annevelink et al. | Object‐oriented data management based on abstract data types | |
JP2002014813A (ja) | 分散適応実行時プラットホーム用のアプリケーションプログラム開発方法及びコンピュータ装置 | |
Ali | iPhone SDK 3 Programming |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060405 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060405 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090407 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090706 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090713 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090731 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090825 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091119 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100105 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100601 |