JP4541877B2 - オブジェクトをプログラミングするための簡略化されたメモリの割当ての取消 - Google Patents
オブジェクトをプログラミングするための簡略化されたメモリの割当ての取消 Download PDFInfo
- Publication number
- JP4541877B2 JP4541877B2 JP2004504122A JP2004504122A JP4541877B2 JP 4541877 B2 JP4541877 B2 JP 4541877B2 JP 2004504122 A JP2004504122 A JP 2004504122A JP 2004504122 A JP2004504122 A JP 2004504122A JP 4541877 B2 JP4541877 B2 JP 4541877B2
- Authority
- JP
- Japan
- Prior art keywords
- memory area
- memory
- objects
- computer
- memory management
- 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
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
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
この出願は、Mohammad Shoaib Lari、Ravikanth Kasamsetty、およびSrinath Krishnaswamyによる「オブジェクトをプログラミングするための簡略化されたメモリの割当ての取消("Simplified Deallocation of Memory for Programming Objects")」と題される、2002年5月7日に出願された米国仮特許出願連続番号第60/378,871号に関連し、それからの優先権を主張し、ここに十分に説明されるかの如くその開示全体をここに引用により援用する。この出願は、Mohammad Shoaib Lari、Ravikanth Kasamsetty、およびSrinath Krishnaswamyによる「オブジェクトをプログラミングするための簡略化されたメモリの割当ての取消("Simplified Deallocation of Memory for Programming Objects")」と題される、2002年5月31日に出願された米国仮特許出願連続番号第60/384,646号に関連し、それからの優先権を主張し、ここに十分に説明されるかの如くその開示全体をここに引用により援用する。
この発明はオブジェクトのためのメモリ管理に関し、特に、異なるクラスであるインスタンスであるオブジェクトへの共通のメモリ管理コードの提供、およびオブジェクトの階層で特定のオブジェクトと関連付けられるメモリおよび階層でその特定のオブジェクトの下にあるオブジェクトを解放することに関する。
メモリの管理は、メモリの割当および割当の取消を管理してオブジェクトまたは他のデータ構造を記憶するために行なわれる動作およびプロセスを指す。典型的には、大抵のアプリケーションは、そのアプリケーションが書かれるコンピュータ言語によって供給されるメモリ管理コードを使用する。しかしながら、コンピュータ言語によって供給されるメモリ管理コードは、性能のための最適化、メモリの割当のための最適化または互いに関係を有するオブジェクトのセットに対するメモリを解放することなどの或る望ましい特徴を有さないことがある。したがって、オブジェクトが自分自身のメモリ管理コードを有すると有利である。
の間に階層的な関係が存在する。接続および関連するステートメント、結果セットおよびストリームは、各々それら自身のオブジェクトによって表現することができ、これらオブジェクトは、これらオブジェクト間の関係を反映する階層的なツリーに組織化することができる。たとえば、接続オブジェクトは階層的なツリーの頂点のオブジェクトであり、ステートメントオブジェクトは接続オブジェクトのすぐ下のオブジェクトであり、結果セットオブジェクトはステートメントオブジェクトのすぐ下にある、等である。とりわけ、オブジェクトと関連付けられるメソッドを実行するため、またはオブジェクトのために計算を行なうためにメモリが必要とされる。したがって、メモリは階層的なツリー(以降は、「メモリ管理ツリー」と称される)で各オブジェクトと関連付けられる。
オブジェクトのためのメモリ管理を提供するための技術が説明される。特に、異なるクラスのインスタンスであるオブジェクトに共通のメモリ管理コードを提供するための技術、およびメモリ管理のツリー内で特定のオブジェクトで開始するメモリ管理の下位ツリーを解放するための技術が説明される。
モリ管理テンプレートと称される)は共通のプリプロセッサメモリ管理コードを提供するために使用される。メモリ管理インターフェイスを規定する抽象クラスは、コンパイル中に「特別なテンプレート」を作成するためにこのメモリ管理テンプレートに渡される。特別なテンプレートは、第2のクラスを下位に分類するために使用される(以降は「特別なテンプレートサブクラス」と称される)。特別なテンプレートのサブクラスは、コンパイル時間中に共通のプリプロセッサメモリ管理コードから生成されるメモリ管理実行ファイルを含む。一実施例によると、特別なテンプレートのサブクラスは抽象クラスでインターフェイスに対するインプリメンテーションを提供する。特別なテンプレートのサブクラスのインスタンスであるオブジェクトの、新規または削除などのメモリ管理オペレータが起動されと、特別なテンプレート内のメモリ管理実行ファイルが実行される。
オブジェクトに共通のメモリ管理コードを提供するための方法である。以下の説明では、説明のため、多くの具体的な詳細を説明してこの発明を完全に理解できるようにしている。しかしながら、この発明は、これらの具体的な詳細な詳細なしに実現可能であることは明らかである。場合によっては、この発明を不必要にわかりにくくするのを避けるために、ブロック図の形で周知の構造および装置を示す。
図1は、この発明の実施例による異なるクラスのインスタンスであるオブジェクトに共通のメモリ管理コードを提供するためにメモリ管理テンプレートを使用する3つのクラスの階層(class hierarchy)を示すブロック図である。3つのクラスの階層、クラスの階層1、クラスの階層2およびクラスの階層3内のクラスはすべて1つの形または別の形でコードを提供する。コードを提供することは、後続のコンパイルおよび実行のためにコードを作成するプロセスまたは動作を指す。たとえば、プログラマは、クラスの形でファイルにソースを入力することによってコードを提供し、それはコンパイルのためにコンパイ
ラによってアクセス可能である。コードを提供することは、ライブラリを参照する他のアプリケーションの後のコンパイルのためにコードをライブラリに記憶することも指す。
めにのみ使用され、クラスの階層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>(MM<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)内の同じ共通のプリプロセッサメモリ管理コードからすべて生成されたメモリ管理実行ファイルを有する。
あるオブジェクトを作成するために使用される。コンストラクタが提供することができる機能の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>::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つのオブジェクトは、後に詳細に説明するように、共通のプリプロセッサメモリ管理コードから生成されたメモリ管理実行ファイルおよび共通のヒープへのポインタを含む。
1)他のオブジェクトを作成し、(2)これら他のオブジェクトの各々に共通のヒープへのポインタを通信するために使用される。オブジェクト、stmtおよびrsを作成するため、ファクトリメソッド、createStatementメソッド(createStatement method)510およびexecQueryメソッド(execQuery method)540が命令603および604でそれぞれ起動される。共通のヒープにポインタを通信するために、ファクトリメソッド、createStatementおよびexecQueryは、1つのオブジェクトから次に作成されたオブジェクトへとポインタを伝搬する。たとえば、オブジェクトconnは命令602で作成され、命令603で共通のヒープのポインタをオブジェクトstmtに通信するために使用される。これは、共通のヒープメンバへのポインタ、pH1を命令602でcreateConnection610に渡すことによって実現される。コードの断片611aは、MM<接続Abs>::newを呼出すことに繋がる。コードの断片611bは、接続STSのコンストラクタ500の呼出に繋がり、共通のヒープへのポインタもオブジェクトconnにセーブされる。接続STSのコンストラクタ500は、共通のヒープのポインタを命令501でMM<接続Abs>::hndlp_にセーブする。次いでセーブされた共通のヒープへのポインタは、命令603でオブジェクトconnからオブジェクトstmtに伝搬され、このときconn内のファクトリメソッドcreateStatementは、オブジェクトstmtを作成するために使用される。たとえば、コードの断片511aでは、hndlp_206の特別なバージョンである、MM<接続Abs>::hndlp_は、新しいオペレータに渡され、これはstmtオブジェクトに対してメモリを割当てる。同様の処理が命令604でオブジェクトrsに関して行なわれる。
図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に示されるクラスとともにオブジェクトを作成するプログラムを示すブロック図である。
アプリケーションプログラムから起動される場合、図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に結合される。
は当初遠隔コンピュータの磁気ディスク上で運ばれてもよい。遠隔コンピュータは命令をその動的メモリにロードし、モデムを使用して電話線上で命令を送信することができる。コンピュータシステム1200のローカルモデムはデータを電話線上で受け取り、赤外線送信機を使用してデータを赤外線信号に変換する。赤外線検出器は赤外線信号で運ばれたデータを受け取り、適切な回路はそのデータをバス1202上に位置付けることができる。バス1202はデータをメインメモリ1206に運び、そこからプロセッサ1204は命令を検索し実行することができる。メインメモリ1206によって受取られた命令は、任意でプロセッサ1204による実行の前後に記憶装置1210に記憶されてもよい。
Claims (22)
- メモリ装置上のツリー構造を有するオブジェクトのセットと関連付けられたメモリ領域を解放する方法であって、前記方法はコンピュータで実現されるステップを含み、前記コンピュータで実現されるステップは、
アプリケーションの実行に必要なインスタンスである、前記ツリー構造を有する前記オブジェクトのセットを保持するステップを備え、前記オブジェクトのセットの各々は、当該セットを特定するための識別子と当該セットにおける階層を示す識別子とを含み、前記コンピュータで実現されるステップはさらに、
前記オブジェクトのセットに含まれるいずれかのオブジェクトに関連付けられた1つのメモリ領域が割当てられることに応答して、前記ツリー構造において当該オブジェクトの下位に位置するいずれか1つのオブジェクトに関連付けられた他のメモリ領域を、当該割当てられたメモリ領域の下位に位置する子メモリ領域として割当てるための子のポインタ値と、前記ツリー構造において当該オブジェクトと同じ階層に位置するいずれか1つのオブジェクトに関連付けられた他のメモリ領域を、当該割当てられたメモリ領域と同じ階層に位置する兄弟メモリ領域として割当てるための兄弟のポインタ値とを含む、階層関係を規定するデータを、メモリ領域毎に前記メモリ装置に生成するステップを備え、前記コンピュータで実現されるステップはさらに、
オブジェクトと関連付けられたメモリ領域を解放するための要求を受取るステップと、
前記要求を受取ることに応答して、
前記階層関係を規定するデータにアクセスして、前記解放するための要求に対応するオブジェクトの子孫である1つ以上のオブジェクトと関連付けられているメモリ領域を決定するステップを備え、前記階層関係を規定するデータにアクセスするステップは、
前記データ内の前記子のポインタ値にアクセスして、当該オブジェクトの子孫と関連付けられた子メモリ領域を判断するステップと、
前記データ内の前記兄弟のポインタ値にアクセスして、当該オブジェクトの子孫と関連付けられた兄弟メモリ領域を判断するステップとを含み、さらに、
前記解放するための要求に対応するオブジェクトと関連付けられたメモリ領域および当該オブジェクトの子孫と関連付けられたメモリ領域を解放するステップとを備える、方法。 - 共通のメモリ管理命令を定義し、かつ、メモリ管理テンプレートに用意されているプリプロセッサコードから、各オブジェクトを特定するための識別子を用いて動的に生成された命令を含む、メモリ管理実行ファイルを実行することによって、各オブジェクトに対して前記メモリ領域が割当てられる、請求項1に記載の方法。
- 前記メモリ管理実行ファイルに含まれる命令は追加のオペレータであり、
前記追加のオペレータを起動することによって、各オブジェクトに対して前記メモリ領域が割当てられる、請求項2に記載の方法。 - 前記解放するステップは、
前記プリプロセッサコードから動的に生成された命令を含むメモリ管理実行ファイルを実行することによって、前記解放するための要求に対応するオブジェクトと関連付けられたメモリ領域および当該オブジェクトの前記子孫と関連付けられたメモリ領域を解放するステップをさらに含む、請求項2に記載の方法。 - 前記メモリ管理実行ファイルに含まれる命令は削除のオペレータであり、前記解放するステップは、
前記削除のオペレータを起動することによって、前記解放するための要求に対応するオブジェクトと関連付けられたメモリ領域および当該オブジェクトの前記子孫と関連付けられたメモリ領域を解放するステップをさらに含む、請求項4に記載の方法。 - 前記解放するステップは、
解放の目的オブジェクトとしてのオブジェクトを指定した単一の命令を呼び出すことによって、当該オブジェクトと関連付けられたメモリ領域および当該オブジェクトの前記子孫と関連付けられたメモリ領域の解放を行なわせるステップをさらに含む、請求項4に記載の方法。 - 前記単一の命令は前記オブジェクトに対するデストラクタである、請求項6に記載の方法。
- オブジェクトに対するメモリ領域の割当は、当該オブジェクトを指定したファクトリメソッドの実行によって実現される、請求項1〜7のいずれか1項に記載の方法。
- 前記階層関係を規定するデータの生成は、前記ファクトリメソッドの実行に応答して実行される、請求項8に記載の方法。
- 前記階層関係を規定するデータは、前記オブジェクトのセットに共通の変数であるデータメンバとして維持される、請求項1〜9のいずれか1項に記載の方法。
- 前記階層関係を規定するデータは、各オブジェクトに関連付けられた前記メモリ領域で維持される、請求項1〜9のいずれか1項に記載の方法。
- メモリ装置上のツリー構造を有するオブジェクトのセットと関連付けられたメモリ領域を解放するための命令の1つ以上のシーケンスを格納したコンピュータ読取可能な記録媒体であって、演算手段による前記命令の1つ以上のシーケンスの実行は、前記演算手段に以下のステップを行なわせ、前記以下のステップは、
アプリケーションの実行に必要なインスタンスである、前記ツリー構造を有する前記オブジェクトのセットを作成するステップを備え、前記オブジェクトのセットの各々は、当該セットを特定するための識別子と当該セットにおける階層を示す識別子とを含み、前記以下のステップはさらに、
前記オブジェクトのセットに含まれるいずれかのオブジェクトに関連付けられた1つのメモリ領域が割当てられることに応答して、前記ツリー構造において当該オブジェクトの下位に位置するいずれか1つのオブジェクトに関連付けられた他のメモリ領域を、当該割当てられたメモリ領域の下位に位置する子メモリ領域として割当てるための子のポインタ値と、前記ツリー構造において当該オブジェクトと同じ階層に位置するいずれか1つのオブジェクトに関連付けられた他のメモリ領域を、当該割当てられたメモリ領域と同じ階層に位置する兄弟メモリ領域として割当てるための兄弟のポインタ値とを含む、階層関係を規定するデータを、メモリ領域毎に前記メモリ装置に生成するステップを備え、前記以下のステップはさらに、
オブジェクトと関連付けられたメモリ領域を解放するための要求を受取るステップと、
前記要求を受取ることに応答して、
前記階層関係を規定するデータにアクセスして、前記解放するための要求に対応するオブジェクトの子孫である1つ以上のオブジェクトと関連付けられているメモリ領域を決定するステップを備え、前記階層関係を規定するデータにアクセスするステップは、
前記データ内の前記子のポインタ値にアクセスして、当該オブジェクトの子孫と関連付けられた子メモリを判断するステップと、
前記データ内の前記兄弟のポインタ値にアクセスして、当該オブジェクトの子孫と関連付けられた兄弟メモリを判断するステップとを含み、さらに、
前記解放するための要求に対応するオブジェクトと関連付けられたメモリ領域および当該オブジェクトの子孫と関連付けられたメモリ領域を解放するステップとを備える、コンピュータ読取可能な記録媒体。 - 前記コンピュータ読取可能な記録媒体に格納され、共通のメモリ管理命令を定義し、かつ、メモリ管理テンプレートに用意されているプリプロセッサコードから、各オブジェクトを特定するための識別子を用いて動的に生成された命令を含む、メモリ管理実行ファイルを実行することによって、各オブジェクトに対して前記メモリ領域が割当てられる、請求項12に記載のコンピュータ読取可能な記録媒体。
- 前記メモリ管理実行ファイルに含まれる命令は追加のオペレータであり、
前記追加のオペレータを起動することによって、各オブジェクトに対して前記メモリ領域が割当てられる、請求項13に記載のコンピュータ読取可能な記録媒体。 - 前記解放するステップは、
前記コンピュータ読取可能な記録媒体に格納されたプリプロセッサコードから動的に生成された命令を含むメモリ管理実行ファイルを実行することによって、前記解放するための要求に対応するオブジェクトと関連付けられたメモリ領域および当該オブジェクトの前記子孫と関連付けられたメモリ領域を解放するステップをさらに含む、請求項13に記載のコンピュータ読取可能な記録媒体。 - 前記メモリ管理実行ファイルに含まれる命令は削除のオペレータであり、前記解放するステップは、
前記削除のオペレータを起動することによって、前記解放するための要求に対応するオブジェクトと関連付けられたメモリ領域および当該オブジェクトの前記子孫と関連付けられたメモリ領域を解放するステップをさらに含む、請求項15に記載のコンピュータ読取可能な記録媒体。 - 前記解放するステップは、
解放の目的オブジェクトとしてのオブジェクトを指定した単一の命令を呼び出すことによって、当該オブジェクトと関連付けられたメモリ領域および当該オブジェクトの前記子孫と関連付けられたメモリ領域の解放を行なわせるステップをさらに含む、請求項15に記載のコンピュータ読取可能な記録媒体。 - 前記単一の命令は前記オブジェクトに対するデストラクタである、請求項17に記載のコンピュータ読取可能な記録媒体。
- オブジェクトに対するメモリ領域の割当は、当該オブジェクトを指定したファクトリメソッドの実行によって実現される、請求項12〜18のいずれか1項に記載のコンピュータ読取可能な記録媒体。
- 前記階層関係を規定するデータの生成は、前記ファクトリメソッドの実行に応答して実行される、請求項19に記載のコンピュータ読取可能な記録媒体。
- 前記階層関係を規定するデータは、前記オブジェクトのセットに共通の変数であるデータメンバとして維持される、請求項12〜20のいずれか1項に記載のコンピュータ読取可能な記録媒体。
- 前記階層関係を規定するデータは、各オブジェクトに関連付けられた前記メモリ領域で維持される、請求項12〜20のいずれか1項に記載のコンピュータ読取可能な記録媒体。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US37887102P | 2002-05-07 | 2002-05-07 | |
US38464602P | 2002-05-31 | 2002-05-31 | |
US10/209,514 US7076511B1 (en) | 2002-05-07 | 2002-07-30 | Simplified deallocation of memory for programming objects |
PCT/US2003/013276 WO2003096196A2 (en) | 2002-05-07 | 2003-04-28 | Simplified deallocation of memory for programming objects |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2005531050A JP2005531050A (ja) | 2005-10-13 |
JP2005531050A5 JP2005531050A5 (ja) | 2006-06-01 |
JP4541877B2 true JP4541877B2 (ja) | 2010-09-08 |
Family
ID=29424433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004504122A Expired - Lifetime JP4541877B2 (ja) | 2002-05-07 | 2003-04-28 | オブジェクトをプログラミングするための簡略化されたメモリの割当ての取消 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7076511B1 (ja) |
EP (1) | EP1502192B1 (ja) |
JP (1) | JP4541877B2 (ja) |
CN (1) | CN1296834C (ja) |
AU (1) | AU2003241323B2 (ja) |
CA (1) | CA2485087C (ja) |
WO (1) | WO2003096196A2 (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7225186B2 (en) * | 2004-03-26 | 2007-05-29 | Kyocera Wireless Corp. | Binary search tree system and method |
JP2007179154A (ja) * | 2005-12-27 | 2007-07-12 | Kyocera Corp | 階層的ヒープ管理方法及び装置 |
CN101639779B (zh) * | 2009-08-18 | 2012-07-18 | 腾讯科技(深圳)有限公司 | 一种资源释放方法和装置 |
CN102033804A (zh) * | 2009-09-29 | 2011-04-27 | 国际商业机器公司 | 辅助内存分析的方法和系统 |
US8700838B2 (en) | 2012-06-19 | 2014-04-15 | Concurix Corporation | Allocating heaps in NUMA systems |
US9047196B2 (en) | 2012-06-19 | 2015-06-02 | Concurix Corporation | Usage aware NUMA process scheduling |
US9575813B2 (en) | 2012-07-17 | 2017-02-21 | Microsoft Technology Licensing, Llc | Pattern matching process scheduler with upstream optimization |
US9043788B2 (en) | 2012-08-10 | 2015-05-26 | Concurix Corporation | Experiment manager for manycore systems |
US8966462B2 (en) | 2012-08-10 | 2015-02-24 | Concurix Corporation | Memory management parameters derived from system modeling |
US8607018B2 (en) | 2012-11-08 | 2013-12-10 | Concurix Corporation | Memory usage configuration based on observations |
US8656135B2 (en) | 2012-11-08 | 2014-02-18 | Concurix Corporation | Optimized memory configuration deployed prior to execution |
US8656134B2 (en) | 2012-11-08 | 2014-02-18 | Concurix Corporation | Optimized memory configuration deployed on executing code |
US9665474B2 (en) | 2013-03-15 | 2017-05-30 | Microsoft Technology Licensing, Llc | Relationships derived from trace data |
US9146834B2 (en) * | 2013-08-22 | 2015-09-29 | Oracle International Corporation | Targeted cloud-based debugging |
US10725824B2 (en) * | 2015-07-10 | 2020-07-28 | Rambus Inc. | Thread associated memory allocation and memory architecture aware allocation |
CN108563507A (zh) * | 2018-04-12 | 2018-09-21 | 郑州云海信息技术有限公司 | 一种内存管理方法、装置、设备及可读存储介质 |
CN113849309B (zh) * | 2021-09-26 | 2022-09-16 | 北京元年科技股份有限公司 | 一种业务对象的内存分配方法以及装置 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822592A (en) * | 1994-06-28 | 1998-10-13 | Us West Technologies, Inc. | Method and system for determining source code location |
US5923877A (en) | 1996-05-01 | 1999-07-13 | Electronic Data Systems Corporation | Object-oriented programming memory management framework and method |
JP2002506253A (ja) * | 1998-03-03 | 2002-02-26 | ゲオデジック システムズ インク. | リソースの透過的なガーベッジ・コレクション |
US6327606B1 (en) | 1998-06-24 | 2001-12-04 | Oracle Corp. | Memory management of complex objects returned from procedure calls |
US6219678B1 (en) * | 1998-06-25 | 2001-04-17 | Sun Microsystems, Inc. | System and method for maintaining an association for an object |
US6484247B1 (en) * | 1998-06-25 | 2002-11-19 | Intellution, Inc. | System and method for storing and retrieving objects |
GB9906629D0 (en) * | 1999-03-23 | 1999-05-19 | Koninkl Philips Electronics Nv | Memory reclamation method |
US6480862B1 (en) * | 1999-04-23 | 2002-11-12 | International Business Machines Corporation | Relation-based ordering of objects in an object heap |
CN1149786C (zh) * | 1999-05-10 | 2004-05-12 | 华为技术有限公司 | 用户接入网维护与管理方法 |
US6763440B1 (en) * | 2000-06-02 | 2004-07-13 | Sun Microsystems, Inc. | Garbage collection using nursery regions for new objects in a virtual heap |
US6874074B1 (en) * | 2000-11-13 | 2005-03-29 | Wind River Systems, Inc. | System and method for memory reclamation |
US20020169786A1 (en) | 2001-02-16 | 2002-11-14 | Richek Martin D. | 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 |
EP1308845A1 (en) * | 2001-10-23 | 2003-05-07 | Sun Microsystems, Inc. | Method and apparatus for scoped memory |
-
2002
- 2002-07-30 US US10/209,514 patent/US7076511B1/en not_active Expired - Lifetime
-
2003
- 2003-04-28 EP EP03731055.4A patent/EP1502192B1/en not_active Expired - Lifetime
- 2003-04-28 JP JP2004504122A patent/JP4541877B2/ja not_active Expired - Lifetime
- 2003-04-28 CA CA2485087A patent/CA2485087C/en not_active Expired - Lifetime
- 2003-04-28 CN CNB03810380XA patent/CN1296834C/zh not_active Expired - Lifetime
- 2003-04-28 WO PCT/US2003/013276 patent/WO2003096196A2/en active Application Filing
- 2003-04-28 AU AU2003241323A patent/AU2003241323B2/en not_active Expired
Also Published As
Publication number | Publication date |
---|---|
CN1296834C (zh) | 2007-01-24 |
JP2005531050A (ja) | 2005-10-13 |
AU2003241323A1 (en) | 2003-11-11 |
EP1502192B1 (en) | 2017-05-17 |
WO2003096196A2 (en) | 2003-11-20 |
US7076511B1 (en) | 2006-07-11 |
CN1653430A (zh) | 2005-08-10 |
WO2003096196A3 (en) | 2004-04-08 |
CA2485087A1 (en) | 2003-11-20 |
CA2485087C (en) | 2012-08-07 |
EP1502192A2 (en) | 2005-02-02 |
AU2003241323B2 (en) | 2008-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2005529384A (ja) | 異なるクラスのインスタンスであるオブジェクトへの共通のメモリ管理コードの提供 | |
JP4541877B2 (ja) | オブジェクトをプログラミングするための簡略化されたメモリの割当ての取消 | |
US6018628A (en) | Method of implementing parameterized types to be compatible with existing unparameterized libraries | |
US6253226B1 (en) | Duration-based memory management of complex objects | |
US7281248B2 (en) | Virtualized and realized user interface controls | |
Shapiro et al. | Persistence and migration for C++ objects | |
KR100384905B1 (ko) | 컴퓨터 메모리에서 데이터 관리 방법, 장치 및 기록매체 | |
US5864864A (en) | Method and apparatus for providing transparent persistent data support to foreign data types | |
MacIntyre et al. | Language-level support for exploratory programming of distributed virtual environments | |
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) | アプリケーションとデータベース管理システム間の相互通信システム及び方法 | |
US6327606B1 (en) | Memory management of complex objects returned from procedure calls | |
US7340719B1 (en) | Methods and apparatus to preserve software modifications | |
US6996682B1 (en) | System and method for cascading data updates through a virtual copy hierarchy | |
US8146068B2 (en) | Managing heuristic properties | |
US20050108697A1 (en) | Compiler device, program, and recording medium | |
US6996694B1 (en) | Basing computer memory allocation for aggregate data types on data separate from a type definition | |
US20210397549A1 (en) | Efficient continuation stack storage in languages with a garbage collector | |
KR100287065B1 (ko) | 객체지향데이터베이스시스템의영속객체관리방법 | |
US6904516B2 (en) | Mechanism for enabling efficient execution of an instruction | |
Morrison et al. | Language design issues in supporting process-oriented computation in persistent environments | |
JP2002014813A (ja) | 分散適応実行時プラットホーム用のアプリケーションプログラム開発方法及びコンピュータ装置 | |
CA1340917C (en) | Encapsulation of applications for inclusion within an object management facility environment | |
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: 20060404 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060404 |
|
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: 20090714 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090825 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20091124 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20091201 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091204 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100105 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100402 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100409 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100428 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100601 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100624 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4541877 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130702 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |