JP2003519834A - メモリ管理によって参照の局所性を改善するための方法および装置 - Google Patents

メモリ管理によって参照の局所性を改善するための方法および装置

Info

Publication number
JP2003519834A
JP2003519834A JP2001550562A JP2001550562A JP2003519834A JP 2003519834 A JP2003519834 A JP 2003519834A JP 2001550562 A JP2001550562 A JP 2001550562A JP 2001550562 A JP2001550562 A JP 2001550562A JP 2003519834 A JP2003519834 A JP 2003519834A
Authority
JP
Japan
Prior art keywords
class
fields
memory
objects
field
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
Application number
JP2001550562A
Other languages
English (en)
Other versions
JP4812997B2 (ja
Inventor
ストウタミア・デイビッド・ピー.
グラルプ・ステファン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2003519834A publication Critical patent/JP2003519834A/ja
Application granted granted Critical
Publication of JP4812997B2 publication Critical patent/JP4812997B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99937Sorting
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation
    • Y10S707/99957Garbage collection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】 【解決手段】 メモリ内の複数のオブジェクトを再配列するための機構を作成するための方法および装置が開示されている。コンピュータアプリケーション実行中の複数のオブジェクトに関する1つ以上のフィールドの相互間のメモリ内でのアクセス頻度が決定される。次いで、複数のオブジェクトに関する1つ以上のフィールドが相互参照するデータのメモリ内での決定されたアクセス頻度に従って、メモリ内の複数のオブジェクトを再配列するための機構が生成される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】
本発明は、一般に、コンピュータソフトウェアに関する。特に、本発明は、メ
モリにおけるデータの配置を改善することにより、データへのアクセス速度を増
大させることに関する。
【0002】
【従来の技術】
キャッシュメモリは、メモリ速度を増大させるためにメインメモリと組み合わ
せて用いられることが多い。通常、データの部分は、キャッシュメモリが、メイ
ンメモリのこれらの部分のコピーを含むように、メインメモリからコピーされる
。CPUがワードを読むことを試みる際には、そのワードがキャッシュ内にある
か否かを決定するための確認がなされる。そのワードがキャッシュ内にある場合
には、そのワードは、キャッシュから読み出される。そうでない場合には、多く
のワードが、メインメモリから読み出されてキャッシュに格納され、上述のワー
ドがCPUに提供される。
【0003】 ワードがキャッシュ内にない場合には、メインメモリから読み出す必要があり
、そのため、メモリアクセス時間が増大する。要求されるデータがキャッシュ内
に存在する可能性を高めるために、キャッシュは通常、どのデータがアクセスさ
れるかをヒューリスティクスによって予測し、このデータをキャッシュにコピー
する。そのため、コンピュータのメモリシステムは、最も頻繁にアクセスされる
項目をプロセッサの近くに維持するために、キャッシュを頼りにすることが多い
【0004】 キャッシュには複数のワードが同時に格納されるので、メモリ内のデータの配
置が、キャッシュの効率に影響し、それによって、コンピュータシステム全体の
動作速度に影響する可能性がある。したがって、速度を最大にするためには、メ
モリ内のデータ(例えば、オブジェクト)を効率的に配置すべきである。以前に
提案された技術は、大きなオーバーヘッドを有し、すなわち、Javaバイトコ
ードを実行するような動的な環境では用いることができない。
【0005】 もはやメモリから参照されないオブジェクトを削除するために、しばしば、ガ
ーベージコレクションが実行される。一般に用いられているガーベージコレクシ
ョンの2つの実行方法は、「マーク・アンド・スイープ」を行う方法と「コピー
によるガーベージコレクション」を行う方法とである。以下に詳しく説明するよ
うに、メモリ内でのデータの再配置は、ガーベージコレクションのプロセスの間
に、ある程度までは実行することができる。
【0006】 図1Aは、従来のマーク・アンド・スイープによるガーベージコレクションの
プロセスにおけるメモリ内のオブジェクトの配置を示すブロック図である。図1
Aには、オブジェクト102、104、106、および108が示されている。
より詳細には、オブジェクト102は、オブジェクト104および106の両方
を参照し、実行スレッドによって参照されている。マーク・アンド・スイープに
よるガーベージコレクションは通常、2つのパスで実行される。第1のパスでは
、オブジェクトによって参照されない各オブジェクトがマークされる。例えば、
オブジェクト108は、オブジェクト102、104、および106のいずれに
よっても参照されないため、削除のためにマークされる。第2のパスでは、マー
クされない各オブジェクトのためのメモリは再利用される。
【0007】 図1Bは、従来のマーク・アンド・スイープによるガーベージコレクションプ
ロセスの完了時における図1Aのメモリを示すブロック図である。図示されてい
るように、図1Aでマークされたオブジェクト108は、削除されたために図1
Bには示されていない。オブジェクト102、104、および106は、ガーベ
ージコレクションプロセスの完了後も残っている。オブジェクトは、マーク・ア
ンド・スイープによるガーベージコレクションの間、通常は再配置されないこと
に注意すべきである。
【0008】 ガーベージコレクションの別の方法(すなわち、コピーによるガーベージコレ
クション)も、一般に用いられている。図2Aは、従来のコピーによるガーベー
ジコレクションのプロセスにおけるメモリ内のオブジェクトを示すブロック図で
ある。図示されているように、メモリ200内には、複数のオブジェクトが存在
する。例えば、第1のオブジェクト202(A)、第2のオブジェクト204(
B)、および第3のオブジェクト206(D)は、メモリ内に格納されており、
すべてルートから到達可能である。さらに、第4のオブジェクト208(C)は
、メモリ200内に格納されているが、メモリ内の他のオブジェクトによって参
照されていない。
【0009】 図2Bは、従来のコピーによるガーベージコレクションプロセスの完了時にお
ける図2Aのメモリを示すブロック図である。コピーによるガーベージコレクシ
ョンでは、1つ以上のオブジェクトによって参照されているオブジェクトはすべ
てコピーされ、他のオブジェクトによって参照されていないオブジェクトはコピ
ーされない。そのため、コピーされていないオブジェクトはすべてガーベージで
ある。例えば、図2Bに示されているように、第4のオブジェクト208(C)
は、コピーされていない。コピーされると、図2Aに示されている元のオブジェ
クトのためのメモリは、再利用されてもよい。
【0010】 コピーによるガーベージコレクションでは、オブジェクトは、コピーのプロセ
ス中には様々な順序で配置されてよい。図3Aは、メモリ内のオブジェクトの構
成例を示すブロック図である。図示されているように、メモリ300は、第1の
オブジェクト302(A)と、第2のオブジェクト304(B)と、第3のオブ
ジェクト306(D)とを格納している。第1のオブジェクト302は、第2の
オブジェクト304および第3のオブジェクト306の両方を参照している。第
4のオブジェクト308(C)は、どのオブジェクトからも参照されていない。
【0011】 第1のオブジェクト302は、第2と第3のオブジェクト304、306両方
を参照しているので、それらのオブジェクトは、2つの異なる順序で配置するこ
とができる。図3Bは、コピーによるガーベージコレクションの完了時における
図3Aのオブジェクトの1つの可能な構成を示すブロック図である。図示されて
いるように、第2のオブジェクト304は、第1のオブジェクト302に隣接し
て配置され、第3のオブジェクト306は、第2のオブジェクト304に隣接し
て配置されている。
【0012】 図3Cは、コピーによるガーベージコレクションの完了時における図3Aのオ
ブジェクトの別の可能な構成を示すブロック図である。図示されているように、
第2のオブジェクト304を第1のオブジェクト302に隣接して配置せずに、
第3のオブジェクト306が、第1のオブジェクト302に隣接して配置されて
いる。図3Bおよび図3Cに示されている簡単な例では、それらのオブジェクト
は、2つの異なる順序で配置することができる。オブジェクトの順序付けと共に
、メモリ内のオブジェクトのアクセス速度を最大にすることを可能にする機構が
設計されたら有益であろう。
【0013】 オブジェクト指向のプログラミングにおいては、コードとデータがオブジェク
トに組み込まれる。各オブジェクトは、オブジェクトの特性を決定するクラスを
通して定義される。すなわち、オブジェクトは、あるクラスの個々のインスタン
スである。さらに、各オブジェクトは、メソッドはもちろん、様々なフィールド
も含んでいてよい。
【0014】 「Using Generational Garbage Collect
ion To Implement Cache−Conscious Dat
a Placement」、Trishul M. ChilimbiとJam
es R. Larus著、メモリ管理に関する国際シンポジウム(ISMM
‘98)、1998年10月、に記載されているように、互いに近い時間にアク
セスされるオブジェクトは、同じキャッシュラインでフェッチされるようにメモ
リに格納することができる。Chilimbiに開示されているそのプロセスに
ついて、図4A、4B、および4Cを参照して簡単に説明する。図4Aは、メモ
リおよび関連フィールドに格納されたオブジェクトのセットの例を示すブロック
図である。図示されているように、第1のオブジェクト400(A)は、第1の
フィールド402(x)と、第2のフィールド404(y)とを含む。同様に、
第2のオブジェクト406(B)は、第1のフィールド408(w)と、第2の
フィールド410(z)とを含む。第3のオブジェクト412(C)は、フィー
ルド414(e)を含み、第4のオブジェクト416(D)は、フィールド41
8(f)を含む。
【0015】 図4Bは、図4Aのオブジェクトおよびフィールドにアクセスするコンピュー
タアプリケーションの実行中に作成できるメモリアクセスのログの例を示すブロ
ック図である。Chilimbiでは、コンピュータアプリケーションは、メモ
リ参照(例えば、ロードや格納のコマンド)が記録されるように実装される。実
装されたコンピュータアプリケーションが実行されると、メモリアクセスのログ
420が作成される。より詳細には、オブジェクト422が、メモリアクセスご
とに記録される。例えば、第1のオブジェクト400(A)のフィールド(例え
ば、第1のフィールド402)がメモリからフェッチされると、このメモリアク
セスは、エントリ426に示されているように記録される。
【0016】 次いで、メモリアクセスのログは、オブジェクト間の参照の局所性をモデリン
グする一時的な参照グラフを作成するために用いられる。図4Cは、メモリ内の
オブジェクトのアクセスと、図4Bに示されているメモリアクセスのログから作
成できるこれらのメモリアクセスの一時的な関係とを示す一時的な参照グラフの
例である。一時的な参照グラフ428に示されているように、オブジェクトのア
クセスは、メモリアクセスのログ420に示されるメモリアクセスの一時的な関
係に従って、グラフに配置される。次いで、一時的な参照グラフ428は、近い
時間にアクセスされるオブジェクトが互いに近く配置されるようにオブジェクト
の適切な配置を実現するために用いることができる。より詳細には、一時的な参
照グラフ428は、コピーによるガーベージコレクションの際にオブジェクトが
コピーされる順序を導くために用いられる。しかしながら、Chilimbiは
、対応するメモリアクセス内でアクセスされる特定のフィールドを無視している
ことに注意すべきである。さらに、ログの作成は、すべてのメモリ参照に対して
かなりのオーバーヘッドを必要とするため、時間とメモリリソースを必要とする
【0017】 Chilimbiは、メモリ内のオブジェクトを再配列する工程を開示してい
るが、これらのオブジェクト内でアクセスされる特定のフィールドは無視されて
いる。Chilimbiは、そのフィールドのアクセスを無視しているが、単一
のオブジェクト内でのフィールドの再配列は考慮されており、それについては、
図5A、図5B、および図5Cを参照して説明する。
【0018】 図5Aは、メモリおよび関連フィールドに格納されたオブジェクトのセットの
例を示すブロック図である。図示されているように、第1のオブジェクト500
(A)は、第1のフィールド502(y)と、第2のフィールド504(x)と
、第3のフィールド506(v)とを含む。さらに、第2のオブジェクト508
(B)は、第1のフィールド510(z)と、第2のフィールド512(w)と
を含む。
【0019】 図5Bは、図5Aのオブジェクトおよびフィールドにアクセスするコンピュー
タアプリケーションの実行中に作成できるメモリアクセスのログの例を示すブロ
ック図である。メモリアクセスのログ514では、メモリ内でアクセスされた各
オブジェクト516および関連のフィールド518が、識別および記録される。
例えば、図示されているように、第2のフィールド504(x)が第1のオブジ
ェクト500内でアクセスされた場合には、アクセスされたオブジェクト520
(A)とアクセスされたフィールド522(x)とが記録される。
【0020】 メモリアクセスのログが作成されると、そのログは、記録されたメモリアクセ
スの間の一時的な関係を決定するために用いられる。次いで、オブジェクト間の
参照の局所性をモデリングする一時的な参照グラフが作成される。図5Cは、図
5Bのログに示されたフィールド参照の間の一時的な関係を示す一時的な参照グ
ラフ524の例である。そのグラフ524は、アクセスされたオブジェクト間の
関係を示さずに、アクセスされたフィールド間の関係を示す。図示されているよ
うに、第1のオブジェクト500(A)の第1および第2のフィールド502(
x)および504(y)が、グラフ化される。次いで、一時的な参照グラフ52
4は、オブジェクトA内でフィールドxおよびyを再配列するために用いられる
。図示されているように、一次的な参照グラフ524は、フィールドxおよびy
の互いに対しての順序が不適切であることを示している。しかしながら、第3の
フィールド506(v)の格納は、xおよびyが互いに近くなるように、xおよ
びyの格納を妨げてはならない。このように、ある特定のオブジェクト内のフィ
ールドが再配列されてもよい。フィールドは、単一のオブジェクト内で再配列さ
れたが、フィールドアクセスは、それらのフィールドが参照するオブジェクトを
再配列するための解析を実行されていない。
【0021】 各メモリ参照を装備せずに、パスプロファイル作成を通して実行しているプロ
グラムが遭遇する制御フローのパスを装備することもできる。図6Aは、コンピ
ュータアプリケーションの実行中に可能なパスすべてを示すブロック図である。
この例では、各ブロックは1つ以上のコンピュータの命令を表している。ブロッ
ク600は、条件ステートメント602の前に実行される。例えば、条件ステー
トメント602は、if‐then‐elseステートメントでよい。if‐t
hen‐elseステートメントの結果によると、実行可能な分岐は2つである
。第1の分岐は、ブロック604および606を含む。第2の分岐は、ブロック
608および610を含む。
【0022】 パスプロファイル作成が実行されると、制御フローのパスが装備される。図6
Bは、図6Aのコンピュータアプリケーションに関連する可能なパスを示すパス
プロファイルの例を示す図である。図示されているように、Chilimbiで
実行されているように各ロードおよび格納のコマンドを実装せずに、ブロック6
12に示されたような決定点にコードが挿入される。制御フローのパスが実装さ
れているので、パスプロファイル作成は、各分岐(すなわち、パス)が採用され
た頻度を決定することができる。このように、パスプロファイル作成は、各パス
内に各ロードおよび格納のコマンドを実装するよりも、必要とするオーバーヘッ
ドが少ないという利点を持つ。
【0023】 上述の観点から、オブジェクトのフィールドへのアクセス速度を最大化するた
めに、コピーによるガーベージコレクションのようなプロセスを通して、メモリ
内のオブジェクトを再配列できることが望ましい。さらに、オブジェクトがコピ
ーされる順序を決定するために、パスプロファイル作成のようなプロセスを用い
て、オーバーヘッドを減らした状態で、オブジェクトのフィールドのアクセスの
頻度と近さを解析できることが有益である。
【0024】
【発明の概要】
本発明は、メモリからオブジェクトのフィールドのアクセスに関して得られた
情報に従って、メモリ内のオブジェクトを再配列するための機構を生成する。例
えば、これは、コピーによるガーベージコレクション中にフィールドのトラバー
スの順序を変更することによって実現できる。このように、メモリ内でオブジェ
クトを順序付けすることにより、後でオブジェクトをメモリからリトリーブする
速度を最小化することができる。
【0025】 本発明の一態様によると、メモリ内の複数のオブジェクトを再配列するための
機構が作成される。コンピュータアプリケーション実行中の複数のオブジェクト
に関する1つ以上のフィールドの互いに対してのメモリ内でのアクセス頻度が決
定される。次いで、複数のオブジェクトに関する1つ以上のフィールドの互いに
対してのメモリ内での決定されたアクセス頻度に従って、メモリ内で複数のオブ
ジェクトを再配列するための機構が生成される。
【0026】 本発明の一態様によると、生成された機構は、ガーベージコレクション中に複
数のオブジェクトを再配列するためのガーベージコレクションコードを含む。ガ
ーベージコレクションは、様々な方法で実装することができる。例えば、コピー
によるガーベージコレクション、または、コピーによるガーベージコレクション
の変形版を実行してもよい。
【0027】 本発明のさらに別の態様によると、単一のクラスの全インスタンスにわたるフ
ィールド参照の頻度と近さを示す情報から、メモリ内のオブジェクトを再配列す
るための機構を作成できる。一実施形態によると、ガーベージコレクション中に
オブジェクトのフィールドが訪問(VISIT)される順序を変更するための機
構が作成される。まず、クラスの全インスタンスに対して、フィールド参照情報
が取得される。但し、フィールド参照情報は、互いにそのクラスのフィールドに
よって参照されるオブジェクトの参照の頻度と近さを示すものである。次いで、
関連のフィールド参照情報からクラスフィールド順序が決定される。但し、クラ
スフィールド順序は、ガーベージコレクション中にそのクラスのフィールドがト
ラバースされる順序を特定するものである。このプロセスは、クラスフィールド
順序が各対応するクラスに関連するように、複数のクラスに対して繰り返しても
よい。
【0028】 本発明の別の態様によると、ガーベージコレクションは、再配列機構を用いて
実行される。一実施形態によると、オブジェクトが識別され、そのオブジェクト
に関するクラスが確認される。オブジェクトのクラスに関するクラスフィールド
順序が決定される。但し、クラスフィールド順序は、ガーベージコレクション中
にそのクラスのフィールドがトラバースされる順序を特定するものである。次い
で、オブジェクトのフィールドは、オブジェクトのクラスに関するクラスフィー
ルド順序に従って、ガーベージコレクション(例えば、コピーによるガーベージ
コレクション)中に訪問される。例えば、訪問された各フィールドに対して、直
接的もしくは間接的に指定された各オブジェクトをコピーしてもよい。
【0029】 本発明は、メモリ内におけるオブジェクトのフィールドの参照の近さと頻度を
示す情報に従って、オブジェクトを再配列することを可能とする。このように、
これらのフィールドによって参照されるそれらのオブジェクトを、ガーベージコ
レクション中にメモリ内で再配列することができる。このように、互いに近い時
間にアクセスされるオブジェクトを、メモリ内において近くに格納することがで
きる。このことは、特に、キャッシュを実装するシステムにおいて有利である。
何故なら、複数のオブジェクトが同じキャッシュラインにおいてリトリーブおよ
び格納される可能性が高くなるからである。したがって、互いに近くでアクセス
されるオブジェクトをリトリーブする時間を、劇的に短くすることができる。
【0030】
【発明の実施の形態】
以下の説明では、本発明の完全な理解を促すために、多くの詳細が具体的に示
されている。しかしながら、本発明がこれらの具体的な詳細なしに実現できるこ
とは、当業者にとって明らかである。また、本発明を不必要に不明瞭化しないよ
うに、周知のプロセス動作の説明は省略してある。
【0031】 本発明は、オブジェクトを、それらのオブジェクトのフィールドによって参照
される他のオブジェクトが参照される頻度に従って、メモリ内で再配列すること
を可能とする。一実施形態によると、これは、与えられたクラスの全インスタン
スにわたって、そのクラスのフィールドの参照(例えば、メモリアクセス)の頻
度を生成することにより実現される。
【0032】 さらに、一実施形態によると、パスプロファイル作成が用いられる。プロファ
イルは、例えばJavaプログラムの解釈中に、短時間で取得され、次いで、実
行時の間に少ないオーバーヘッドで、コンパイルされたコードから除去されるこ
とが可能である。このように、多くの時間とメモリを必要とせずに、オブジェク
トを再配列することができる。
【0033】 コピーによるガーベージコレクタは、様々な順序を選んでメモリ内のオブジェ
クトを配置することができる。一実施形態によると、アプリケーションによって
近い時間にアクセスされるオブジェクトは、コピーによるガーベージコレクショ
ンプロセスによって、同じキャッシュラインにまとめられる。
【0034】 本発明は、与えられたクラスの各オブジェクトに関するフィールド参照の頻度
を調べずに、一実施形態に従って、与えられたクラスの全インスタンスにわたっ
てフィールドアクセス(すなわち、フィールド参照)の頻度を一般化する。与え
られたクラスのオブジェクトは、同じ目的に用いられることが多いため、これら
のオブジェクトの振る舞いは、ほぼ同一であることが多い。そのため、単一のク
ラスの複数のインスタンスに関して実行されるメモリアクセスは、ほぼ同一であ
ることが多い。このことについては、図7Aないし7Cを参照して、さらに詳細
に説明する。
【0035】 図7Aは、単一のクラス700(A)のインスタンスのセットの例を示すブロ
ック図である。第1のインスタンス702(オブジェクトA1)と、第2のイン
スタンス704(オブジェクトA2)は両方とも、第1のフィールド706(x
)と、第2のフィールド708(y)とを含む。このように、単一のクラスの複
数のインスタンスは、同じフィールドを持つため、同じ種類のフィールドを持つ
【0036】 同じクラスのインスタンスは同じフィールドを持つため、これらのインスタン
スは、同じ状況で用いられる可能性がある。例えば、これらのオブジェクトは、
同じデータ構造で用いられることが多いため、これらのオブジェクトのフィール
ドに関するメモリアクセスは、ほぼ同じ頻度および順番で発生する。
【0037】 そのようなデータ構造の一例は、ツリーデータ構造である。図7Bは、ツリー
データ構造における図7Aのクラスインスタンスの使用例を示すブロック図であ
る。図示されているように、ツリーデータ構造710は、ルートノード712と
、2つの下位ノード714、716を含む。例えば、第1のインスタンス702
(オブジェクトA1)が第1の下位ノード714であり、第2のインスタンス7
04(オブジェクトA2)が第2の下位ノード716であってよい。ツリーデー
タ構造の下位ノードに関するメモリアクセスは通常、ほぼ同様であるため、単一
のクラスのインスタンスに関するメモリアクセスは、このインスタンス内のクラ
ス全体にわたって生成されてもよい。
【0038】 単一のクラスの複数のインスタンスが用いられるデータ構造の別の例は、リン
クリストである。図7Cは、リンクリストデータ構造における図7Aのクラスイ
ンスタンスの使用例を示すブロック図である。リンクリスト718は、3つのオ
ブジェクトを含むよう示されている。すなわち、第1のオブジェクト720と、
第2のオブジェクト722と、第3のオブジェクト724である。図示されてい
るように、リンクリスト718内の第1のオブジェクト720は、クラスAの第
1のインスタンス702であってよい。同様に、リンクリスト718内の第2の
オブジェクト722は、クラスAの第2のインスタンス704であってよい。リ
ンクリストの要素に関するメモリアクセスは通常、ほぼ同じ頻度で実行されるた
め、単一のクラスのインスタンスに関するメモリアクセスは、そのクラス全体に
わたって一般化されてよい。
【0039】 図8は、本発明の一実施形態に従って、互いに近い時間にアクセスされるフィ
ールドを持つオブジェクトがメモリにおいて近くに格納されるように、メモリ内
のオブジェクトを再配列するためのプロセスの概略を示すフローチャートである
。コンピュータアプリケーションは、ブロック802で実行される。コンピュー
タアプリケーションが実行されると、メモリ内のフィールド参照の記録(例えば
、フィールド参照のパスプロファイルまたはログ)が、ブロック804で生成さ
れる。次いで、ブロック806において、生成されたフィールド参照の記録(例
えば、フィールド参照のパスプロファイルまたはログ)を用いて、オブジェクト
がメモリ内で再配列される。例えば、オブジェクトは、コピーによるガーベージ
コレクションプロセスの間に再配列されてもよい。上述のプロセスが完了すると
、オブジェクトは、互いに近い時間にアクセスされるフィールドを持つオブジェ
クトが、メモリ内において近くに格納されるように再配列される。それ故、これ
らのオブジェクトは、データがメモリからキャッシュにリトリーブされる際に、
おそらく同じキャッシュラインに格納される。
【0040】 オブジェクトは、様々なプロセスを用いて、ブロック806においてメモリに
再配列されてもよい。一実施形態によると、図8のブロック804で記録された
フィールド参照の頻度と時間的な近さは、与えられたクラスの全インスタンスに
わたって一般化される。図9は、図8のブロック806に示されているメモリ内
のオブジェクトを再配列する方法の概略を示すフローチャートである。ブロック
902では、各クラスに対して、互いに時間の近いフィールドの参照の、図8の
ブロック804で生成された記録における発生が、フィールド順序付け情報を生
成するために、クラスの全インスタンスにわたって各フィールドに対してカウン
トされる。例えば、ある特定のクラス内でフィールド順序付け情報を生成するた
めに収集できるデータは、各フィールドのアクセス回数と、そのフィールドが同
じクラスの他のフィールドに関して参照したデータのアクセス間の時間と、同じ
クラスの他のフィールドに関するそのフィールドの参照の間の命令(もしくはメ
モリアクセス)の数と、およびクラスのフィールドがアクセスされる順序とを含
んでよい。次いで、フィールドは、ブロック904において、フィールド順序付
け情報に従ってソートされる。
【0041】 ガーベージコレクション中にトラバースされるオブジェクトは、ツリーもしく
は有向グラフのようなデータ構造に格納されてよい。例えば、オブジェクトは、
深さ優先順でコピーされてよい。コピーによるコレクションでは、どのオブジェ
クトもしくはオブジェクトのセットを次にコピーするかを決定するための機構が
必要である。換言すると、どのポインタが次にトラバースするかを決定するため
の機構が必要である。一実施形態によると、フィールド順序付け情報は、データ
構造内でトラバースするのに適切なパスを決定するために用いられる。そのよう
に、ガーベージコレクション中には、フィールドは、ブロック906において、
ソートされた順序でスキャンされる。各フィールドが「スキャン」されると、フ
ィールドによって(直接的もしくは間接的に)指定されたオブジェクトがコピー
される。換言すると、フィールドおよび/または関連のオブジェクトによって指
定されたオブジェクトがコピーされる。したがって、ガーベージコレクション中
に、各オブジェクトに対して、オブジェクトのクラスに関連するフィールド順序
付け情報に従って、フィールドがトラバースされ、ソートされたフィールド各々
によって(直接的もしくは間接的に)指定されたオブジェクトがコピーされる。
例えば、オブジェクトのコピーは、深さ優先で実行されてよい。
【0042】 上述のように、一実施形態によると、1つ以上のフィールドを持つオブジェク
トに対して、それらのフィールドは、コピーによるガーベージコレクション中に
適切なクラスに関するフィールド順序付け情報に従ってトラバースされる。図1
0は、オブジェクトのセットの例と、図9のブロック906で実行されるコピー
によるガーベージコレクション中のそれらのオブジェクトのメモリ内での配置と
を示す図である。ガーベージコレクションに先立って、それらのオブジェクトは
、メモリ1000内に格納される。図示されているように、第1のオブジェクト
1002(A)は、第1のフィールド1004(y)と、第2のフィールド10
06(x)とを含む。第1のフィールド1004(y)は、第2のオブジェクト
1008(B)を参照し、第2のフィールド1006は、第3のオブジェクト1
010(Q)を参照する。この例では、同じクラス内の他のフィールドに関する
フィールド参照の総数が決定され、フィールド参照の総数によってフィールドが
ソートされると、第1のフィールド1004(y)によって参照されるデータは
、第2のフィールド1006(x)によって参照されるデータよりも多くの回数
参照されるように検索される。それ故、コピーによるガーベージコレクションが
実行されると、第1のフィールド1004(y)によって参照されるオブジェク
トが、最初にコピーされる。次いで、第2のフィールド1006(x)によって
参照されるオブジェクトがコピーされる。したがって、図示されているように、
第2のオブジェクト1008(B)は、第1のオブジェクト1002(A)に最
も近くなるように、最初にコピーされ、第3のオブジェクト1010(Q)は、
次にコピーされる。
【0043】 オブジェクトを再配列する方法の概要は、図9および図10に関連して上述し
た。図11は、本発明の一実施形態に従って、メモリ内のオブジェクトを再配列
する方法の詳細を示すフローチャートである。この実施形態によると、効率をよ
くするために、ログではなくパスプロファイルが用いられる。それ故、ブロック
1102においては、各パスが実行時に採用される総回数を示す各パスのカウン
トを計算することを可能にするコードをコンピュータアプリケーションに挿入す
るために、コンピュータアプリケーションの制御フローが解析される。各パスに
対して、(同じクラス内の他のフィールドに関する)各フィールドの従属参照の
数が、ブロック1104において、各クラスに対して第1のテーブルを生成する
ために計算される。第1のテーブルの例については、図12を参照して、以下で
詳細に図示および説明する。ブロック1106において、実行時に採用された各
パスのカウントは、次に、各クラスに対して第2のテーブルを生成するために、
挿入されたコードを用いて計算される。第2のテーブルの例については、図13
を参照して、以下で詳細に図示および説明する。次いで、第1および第2のテー
ブルは、すべてのパスにわたって実行時の間に(同じクラス内の他のフィールド
に関する)各フィールドのフィールド参照の数を取得するために、ブロック11
08において結合される。第1および第2のテーブルの結合の結果については、
図14を参照して、以下で詳細に図示および説明する。次いで、フィールドは、
ブロック1110において、クラスに対するすべてのパスにわたるフィールド参
照の数によってクラスごとにソートされる。そのようなソートのプロセスの結果
については、図15を参照して、以下で詳細に図示および説明する。次いで、ソ
ートされた順序でメモリ内のオブジェクトのフィールドをトラバースし、フィー
ルドによって指定されたオブジェクトをコピーするガーベージコレクションコー
ドが、ブロック1112において生成される。次いで、ガーベージコレクション
は、ブロック1114において実行される。生成されたガーベージコレクション
コード(もしくは別の機構)を用いてガーベージコレクションを実行する方法の
詳細については、図17を参照して説明する。
【0044】 図11に図示された実施形態に示されているように、ブロック1102〜11
04は、コンパイル時1116の間に実行され、ブロック1106〜1114は
、実行時に実行される。しかしながら、Java(登録商標)では実行時にコンパ
イルが実行されることを認識することが重要である。それ故、上述の説明は例示
的なものであり、工程は、個々のコンパイルおよび実行プロセス中に実行される
必要はない。
【0045】 図11のブロック1104を参照して上述したように、(同じクラス内の他の
フィールドに関する)各フィールドの従属参照(すなわち、メモリアクセス)の
数は、各パスにわたって各クラスに対して第1のテーブルを生成するために計算
される。図12は、図11のブロック1104で生成される第1のテーブルの例
を示すブロック図である。図示されているように、ある特定のパス1202(例
えば、パス511)に対して、(同じクラス内の他のフィールドに関する)ある
特定のクラス内の各フィールド1206に対するそのパスに関するフィールド参
照1204の数は、テーブルのフォーマットで提供される。例えば、クラスA内
のフィールドy1208に対して、1210において、パス511に関する(フ
ィールドxについての)フィールド参照1208の数は2と示される。同様に、
クラスA内のフィールドx1212に対して、パス511に関する(フィールド
yについての)フィールド参照1214の数は0と示される。フィールド参照の
数は、フィールドの参照回数であるだけでなく、フィールド順序付け情報を含む
ことにも注意することが重要である。一例では、フィールド参照1204の数は
、ある特定のフィールドが、同じクラス内の別のフィールド直後に参照された(
すなわち、メモリからアクセスされた)回数を特定する。別の例では、フィール
ド参照1204の数は、ある特定のフィールドが、同じクラス内の別のフィール
ドの直前に参照された回数を特定する。他の例は、1つのフィールドに対して複
数のカウントがコンパイルされるように、ある特定のフィールドが、同じクラス
内の他のフィールド各々の前後に参照された回数をカウントする工程を含む。こ
のように、フィールド順序付け情報が最終的にコンパイルされてもよい。
【0046】 同様に、図11のブロック1106を参照して上述しているように、各パスが
実行時にトラバースされる回数がカウントされる。図13は、図11のブロック
1106で生成される第2のテーブルの例を示すブロック図である。図示されて
いるように、第2のテーブルは、各パス1302を識別し、識別されたパス13
02がコンピュータアプリケーションの実行中にトラバースされる回数を示す関
連のパスカウント1304を識別する。
【0047】 図12および図13に示されたような第1および第2のテーブルが作成される
と、図11のブロック1108を参照して上述したように、テーブルが結合され
る。図14は、図12および図13で示したようなテーブルから、図11のブロ
ック1108で生成される第3のテーブルの例を示すブロック図である。両テー
ブルが結合されると、ある特定のクラス内の各フィールド1402に対して、同
じクラスの他のフィールドに関するフィールドの参照1404の数が決定される
。例えば、図示されているように、クラスAのフィールドyに対して、クラスA
のフィールドxに関するすべてのパスにわたる実行時のフィールド参照の数は5
3である。換言すれば、この結果は、パスプロファイルではなくログが作成され
た場合に取得される結果と等しいはずである。同様に、図示されているように、
クラスAのフィールドxに対して、クラスAのフィールドyに関するすべてのパ
スにわたる実行時のフィールド参照の数は5である。上述のように、フィールド
参照の数は、同じクラスの他のフィールドに関する関連のフィールドのいくつか
の順序付け情報を示している。
【0048】 各クラスのフィールドがソートされると、フィールド順序付け情報が、各クラ
スのフィールドに関連付けられる。図15は、図11のブロック1110で示し
たフィールドをソートする工程の結果の例を示すブロック図である。例えば、ク
ラスA1502に対して、各フィールド1504がソートされる。結果として、
フィールドx1506は、コピーによるガーベージコレクション中に最初にトラ
バースされ、フィールドy1508は、コピーによるガーベージコレクション中
に2番目にトラバースされる。同様に、クラスB1510に対して、各フィール
ド1512がソートされる。結果として、フィールドz1514は、コピーによ
るガーベージコレクション中に最初にトラバースされ、フィールドw1516は
、コピーによるガーベージコレクション中に2番目にトラバースされる。
【0049】 ガーベージコレクションプロセス中にコピーされるオブジェクトは、ツリーも
しくは有向グラフのようなデータ構造に格納されてよい。図16は、ガーベージ
コレクションプロセス中にトラバースできるデータ構造の例を示す図である。図
示されているように、ガーベージコレクションプロセスは、ルートノードまたは
ルートポインタ1600から開始する。例えば、ルートポインタ1600は、ス
タックから取得されてもよいし、静的変数であってもよい。ルートポインタは、
第1のオブジェクト1602を指定する図示されているように、各オブジェクト
1602、1604、1606、1608、および1610は、オブジェクトに
関するクラスのフィールド順序に関連付けられた(すなわち、フィールド順序を
指定する)オブジェクトヘッダを持つ。例えば、図示されているように、第1の
オブジェクト1602は、クラスA1612に関連付けられている。各クラスの
記述には、オフセットのリスト(図示せず)が通常、格納される。オフセット各
々は、ある特定のフィールドに関連付けられている。さらに、各クラスは、関連
のオブジェクトのフィールドが、コピーによるガーベージコレクションのような
ガーベージコレクションプロセス中にトラバースされる順序を識別するクラスの
フィールドに対する関連のフィールド順序を持つ。例えば、クラスA1612に
対するフィールド順序1614は、フィールドxがフィールドyに先立ってトラ
バースされることを特定してもよい。同様に、図16に示されているように、第
4のオブジェクト1604および第3のオブジェクト1608は両方とも、クラ
スB1616に関連付けられている。クラスB1616は、フィールドzがフィ
ールドwの前にトラバースされることを特定する関連のフィールド順序1618
を持つ。それ故、第4のオブジェクト1604に関して、例えば、フィールドz
によって指定される第2のオブジェクト1606は、フィールドwによって指定
される第5のオブジェクト1610に先立ってトラバースされ、コピーされる。
【0050】 図11のブロック1114を参照して上述したように、ガーベージコレクショ
ンプロセスは、各関連のクラスに関するフィールド順序付け情報を用いて実行さ
れる。より詳細には、ガーベージコレクション(例えば、コピーによるコレクシ
ョン)中にコピーされる各オブジェクトに対して、オブジェクトのクラスが決定
され、オブジェクトのフィールドが、オブジェクトのクラスに関するフィールド
順序付け情報に従ってコピーによるコレクション中に訪問される。図17は、図
15に示されたようなソートプロセスの結果と、図16に示されたようなオブジ
ェクトのデータ構造とを用いて、図11のブロック1114に示したようにガー
ベージコレクションを実行する一方法を示すフローチャートである。プロセスは
、ブロック1700で始まる。例えば、上述のように、プロセスはルートノード
またはルートポインタで開始してよい。次いで、現在のポインタ(例えば、ルー
トポインタ)によって指定されるオブジェクトが、ブロック1702において取
得される。次いで、取得されたオブジェクトのクラスが、ブロック1704にお
いて決定される。例えば、オブジェクトのヘッダは、図16に示すようにクラス
を指定してもよい。それ故、オブジェクトヘッダから関連のクラスへポインタを
追跡することにより、オブジェクトのクラスを確認してもよい。次に、クラス/
オブジェクトが、トラバースされるいくつかの(または、さらなる)フィールド
を持っているか否かが、ブロック1706において決定される。
【0051】 オブジェクトが、トラバースすべきいくつかの、もしくは、いくつかの/さら
なるフィールドを持っている場合、オブジェクトはブロック1708においてコ
ピーされる。そうでない場合には、クラスフィールド順序付け情報で識別される
次のフィールドが、ブロック1710において確認される。例えば、クラスの記
述には通常、そのクラスのフィールドに関するオフセットのリストが含まれる。
取得されたオブジェクトのフィールドの位置を特定するために、識別された次の
フィールドのためのオフセットが、この記述から取得されてもよい。
【0052】 次に、オブジェクトの認識されたフィールドが第2のオブジェクトを指定する
か否かが、ブロック1712において決定される。そうである場合、ブロック1
714において、第2のオブジェクトが(例えば、再帰的プロセスによって)取
得される。オブジェクトの識別されたフィールドが第2のオブジェクトを指定し
ない場合、そのオブジェクトに関するさらなるフィールドに対して、プロセスは
ブロック1706を継続する。プロセスが再帰的に実行されると、トラバースさ
れているデータ構造内の各オブジェクトは、最終的に、ブロック1708におい
てコピーされる。
【0053】 本発明は、互いに近い時間にアクセスされるフィールドを持つオブジェクトが
、近くに格納される可能性を最大化するように、メモリ内にオブジェクトを格納
するために用いられてもよい。図18は、メモリ内におけるオブジェクトの最適
な構成を実現するための本発明の使用方法を示す図である。図示されているよう
に、メインメモリ1802は、データのブロック1804内にオブジェクトを格
納する。例えば、データの各ブロックは、32バイトでよい。本発明を用いるこ
とにより、メインメモリ1802内のデータの単一のブロック1804に、第1
のオブジェクト1806(A)と、第2のオブジェクト1808(B)とを格納
することができる。CPU1808が、データのこのブロック1804をキャッ
シュ1810にコピーすると、オブジェクト1806および1808は、同じキ
ャッシュライン1812(もしくは、1セットのキャッシュライン)に格納され
る。したがって、本発明を用いると、データの単一のブロックがメインメモリ1
802からリトリーブされる際に、複数のオブジェクトが1つのキャッシュ内に
同時に格納されることを可能にすることにより、互いに近い時間にアクセスされ
るフィールドを持つオブジェクトの効率的なアクセスを実現できる。
【0054】 オブジェクトごとの局所性の情報を集めるのではなく、本発明は、クラスごと
の局所性の情報を集めるため、オブジェクトとフィールドの種類を区別する。換
言すると、本発明は、与えられたクラスのインスタンスが、おそらく同様のロー
ド依存性を持つという観察を利用している。これは、一実施形態によると、パス
プロファイル作成と、コピーによるコレクション中に、与えられたクラスのフィ
ールドが訪問される順序を動的に変更するための機構とによって実現される。
【0055】 本発明は、任意の適切なコンピュータシステムに実装してよい。図19は、本
発明を実装するのに適した代表的な汎用コンピュータシステム1902を示した
図である。このコンピュータシステムは、任意の適切な形態をとってよい。例え
ば、コンピュータシステムは、デジタルテレビ受信機またはセットトップボック
スと統合されていてもよい。
【0056】 コンピュータシステム1902、すなわち具体的に言うとCPU1904は、
当業者が理解するとおり、バーチャルマシンをサポートするよう構成されてもよ
い。コンピュータシステム1902は、一次記憶デバイス1906(通常、読み
出し専用メモリすなわちROM)と一次記憶デバイス1908(通常、ランダム
アクセスメモリすなわちRAM)とを含むメモリデバイスに接続された任意の数
のプロセッサ1904(中央処理装置すなわちCPUとも呼ばれる)を備えてい
る。当業者に周知のように、ROMは、CPU1904にデータおよび命令を一
方向的に転送するよう機能し、RAMは通常、データおよび命令を二方向的に転
送するのに用いられる。両方の一次記憶デバイス1906および1908は、任
意の適切なコンピュータ読み取り可能媒体を含んでいてよい。CPU1904は
、一般に、任意の数のプロセッサを含んでいて良い。
【0057】 二次記憶媒体1910は、通常はマスメモリデバイスであり、二方向的にCP
U1904に接続され、データ記憶容量を補っている。マスメモリデバイス19
10は、コンピュータコード、データなどを含むプログラムを格納するのに用い
ることが可能なコンピュータ読み取り可能な媒体である。通常、マスメモリデバ
イス1910は、一般に一次記憶デバイス1906および1908よりも低速な
ハードディスクなどの記憶媒体である。
【0058】 また、CPU1904は、ビデオモニタ、トラックボール、マウス、キーボー
ド、マイクロフォン、タッチセンシティブディスプレイ、トランスデューサカー
ドリーダ、磁気もしくは紙テープリーダ、タブレット、スタイラス、音声もしく
は手書き文字認識装置、もしくは、もちろん他のコンピュータのようなその他の
よく知られた入力デバイス、を含むがそれらに限定されない1つ以上の入出力デ
バイス1912に接続されてもよい。最後に、CPU1904は、1914に大
まかに示されているネットワーク接続を用いて、コンピュータや、例えばインタ
ーネットネットワークもしくはイントラネットネットワークなどの通信ネットワ
ークに随意的に接続されてもよい。このようなネットワーク接続により、CPU
1904は、上述した方法の段階を実行している間に、ネットワークから情報を
受信したりネットワークに情報を出力したりすることができると予期される。こ
のような情報は、CPU1904を用いて実行される命令のシーケンスであるこ
とが多く、例えば搬送波で運ばれるコンピュータデータ信号の形で、ネットワー
クから受信したりネットワークに出力したりしてよい。
【0059】 本明細書では、本発明の例示的な実施形態および用途を説明しているが、本発
明の概念、範囲、および趣旨の範囲内で多くの変更を加えることが可能であり、
これらの変更は、本出願を熟読した当業者にとって明らかである。例えば、本発
明は、デジタルテレビ受信機に実装した例によって説明されている。しかしなが
ら、本発明は、他の状況で用いられてもよい。さらに、本発明は、JAVA(登
録商標)プラットフォームに実装した例によって説明されているが、別のプラッ
トフォームに実装されてもよい。さらに、上述したプロセスのブロックは、単に
例示的なものである。したがって、本発明の実装は、代替のデータ構造はもちろ
ん、代替のプロセスのブロックを用いて実行されてもよい。したがって、上述し
た実施形態は、例示を目的としたものであって限定的ではなく、本発明は、本明
細書で取り上げた項目に限定されず、添付した請求項の範囲および均等物の範囲
内で変更することが可能である。
【図面の簡単な説明】
【図1A】 従来のマーク・アンド・スイープによるガーベージコレクションのプロセスに
おけるメモリ内のオブジェクトの配置を示すブロック図である。
【図1B】 従来のマーク・アンド・スイープによるガーベージコレクションプロセスの完
了時における図1Aのメモリを示すブロック図である。
【図2A】 従来のコピーによるガーベージコレクションのプロセスにおけるメモリ内のオ
ブジェクトを示すブロック図である。
【図2B】 従来のコピーによるガーベージコレクションプロセスの完了時における図2A
のメモリを示すブロック図である。
【図3A】 メモリ内のオブジェクトの構成例を示すブロック図である。
【図3B】 コピーによるガーベージコレクションの完了時における図3Aのオブジェクト
の1つの可能な構成を示すブロック図である。
【図3C】 コピーによるガーベージコレクションの完了時における図3Aのオブジェクト
の別の可能な構成を示すブロック図である。
【図4A】 メモリおよび関連フィールドに格納されたオブジェクトのセットの例を示すブ
ロック図である。
【図4B】 図4Aのオブジェクトおよびフィールドにアクセスするコンピュータアプリケ
ーションの実行中に作成できるメモリアクセスのログの例を示すブロック図であ
る。
【図4C】 メモリ内のオブジェクトのアクセスと、図4Bに示されているメモリアクセス
のログから作成できるこれらのメモリアクセスの一時的な関係とを示す一時的な
参照グラフの例である。
【図5A】 メモリおよび関連フィールドに格納されたオブジェクトのセットの例を示すブ
ロック図である。
【図5B】 図5Aのオブジェクトおよびフィールドにアクセスするコンピュータアプリケ
ーションの実行中に作成できるメモリアクセスのログの例を示すブロック図であ
る。
【図5C】 図5Bのログに示されたフィールド参照の間の一時的な関係を示す一時的な参
照グラフの例である。
【図6A】 コンピュータアプリケーションの実行中に可能なパスすべてを示すブロック図
である。
【図6B】 図6Aのコンピュータアプリケーションに関連する可能なパスを示すパスプロ
ファイルの例を示す図である。
【図7A】 単一のクラス(A)のインスタンスのセットの例を示すブロック図である。
【図7B】 ツリーデータ構造における図7Aのクラスインスタンスの使用例を示すブロッ
ク図である。
【図7C】 リンクリストデータ構造における図7Aのクラスインスタンスの使用例を示す
ブロック図である。
【図8】 本発明の一実施形態に従って、互いに近い時間にアクセスされるフィールドを
持つオブジェクトがメモリにおいて近くに格納されるように、メモリ内のオブジ
ェクトを再配列するためのプロセスの概略を示すフローチャートである。
【図9】 図8のブロック806に示されているメモリ内のオブジェクトを再配列する方
法の概略を示すフローチャートである。
【図10】 図9のブロック906で実行されるコピーによるガーベージコレクションの完
了時のオブジェクトのセットの例を示す図である。
【図11】 本発明の一実施形態に従って、メモリ内のオブジェクトを再配列する方法の詳
細を示すフローチャートである。
【図12】 図11のブロック1104で生成される第1のテーブルの例を示すブロック図
である。
【図13】 図11のブロック1106で生成される第2のテーブルの例を示すブロック図
である。
【図14】 図12および図13で示したようなテーブルから、図11のブロック1108
で生成される第3のテーブルの例を示すブロック図である。
【図15】 図11のブロック1110で示したフィールドをソートする工程の結果の例を
示すブロック図である。
【図16】 ガーベージコレクションプロセス中にトラバースできるデータ構造の例を示す
図である。
【図17】 図15に示されたようなソートプロセスの結果と、図16に示されたようなオ
ブジェクトのデータ構造とを用いて、図11のブロック1114に示したように
ガーベージコレクションを実行する一方法を示すフローチャートである。
【図18】 キャッシュ内でのオブジェクトのアクセスを効率化するようなメモリ内におけ
るオブジェクトの格納を実現するための本発明の使用法を示す図である。
【図19】 本発明の実装に適した代表的な汎用コンピュータシステムを示したブロック図
である。
【符号の説明】
102…オブジェクト 104…オブジェクト 106…オブジェクト 108…オブジェクト 200…メモリ 202…第1のオブジェクト 204…第2のオブジェクト 206…第3のオブジェクト 208…第4のオブジェクト 300…メモリ 302…第1のオブジェクト 304…第2のオブジェクト 306…第3のオブジェクト 308…第4のオブジェクト 400…第1のオブジェクト 402…第1のフィールド 404…第2のフィールド 406…第2のオブジェクト 408…第1のフィールド 410…第2のフィールド 412…第3のオブジェクト 414…フィールド 416…第4のオブジェクト 418…フィールド 420…メモリアクセスのログ 422…オブジェクト 426…エントリ 428…一時的な参照グラフ 500…第1のオブジェクト 502…第1のフィールド 504…第2のフィールド 506…第3のフィールド 508…第2のオブジェクト 510…第1のフィールド 511…パス 512…第2のフィールド 514…メモリアクセスのログ 516…オブジェクト 518…フィールド 520…アクセスされたオブジェクト 522…アクセスされたフィールド 524…一時的な参照グラフ 602…条件ステートメント 700…クラス 702…第1のインスタンス 704…第2のインスタンス 706…第1のフィールド 708…第2のフィールド 710…ツリーデータ構造 712…ルートノード 714…下位ノード 716…下位ノード 718…リンクリスト 720…第1のオブジェクト 722…第2のオブジェクト 724…第3のオブジェクト 1000…メモリ 1002…第1のオブジェクト 1004…第1のフィールド 1006…第2のフィールド 1008…第2のオブジェクト 1010…第3のオブジェクト 1202…パス 1204…フィールド参照 1206…フィールド 1208…フィールド 1212…フィールド 1214…フィールド参照 1302…パス 1304…パスカウント 1402…フィールド 1404…フィールド参照 1502…クラス 1504…フィールド 1506…フィールド 1508…フィールド 1510…クラス 1512…フィールド 1514…フィールド 1516…フィールド 1600…ルートポインタ 1602…第1のオブジェクト 1604…第4のオブジェクト 1606…第2のオブジェクト 1608…第3のオブジェクト 1610…第5のオブジェクト 1612…クラス 1614…フィールド順序 1616…クラス 1618…フィールド順序 1802…メインメモリ 1804…データのブロック 1806…オブジェクト 1808…オブジェクト 1808…CPU 1810…キャッシュ 1812…キャッシュライン 1902…コンピュータシステム 1904…プロセッサ 1906…一次記憶デバイス 1908…一次記憶デバイス 1910…二次記憶媒体 1912…入出力デバイス 1914…ネットワーク 1930…コンピュータシステム 1932…CPU
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE,TR),OA(BF ,BJ,CF,CG,CI,CM,GA,GN,GW, ML,MR,NE,SN,TD,TG),AP(GH,G M,KE,LS,MW,MZ,SD,SL,SZ,TZ ,UG,ZW),EA(AM,AZ,BY,KG,KZ, MD,RU,TJ,TM),AE,AG,AL,AM, AT,AU,AZ,BA,BB,BG,BR,BY,B Z,CA,CH,CN,CR,CU,CZ,DE,DK ,DM,DZ,EE,ES,FI,GB,GD,GE, GH,GM,HR,HU,ID,IL,IN,IS,J P,KE,KG,KP,KR,KZ,LC,LK,LR ,LS,LT,LU,LV,MA,MD,MG,MK, MN,MW,MX,MZ,NO,NZ,PL,PT,R O,RU,SD,SE,SG,SI,SK,SL,TJ ,TM,TR,TT,TZ,UA,UG,US,UZ, VN,YU,ZA,ZW (72)発明者 グラルプ・ステファン アメリカ合衆国 カリフォルニア州94022 ロス・アルトス,デルモンテ・アベニュ ー,67 Fターム(参考) 5B060 AA10

Claims (30)

    【特許請求の範囲】
  1. 【請求項1】 メモリ内の複数のオブジェクトを再配列するための機構を生
    成する方法であって、 コンピュータアプリケーションの実行中において、前記複数のオブジェクトに
    関する1つ以上のフィールドが相互に参照するデータのメモリ内でのアクセスの
    頻度を決定する工程と、 前記複数のオブジェクトに関する前記1つ以上のフィールドが相互に参照する
    データのメモリ内でのアクセスの前記決定された頻度に従って、前記メモリ内の
    前記複数のオブジェクトを再配列するための機構を生成する工程と、 を備える生成方法。
  2. 【請求項2】 請求項1記載の機構生成方法であって、 前記機構を生成する工程は、ガーベージコレクション中に前記複数のオブジェ
    クトを再配列するためのガーベージコレクションコードを生成する工程を含む、
    生成方法。
  3. 【請求項3】 ガーベージコレクション中において、1つ以上のクラスに関
    連付けられた複数のオブジェクトの複数のフィールドが訪問される順序を変更す
    るための機構を生成する方法であって、 前記1つ以上のクラスのうちの1つのクラスの全インスタンスに対するフィー
    ルド参照情報であって、前記1つ以上のクラスのうちの前記1つのクラスの複数
    のフィールドの相互参照の頻度と近さとを示すフィールド参照情報を取得する工
    程と、 前記1つ以上のクラスのうちの前記1つのクラスのためのクラスフィールド順
    序であって、前記関連するクラスの複数のフィールドがガーベージコレクション
    中にトラバースされる順序を識別するためのクラスフィールド順序を、前記関連
    するフィールド参照情報から決定する工程と、 を備える生成方法。
  4. 【請求項4】 請求項3記載の機構生成方法であって、さらに、 前記クラスフィールド順序を前記複数のクラスのうちの前記1つのクラスに関
    連付ける工程を備える、生成方法。
  5. 【請求項5】 請求項3記載の機構生成方法であって、さらに、 前記1つ以上のクラスに対して前記取得の工程と前記決定の工程とを繰り返す
    工程を備える、生成方法。
  6. 【請求項6】 メモリ内の1つ以上のクラスに関連付けられた複数のオブジ
    ェクトを再配列するための機構を生成する方法であって、 前記1つ以上のクラスのうちの選択された1つのクラスに関する複数のフィー
    ルドに参照されるデータのメモリ内でのアクセス回数であって、前記1つ以上の
    クラスのうちの前記選択された1つのクラスに関する複数のフィールドのうちの
    残りによって参照されるデータに関するアクセス回数を確認する工程と、 前記1つ以上のクラスのうちの前記選択された1つのクラスに関するクラスフ
    ィールド順序であって、前記1つ以上のクラスのうちの前記選択された1つのク
    ラスの複数のフィールドがガーベージコレクション中にトラバースされる順序を
    識別するクラスフィールド順序を、前記関連するアクセス回数から決定する工程
    と、 前記1つ以上のクラスの各々に対して前記確認の工程と前記決定の工程とを繰
    り返す工程と、 を備える生成方法。
  7. 【請求項7】 請求項6記載の機構生成方法であって、さらに、 前記関連するクラスフィールド順序に従って、各クラスに関する前記フィール
    ドをソートする工程を備える、生成方法。
  8. 【請求項8】 請求項6記載の機構生成方法であって、 前記アクセス回数は、前記複数のフィールドによって参照されるデータのメモ
    リ内でのアクセスの頻度と近さとを示す、生成方法。
  9. 【請求項9】 請求項6記載の機構生成方法であって、 前記アクセス回数は、前記選択されたクラスの前記複数のフィールドの各々が
    、前記選択されたクラス内の別のフィールドの直後に参照される回数を特定する
    、生成方法。
  10. 【請求項10】 請求項6記載の機構生成方法であって、 前記アクセスの数は、前記選択されたクラスの前記複数のフィールドの各々が
    、前記選択されたクラス内の別のフィールドの直前に参照される回数を特定する
    、生成方法。
  11. 【請求項11】 請求項6記載の機構生成方法であって、 前記アクセス回数は、前記選択されたクラスの前記複数のフィールドの各々が
    、前記選択されたクラス内の別のフィールドの後に参照される回数を特定する、
    生成方法。
  12. 【請求項12】 請求項6記載の機構生成方法であって、 前記アクセス回数は、前記選択されたクラスの前記複数のフィールドの各々が
    、前記選択されたクラス内の別のフィールドの前に参照される回数を特定する、
    生成方法。
  13. 【請求項13】 請求項6記載の機構生成方法であって、 前記選択されたクラスに関する複数のフィールドのメモリ内でのアクセス回数
    を確認する工程は、 前記選択されたクラスの前記複数のフィールドのうちの1つが、前記選択され
    たクラスの前記複数のフィールドの他の各々に関して参照される回数を、前記複
    数のフィールドのうちの前記1つに対して1つ以上のカウントが生成されるよう
    にカウントする工程と、 前記選択されたクラスに関する前記複数のフィールドの各々に対して前記カウ
    ントの工程を繰り返す工程と、 前記複数のフィールドの各々に関する前記1つ以上のカウントから前記クラス
    フィールド順序を生成する工程と、 を含む生成方法。
  14. 【請求項14】 請求項6記載の機構生成方法であって、さらに、 コンピュータアプリケーションの実行中に前記1つ以上のクラスに関する前記
    複数のフィールドのメモリ内での前記アクセスの記録を生成する工程を備える、
    生成方法。
  15. 【請求項15】 請求項14記載の機構生成方法であって、 前記1つ以上のクラスに関する前記複数のフィールドのメモリ内での前記アク
    セスの記録を生成する工程は、前記コンピュータアプリケーションの実行中にメ
    モリ内での前記アクセスのログを生成する工程を含む、生成方法。
  16. 【請求項16】 請求項14記載の機構生成方法であって、 前記1つ以上のクラスに関する前記複数のフィールドのメモリ内での前記アク
    セスの記録を生成する工程は、パスプロファイル生成を実行する工程を含む、生
    成方法。
  17. 【請求項17】 請求項14記載の機構生成方法であって、さらに、 各パスが前記コンピュータアプリケーションの実行中に採用される総回数を示
    すカウントを計算することを可能にするコンピュータコードを前記コンピュータ
    アプリケーションに挿入する工程と、 前記パスの各々に対して前記クラスのうちの前記同一の1つの内の他の複数の
    フィールドに関する各フィールドの参照の数を決定する工程と、 前記コンピュータアプリケーションの実行中に採用される前記パスの各々の前
    記カウントを計算するために、前記挿入されたコンピュータコードを用いる工程
    と、 前記関連するクラスのための前記クラスフィールド順序を決定するために、前
    記パスの各々に対して前記クラスのうちの前記同一の1つのクラス内の他の複数
    のフィールドに関する各フィールドの前記決定された参照数を、前記コンピュー
    タアプリケーションの実行中に採用された前記パスの各々の前記計算されたカウ
    ントと結合する工程と、 を備える生成方法。
  18. 【請求項18】 請求項6記載の機構生成方法であって、さらに、 前記1つ以上のクラスに関する前記クラスフィールド順序に従って、前記メモ
    リ内の前記複数のオブジェクトを再配列する工程を備える、生成方法。
  19. 【請求項19】 請求項18記載の機構生成方法であって、 前記再配列の工程は、ガーベージコレクション処理中に実行される、生成方法
  20. 【請求項20】 請求項19記載の機構生成方法であって、 前記ガーベージコレクション処理は、コピーによるガーベージコレクション処
    理である、生成方法。
  21. 【請求項21】 請求項6記載の機構生成方法であって、さらに、 前記関連するクラスの前記クラスフィールド順序に従って、メモリ内の複数の
    オブジェクトの複数のフィールドをトラバースするガーベージコレクションコー
    ドを生成する工程を備える、生成方法。
  22. 【請求項22】 請求項21記載の機構生成方法であって、 前記生成されたガーベージコレクションコードは、オブジェクトのクラスを決
    定するとともに、前記複数のオブジェクトの前記クラスの前記クラスフィールド
    順序に従ってコピーによるコレクション中に前記オブジェクトの前記複数のフィ
    ールドを訪問する、生成方法。
  23. 【請求項23】 メモリ内に格納された複数のオブジェクトのセットに対し
    てガーベージコレクションを実行する方法であって、 メモリ内の複数のオブジェクトの前記セットのうちの1つを識別する工程と、 前記オブジェクトのクラスを確認する工程と、 前記オブジェクトの前記クラスに関するクラスフィールド順序であって、前記
    オブジェクトの前記クラスの複数のフィールドがガーベージコレクション中にト
    ラバースされる順序を識別するクラスフィールド順序を決定する工程と、 前記オブジェクトの前記クラスに関する前記クラスフィールド順序に従って、
    ガーベージコレクション中に前記オブジェクトの前記複数のフィールドを訪問す
    る工程と、 を備える実行方法。
  24. 【請求項24】 請求項23記載のガーベージコレクション実行方法であっ
    て、さらに、 前記訪問された複数のフィールドに関連付けられた複数のオブジェクトをコピ
    ーする工程を備える、実行方法。
  25. 【請求項25】 請求項24記載の方法であって、複数のオブジェクトをコ
    ピーする工程は、前記訪問された複数のフィールドによって直接的または間接的
    に指定された各オブジェクトをコピーする工程を含む、方法。
  26. 【請求項26】 メモリ内の1つ以上のクラスに関連付けられた複数のオブ
    ジェクトを再配列するための機構を作成するためのコンピュータ読み取り可能な
    記録媒体であって、 前記1つ以上のクラスのうちの選択された1つのクラスに関する複数のフィー
    ルドに参照されるデータのメモリ内でのアクセス回数であって、前記1つ以上の
    クラスのうちの前記選択された1つのクラスに関する複数のフィールドのうちの
    残りによって参照されるデータに関するアクセス回数を確認するためのコンピュ
    ータ命令と、 前記1つ以上のクラスのうちの前記選択された1つに関するクラスフィールド
    順序であって、前記1つ以上のクラスのうちの前記選択された1つのクラスの複
    数のフィールドがガーベージコレクション中にトラバースされる順序を識別する
    クラスフィールド順序を、前記複数のフィールドのメモリ内での前記関連するア
    クセス頻度から決定するためのコンピュータ命令と、 前記1つ以上のクラスの各々に対して前記確認の工程と前記決定の工程とを繰
    り返すためのコンピュータ命令と、 を含む記録媒体。
  27. 【請求項27】 請求項26記載のコンピュータ読み取り可能な媒体であっ
    て、さらに、 前記関連のクラスの前記クラスフィールド順序に従って、メモリ内の複数のオ
    ブジェクトの複数のフィールドをトラバースするガーベージコレクションコード
    を生成するためのコンピュータ命令を含む、媒体。
  28. 【請求項28】 メモリ内の1つ以上のクラスに関連付けられた複数のオブ
    ジェクトを再配列するための機構を生成するためのシステムであって、 プロセッサと、 コンピュータ命令を格納するメモリとを含み、 前記コンピュータ命令は、 前記1つ以上のクラスのうちの選択された1つのクラスに関する複数のフィー
    ルドに参照されるデータのメモリ内でのアクセス回数であって、前記1つ以上の
    クラスのうちの前記選択された1つのクラスに関する複数のフィールドのうちの
    残りによって参照されるデータに関するアクセス回数を確認するためのコンピュ
    ータ命令と、 前記1つ以上のクラスのうちの前記選択された1つに関するクラスフィールド
    順序であって、前記1つ以上のクラスのうちの前記選択された1つのクラスの複
    数のフィールドがガーベージコレクション中にトラバースされる順序を識別する
    クラスフィールド順序を、前記複数のフィールドのメモリ内での前記関連するア
    クセス頻度から決定するためのコンピュータ命令と、 前記1つ以上のクラスの各々に対して前記確認の工程と前記決定の工程とを繰
    り返すためのコンピュータ命令と、 を含むシステム。
  29. 【請求項29】 請求項28記載の機構生成システムであって、 前記メモリは、さらに、前記関連するクラスの前記クラスフィールド順序に従
    って、メモリ内の複数のオブジェクトの複数のフィールドをトラバースするガー
    ベージコレクションコードを生成するためのコンピュータ命令を格納する、シス
    テム。
  30. 【請求項30】 請求項28記載の機構生成システムであって、 前記機構生成システムは、Javaプラットフォームに実装される、システム
JP2001550562A 2000-01-05 2001-01-02 メモリ管理によって参照の局所性を改善するための方法および装置 Expired - Lifetime JP4812997B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US17474400P 2000-01-05 2000-01-05
US60/174,744 2000-01-05
US09/618,981 US6594678B1 (en) 2000-01-05 2000-07-19 Methods and apparatus for improving locality of reference through memory management
US09/618,981 2000-07-19
PCT/US2001/000055 WO2001050270A2 (en) 2000-01-05 2001-01-02 Methods and apparatus for improving locality of reference through memory management

Publications (2)

Publication Number Publication Date
JP2003519834A true JP2003519834A (ja) 2003-06-24
JP4812997B2 JP4812997B2 (ja) 2011-11-09

Family

ID=26870506

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001550562A Expired - Lifetime JP4812997B2 (ja) 2000-01-05 2001-01-02 メモリ管理によって参照の局所性を改善するための方法および装置

Country Status (8)

Country Link
US (1) US6594678B1 (ja)
EP (1) EP1244969A2 (ja)
JP (1) JP4812997B2 (ja)
KR (1) KR20020067595A (ja)
CN (1) CN1214325C (ja)
AU (1) AU2754001A (ja)
CA (1) CA2396768A1 (ja)
WO (1) WO2001050270A2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005100402A (ja) * 2003-09-23 2005-04-14 Microsoft Corp オブジェクト指向プログラムのための領域ベースのメモリ管理
JP2006085300A (ja) * 2004-09-14 2006-03-30 Kansai Tlo Kk データ処理方法、データ処理装置及びコンピュータプログラム
JP2006092532A (ja) * 2004-09-10 2006-04-06 Microsoft Corp 最近アクセスしたリソースのデータ局所性の増加
JP2009535682A (ja) * 2006-04-28 2009-10-01 インターナショナル・ビジネス・マシーンズ・コーポレーション スコープ・メモリ・システム内での参照の作成

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6862729B1 (en) * 2000-04-04 2005-03-01 Microsoft Corporation Profile-driven data layout optimization
US6879991B2 (en) * 2000-12-11 2005-04-12 International Business Machines Corporation Synchronous collection of cyclic garbage in reference counting systems
US7062756B2 (en) * 2001-11-30 2006-06-13 Sun Microsystems, Inc. Dynamic object usage pattern learning and efficient caching
US7398531B2 (en) * 2002-05-07 2008-07-08 Oracle International Corporation Providing common memory management code to objects that are instances of different classes
US7310799B2 (en) * 2002-12-31 2007-12-18 International Business Machines Corporation Reducing load instructions via global data reordering
US7020746B2 (en) * 2003-01-28 2006-03-28 Microsoft Corporation Method and system for an atomically updated, central cache memory
GB2399897B (en) * 2003-03-26 2006-02-01 Advanced Risc Mach Ltd Memory recycling in computer systems
US7424498B1 (en) 2003-06-30 2008-09-09 Data Domain, Inc. Probabilistic summary data structure based encoding for garbage collection
US7451168B1 (en) 2003-06-30 2008-11-11 Data Domain, Inc. Incremental garbage collection of data in a secondary storage
US9092558B2 (en) * 2004-04-05 2015-07-28 International Business Machines Corporation Grouping frequently referenced data items to co-locate for cache utilization
US20070162508A1 (en) * 2004-11-08 2007-07-12 Mazzagatti Jane C Updating information in an interlocking trees datastore
CN100367241C (zh) * 2005-03-05 2008-02-06 腾讯科技(深圳)有限公司 一种数据存储的方法、系统及设备
US8171006B1 (en) 2007-12-21 2012-05-01 Emc Corporation Retrieval of searchable and non-searchable attributes
US8150887B1 (en) 2007-12-21 2012-04-03 Emc Corporation Identifiers for non-searchable attributes
US8171054B1 (en) 2007-12-21 2012-05-01 Emc Corporation Optimized fetching for customization object attributes
US8255426B1 (en) 2007-12-21 2012-08-28 Emc Corporation Efficient storage of non-searchable attributes
US8452755B1 (en) 2009-05-12 2013-05-28 Microstrategy Incorporated Database query analysis technology
US8577902B1 (en) * 2009-05-12 2013-11-05 Microstrategy Incorporated Data organization and indexing related technology
US8479055B2 (en) 2010-05-16 2013-07-02 International Business Machines Corporation Detecting and optimizing false sharing
US9052824B2 (en) * 2012-01-26 2015-06-09 Upthere, Inc. Content addressable stores based on sibling groups
US9697102B2 (en) * 2012-11-21 2017-07-04 Sap Se Compare concurrent threads executions
US9430153B2 (en) 2014-10-22 2016-08-30 International Business Machines Corporation Garbage collection and other management of memory heaps

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6209066B1 (en) * 1998-06-30 2001-03-27 Sun Microsystems, Inc. Method and apparatus for memory allocation in a multi-threaded virtual machine
US6330556B1 (en) * 1999-03-15 2001-12-11 Trishul M. Chilimbi Data structure partitioning to optimize cache utilization
US6321240B1 (en) * 1999-03-15 2001-11-20 Trishul M. Chilimbi Data structure partitioning with garbage collection to optimize cache utilization
US6480862B1 (en) * 1999-04-23 2002-11-12 International Business Machines Corporation Relation-based ordering of objects in an object heap

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005100402A (ja) * 2003-09-23 2005-04-14 Microsoft Corp オブジェクト指向プログラムのための領域ベースのメモリ管理
JP2006092532A (ja) * 2004-09-10 2006-04-06 Microsoft Corp 最近アクセスしたリソースのデータ局所性の増加
JP2006085300A (ja) * 2004-09-14 2006-03-30 Kansai Tlo Kk データ処理方法、データ処理装置及びコンピュータプログラム
JP4719859B2 (ja) * 2004-09-14 2011-07-06 国立大学法人京都大学 データ処理方法、データ処理装置及びコンピュータプログラム
JP2009535682A (ja) * 2006-04-28 2009-10-01 インターナショナル・ビジネス・マシーンズ・コーポレーション スコープ・メモリ・システム内での参照の作成

Also Published As

Publication number Publication date
AU2754001A (en) 2001-07-16
EP1244969A2 (en) 2002-10-02
US6594678B1 (en) 2003-07-15
CA2396768A1 (en) 2001-07-12
CN1214325C (zh) 2005-08-10
KR20020067595A (ko) 2002-08-22
WO2001050270A3 (en) 2002-03-07
WO2001050270A2 (en) 2001-07-12
CN1411576A (zh) 2003-04-16
JP4812997B2 (ja) 2011-11-09

Similar Documents

Publication Publication Date Title
JP2003519834A (ja) メモリ管理によって参照の局所性を改善するための方法および装置
JP3659317B2 (ja) データを管理する方法及び装置
JP4248025B2 (ja) 追跡型ゴミ集め用のスペースの限られたマーク付け構造
US7310718B1 (en) Method for enabling comprehensive profiling of garbage-collected memory systems
KR100541174B1 (ko) 로컬화된 메모리 재이용을 가진 데이터 처리기
US7117294B1 (en) Method and system for archiving and compacting data in a data storage array
US6360361B1 (en) Field reordering to optimize cache utilization
US20110264712A1 (en) Copy planning in a concurrent garbage collector
US20060150168A1 (en) Annotating graphs to allow quick loading and analysis of very large graphs
US20010039609A1 (en) Data processor with localised memory reclamation
US6971102B2 (en) Computer system, memory management method, storage medium and program transmission apparatus
US7627621B2 (en) Method and system for minor garbage collection
US7765375B2 (en) Memory management method, information processing apparatus, and memory management program
US6829760B1 (en) Runtime symbol table for computer programs
US8131955B2 (en) Ephemeral garbage collection using a tracking mechanism on a card table to determine marked bundles
CN109189343B (zh) 一种元数据落盘方法、装置、设备及计算机可读存储介质
US7660961B2 (en) Concurrent evacuation of the young generation
US8176286B2 (en) Memory recycling in computer systems
US6502110B1 (en) Memory reclamation method and apparatus
Sansom Execution profiling for non-strict functional languages
CN106354624B (zh) 一种自动化测试方法和装置
US8826253B2 (en) Delayed insertion of safepoint-related code
US20090248650A1 (en) Storage and retrieval of concurrent query language execution results
US8108628B2 (en) Processor instruction used to perform a matrix test to generate a memory-related trap
US10747515B2 (en) Fields hotness based object splitting

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110301

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110520

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110531

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20110601

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: 20110802

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: 20110824

R150 Certificate of patent or registration of utility model

Ref document number: 4812997

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140902

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

EXPY Cancellation because of completion of term