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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- 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/99931—Database or file accessing
- Y10S707/99937—Sorting
-
- 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)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
モリにおけるデータの配置を改善することにより、データへのアクセス速度を増
大させることに関する。
せて用いられることが多い。通常、データの部分は、キャッシュメモリが、メイ
ンメモリのこれらの部分のコピーを含むように、メインメモリからコピーされる
。CPUがワードを読むことを試みる際には、そのワードがキャッシュ内にある
か否かを決定するための確認がなされる。そのワードがキャッシュ内にある場合
には、そのワードは、キャッシュから読み出される。そうでない場合には、多く
のワードが、メインメモリから読み出されてキャッシュに格納され、上述のワー
ドがCPUに提供される。
、そのため、メモリアクセス時間が増大する。要求されるデータがキャッシュ内
に存在する可能性を高めるために、キャッシュは通常、どのデータがアクセスさ
れるかをヒューリスティクスによって予測し、このデータをキャッシュにコピー
する。そのため、コンピュータのメモリシステムは、最も頻繁にアクセスされる
項目をプロセッサの近くに維持するために、キャッシュを頼りにすることが多い
。
置が、キャッシュの効率に影響し、それによって、コンピュータシステム全体の
動作速度に影響する可能性がある。したがって、速度を最大にするためには、メ
モリ内のデータ(例えば、オブジェクト)を効率的に配置すべきである。以前に
提案された技術は、大きなオーバーヘッドを有し、すなわち、Javaバイトコ
ードを実行するような動的な環境では用いることができない。
ーベージコレクションが実行される。一般に用いられているガーベージコレクシ
ョンの2つの実行方法は、「マーク・アンド・スイープ」を行う方法と「コピー
によるガーベージコレクション」を行う方法とである。以下に詳しく説明するよ
うに、メモリ内でのデータの再配置は、ガーベージコレクションのプロセスの間
に、ある程度までは実行することができる。
プロセスにおけるメモリ内のオブジェクトの配置を示すブロック図である。図1
Aには、オブジェクト102、104、106、および108が示されている。
より詳細には、オブジェクト102は、オブジェクト104および106の両方
を参照し、実行スレッドによって参照されている。マーク・アンド・スイープに
よるガーベージコレクションは通常、2つのパスで実行される。第1のパスでは
、オブジェクトによって参照されない各オブジェクトがマークされる。例えば、
オブジェクト108は、オブジェクト102、104、および106のいずれに
よっても参照されないため、削除のためにマークされる。第2のパスでは、マー
クされない各オブジェクトのためのメモリは再利用される。
ロセスの完了時における図1Aのメモリを示すブロック図である。図示されてい
るように、図1Aでマークされたオブジェクト108は、削除されたために図1
Bには示されていない。オブジェクト102、104、および106は、ガーベ
ージコレクションプロセスの完了後も残っている。オブジェクトは、マーク・ア
ンド・スイープによるガーベージコレクションの間、通常は再配置されないこと
に注意すべきである。
クション)も、一般に用いられている。図2Aは、従来のコピーによるガーベー
ジコレクションのプロセスにおけるメモリ内のオブジェクトを示すブロック図で
ある。図示されているように、メモリ200内には、複数のオブジェクトが存在
する。例えば、第1のオブジェクト202(A)、第2のオブジェクト204(
B)、および第3のオブジェクト206(D)は、メモリ内に格納されており、
すべてルートから到達可能である。さらに、第4のオブジェクト208(C)は
、メモリ200内に格納されているが、メモリ内の他のオブジェクトによって参
照されていない。
ける図2Aのメモリを示すブロック図である。コピーによるガーベージコレクシ
ョンでは、1つ以上のオブジェクトによって参照されているオブジェクトはすべ
てコピーされ、他のオブジェクトによって参照されていないオブジェクトはコピ
ーされない。そのため、コピーされていないオブジェクトはすべてガーベージで
ある。例えば、図2Bに示されているように、第4のオブジェクト208(C)
は、コピーされていない。コピーされると、図2Aに示されている元のオブジェ
クトのためのメモリは、再利用されてもよい。
ス中には様々な順序で配置されてよい。図3Aは、メモリ内のオブジェクトの構
成例を示すブロック図である。図示されているように、メモリ300は、第1の
オブジェクト302(A)と、第2のオブジェクト304(B)と、第3のオブ
ジェクト306(D)とを格納している。第1のオブジェクト302は、第2の
オブジェクト304および第3のオブジェクト306の両方を参照している。第
4のオブジェクト308(C)は、どのオブジェクトからも参照されていない。
を参照しているので、それらのオブジェクトは、2つの異なる順序で配置するこ
とができる。図3Bは、コピーによるガーベージコレクションの完了時における
図3Aのオブジェクトの1つの可能な構成を示すブロック図である。図示されて
いるように、第2のオブジェクト304は、第1のオブジェクト302に隣接し
て配置され、第3のオブジェクト306は、第2のオブジェクト304に隣接し
て配置されている。
ブジェクトの別の可能な構成を示すブロック図である。図示されているように、
第2のオブジェクト304を第1のオブジェクト302に隣接して配置せずに、
第3のオブジェクト306が、第1のオブジェクト302に隣接して配置されて
いる。図3Bおよび図3Cに示されている簡単な例では、それらのオブジェクト
は、2つの異なる順序で配置することができる。オブジェクトの順序付けと共に
、メモリ内のオブジェクトのアクセス速度を最大にすることを可能にする機構が
設計されたら有益であろう。
トに組み込まれる。各オブジェクトは、オブジェクトの特性を決定するクラスを
通して定義される。すなわち、オブジェクトは、あるクラスの個々のインスタン
スである。さらに、各オブジェクトは、メソッドはもちろん、様々なフィールド
も含んでいてよい。
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)を含む。
タアプリケーションの実行中に作成できるメモリアクセスのログの例を示すブロ
ック図である。Chilimbiでは、コンピュータアプリケーションは、メモ
リ参照(例えば、ロードや格納のコマンド)が記録されるように実装される。実
装されたコンピュータアプリケーションが実行されると、メモリアクセスのログ
420が作成される。より詳細には、オブジェクト422が、メモリアクセスご
とに記録される。例えば、第1のオブジェクト400(A)のフィールド(例え
ば、第1のフィールド402)がメモリからフェッチされると、このメモリアク
セスは、エントリ426に示されているように記録される。
グする一時的な参照グラフを作成するために用いられる。図4Cは、メモリ内の
オブジェクトのアクセスと、図4Bに示されているメモリアクセスのログから作
成できるこれらのメモリアクセスの一時的な関係とを示す一時的な参照グラフの
例である。一時的な参照グラフ428に示されているように、オブジェクトのア
クセスは、メモリアクセスのログ420に示されるメモリアクセスの一時的な関
係に従って、グラフに配置される。次いで、一時的な参照グラフ428は、近い
時間にアクセスされるオブジェクトが互いに近く配置されるようにオブジェクト
の適切な配置を実現するために用いることができる。より詳細には、一時的な参
照グラフ428は、コピーによるガーベージコレクションの際にオブジェクトが
コピーされる順序を導くために用いられる。しかしながら、Chilimbiは
、対応するメモリアクセス内でアクセスされる特定のフィールドを無視している
ことに注意すべきである。さらに、ログの作成は、すべてのメモリ参照に対して
かなりのオーバーヘッドを必要とするため、時間とメモリリソースを必要とする
。
るが、これらのオブジェクト内でアクセスされる特定のフィールドは無視されて
いる。Chilimbiは、そのフィールドのアクセスを無視しているが、単一
のオブジェクト内でのフィールドの再配列は考慮されており、それについては、
図5A、図5B、および図5Cを参照して説明する。
例を示すブロック図である。図示されているように、第1のオブジェクト500
(A)は、第1のフィールド502(y)と、第2のフィールド504(x)と
、第3のフィールド506(v)とを含む。さらに、第2のオブジェクト508
(B)は、第1のフィールド510(z)と、第2のフィールド512(w)と
を含む。
タアプリケーションの実行中に作成できるメモリアクセスのログの例を示すブロ
ック図である。メモリアクセスのログ514では、メモリ内でアクセスされた各
オブジェクト516および関連のフィールド518が、識別および記録される。
例えば、図示されているように、第2のフィールド504(x)が第1のオブジ
ェクト500内でアクセスされた場合には、アクセスされたオブジェクト520
(A)とアクセスされたフィールド522(x)とが記録される。
スの間の一時的な関係を決定するために用いられる。次いで、オブジェクト間の
参照の局所性をモデリングする一時的な参照グラフが作成される。図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の格納を妨げてはならない。このように、ある特定のオブジェクト内のフィ
ールドが再配列されてもよい。フィールドは、単一のオブジェクト内で再配列さ
れたが、フィールドアクセスは、それらのフィールドが参照するオブジェクトを
再配列するための解析を実行されていない。
グラムが遭遇する制御フローのパスを装備することもできる。図6Aは、コンピ
ュータアプリケーションの実行中に可能なパスすべてを示すブロック図である。
この例では、各ブロックは1つ以上のコンピュータの命令を表している。ブロッ
ク600は、条件ステートメント602の前に実行される。例えば、条件ステー
トメント602は、if‐then‐elseステートメントでよい。if‐t
hen‐elseステートメントの結果によると、実行可能な分岐は2つである
。第1の分岐は、ブロック604および606を含む。第2の分岐は、ブロック
608および610を含む。
Bは、図6Aのコンピュータアプリケーションに関連する可能なパスを示すパス
プロファイルの例を示す図である。図示されているように、Chilimbiで
実行されているように各ロードおよび格納のコマンドを実装せずに、ブロック6
12に示されたような決定点にコードが挿入される。制御フローのパスが実装さ
れているので、パスプロファイル作成は、各分岐(すなわち、パス)が採用され
た頻度を決定することができる。このように、パスプロファイル作成は、各パス
内に各ロードおよび格納のコマンドを実装するよりも、必要とするオーバーヘッ
ドが少ないという利点を持つ。
めに、コピーによるガーベージコレクションのようなプロセスを通して、メモリ
内のオブジェクトを再配列できることが望ましい。さらに、オブジェクトがコピ
ーされる順序を決定するために、パスプロファイル作成のようなプロセスを用い
て、オーバーヘッドを減らした状態で、オブジェクトのフィールドのアクセスの
頻度と近さを解析できることが有益である。
情報に従って、メモリ内のオブジェクトを再配列するための機構を生成する。例
えば、これは、コピーによるガーベージコレクション中にフィールドのトラバー
スの順序を変更することによって実現できる。このように、メモリ内でオブジェ
クトを順序付けすることにより、後でオブジェクトをメモリからリトリーブする
速度を最小化することができる。
機構が作成される。コンピュータアプリケーション実行中の複数のオブジェクト
に関する1つ以上のフィールドの互いに対してのメモリ内でのアクセス頻度が決
定される。次いで、複数のオブジェクトに関する1つ以上のフィールドの互いに
対してのメモリ内での決定されたアクセス頻度に従って、メモリ内で複数のオブ
ジェクトを再配列するための機構が生成される。
数のオブジェクトを再配列するためのガーベージコレクションコードを含む。ガ
ーベージコレクションは、様々な方法で実装することができる。例えば、コピー
によるガーベージコレクション、または、コピーによるガーベージコレクション
の変形版を実行してもよい。
ィールド参照の頻度と近さを示す情報から、メモリ内のオブジェクトを再配列す
るための機構を作成できる。一実施形態によると、ガーベージコレクション中に
オブジェクトのフィールドが訪問(VISIT)される順序を変更するための機
構が作成される。まず、クラスの全インスタンスに対して、フィールド参照情報
が取得される。但し、フィールド参照情報は、互いにそのクラスのフィールドに
よって参照されるオブジェクトの参照の頻度と近さを示すものである。次いで、
関連のフィールド参照情報からクラスフィールド順序が決定される。但し、クラ
スフィールド順序は、ガーベージコレクション中にそのクラスのフィールドがト
ラバースされる順序を特定するものである。このプロセスは、クラスフィールド
順序が各対応するクラスに関連するように、複数のクラスに対して繰り返しても
よい。
実行される。一実施形態によると、オブジェクトが識別され、そのオブジェクト
に関するクラスが確認される。オブジェクトのクラスに関するクラスフィールド
順序が決定される。但し、クラスフィールド順序は、ガーベージコレクション中
にそのクラスのフィールドがトラバースされる順序を特定するものである。次い
で、オブジェクトのフィールドは、オブジェクトのクラスに関するクラスフィー
ルド順序に従って、ガーベージコレクション(例えば、コピーによるガーベージ
コレクション)中に訪問される。例えば、訪問された各フィールドに対して、直
接的もしくは間接的に指定された各オブジェクトをコピーしてもよい。
示す情報に従って、オブジェクトを再配列することを可能とする。このように、
これらのフィールドによって参照されるそれらのオブジェクトを、ガーベージコ
レクション中にメモリ内で再配列することができる。このように、互いに近い時
間にアクセスされるオブジェクトを、メモリ内において近くに格納することがで
きる。このことは、特に、キャッシュを実装するシステムにおいて有利である。
何故なら、複数のオブジェクトが同じキャッシュラインにおいてリトリーブおよ
び格納される可能性が高くなるからである。したがって、互いに近くでアクセス
されるオブジェクトをリトリーブする時間を、劇的に短くすることができる。
されている。しかしながら、本発明がこれらの具体的な詳細なしに実現できるこ
とは、当業者にとって明らかである。また、本発明を不必要に不明瞭化しないよ
うに、周知のプロセス動作の説明は省略してある。
される他のオブジェクトが参照される頻度に従って、メモリ内で再配列すること
を可能とする。一実施形態によると、これは、与えられたクラスの全インスタン
スにわたって、そのクラスのフィールドの参照(例えば、メモリアクセス)の頻
度を生成することにより実現される。
イルは、例えばJavaプログラムの解釈中に、短時間で取得され、次いで、実
行時の間に少ないオーバーヘッドで、コンパイルされたコードから除去されるこ
とが可能である。このように、多くの時間とメモリを必要とせずに、オブジェク
トを再配列することができる。
クトを配置することができる。一実施形態によると、アプリケーションによって
近い時間にアクセスされるオブジェクトは、コピーによるガーベージコレクショ
ンプロセスによって、同じキャッシュラインにまとめられる。
を調べずに、一実施形態に従って、与えられたクラスの全インスタンスにわたっ
てフィールドアクセス(すなわち、フィールド参照)の頻度を一般化する。与え
られたクラスのオブジェクトは、同じ目的に用いられることが多いため、これら
のオブジェクトの振る舞いは、ほぼ同一であることが多い。そのため、単一のク
ラスの複数のインスタンスに関して実行されるメモリアクセスは、ほぼ同一であ
ることが多い。このことについては、図7Aないし7Cを参照して、さらに詳細
に説明する。
ック図である。第1のインスタンス702(オブジェクトA1)と、第2のイン
スタンス704(オブジェクトA2)は両方とも、第1のフィールド706(x
)と、第2のフィールド708(y)とを含む。このように、単一のクラスの複
数のインスタンスは、同じフィールドを持つため、同じ種類のフィールドを持つ
。
スは、同じ状況で用いられる可能性がある。例えば、これらのオブジェクトは、
同じデータ構造で用いられることが多いため、これらのオブジェクトのフィール
ドに関するメモリアクセスは、ほぼ同じ頻度および順番で発生する。
データ構造における図7Aのクラスインスタンスの使用例を示すブロック図であ
る。図示されているように、ツリーデータ構造710は、ルートノード712と
、2つの下位ノード714、716を含む。例えば、第1のインスタンス702
(オブジェクトA1)が第1の下位ノード714であり、第2のインスタンス7
04(オブジェクトA2)が第2の下位ノード716であってよい。ツリーデー
タ構造の下位ノードに関するメモリアクセスは通常、ほぼ同様であるため、単一
のクラスのインスタンスに関するメモリアクセスは、このインスタンス内のクラ
ス全体にわたって生成されてもよい。
クリストである。図7Cは、リンクリストデータ構造における図7Aのクラスイ
ンスタンスの使用例を示すブロック図である。リンクリスト718は、3つのオ
ブジェクトを含むよう示されている。すなわち、第1のオブジェクト720と、
第2のオブジェクト722と、第3のオブジェクト724である。図示されてい
るように、リンクリスト718内の第1のオブジェクト720は、クラスAの第
1のインスタンス702であってよい。同様に、リンクリスト718内の第2の
オブジェクト722は、クラスAの第2のインスタンス704であってよい。リ
ンクリストの要素に関するメモリアクセスは通常、ほぼ同じ頻度で実行されるた
め、単一のクラスのインスタンスに関するメモリアクセスは、そのクラス全体に
わたって一般化されてよい。
ールドを持つオブジェクトがメモリにおいて近くに格納されるように、メモリ内
のオブジェクトを再配列するためのプロセスの概略を示すフローチャートである
。コンピュータアプリケーションは、ブロック802で実行される。コンピュー
タアプリケーションが実行されると、メモリ内のフィールド参照の記録(例えば
、フィールド参照のパスプロファイルまたはログ)が、ブロック804で生成さ
れる。次いで、ブロック806において、生成されたフィールド参照の記録(例
えば、フィールド参照のパスプロファイルまたはログ)を用いて、オブジェクト
がメモリ内で再配列される。例えば、オブジェクトは、コピーによるガーベージ
コレクションプロセスの間に再配列されてもよい。上述のプロセスが完了すると
、オブジェクトは、互いに近い時間にアクセスされるフィールドを持つオブジェ
クトが、メモリ内において近くに格納されるように再配列される。それ故、これ
らのオブジェクトは、データがメモリからキャッシュにリトリーブされる際に、
おそらく同じキャッシュラインに格納される。
再配列されてもよい。一実施形態によると、図8のブロック804で記録された
フィールド参照の頻度と時間的な近さは、与えられたクラスの全インスタンスに
わたって一般化される。図9は、図8のブロック806に示されているメモリ内
のオブジェクトを再配列する方法の概略を示すフローチャートである。ブロック
902では、各クラスに対して、互いに時間の近いフィールドの参照の、図8の
ブロック804で生成された記録における発生が、フィールド順序付け情報を生
成するために、クラスの全インスタンスにわたって各フィールドに対してカウン
トされる。例えば、ある特定のクラス内でフィールド順序付け情報を生成するた
めに収集できるデータは、各フィールドのアクセス回数と、そのフィールドが同
じクラスの他のフィールドに関して参照したデータのアクセス間の時間と、同じ
クラスの他のフィールドに関するそのフィールドの参照の間の命令(もしくはメ
モリアクセス)の数と、およびクラスのフィールドがアクセスされる順序とを含
んでよい。次いで、フィールドは、ブロック904において、フィールド順序付
け情報に従ってソートされる。
は有向グラフのようなデータ構造に格納されてよい。例えば、オブジェクトは、
深さ優先順でコピーされてよい。コピーによるコレクションでは、どのオブジェ
クトもしくはオブジェクトのセットを次にコピーするかを決定するための機構が
必要である。換言すると、どのポインタが次にトラバースするかを決定するため
の機構が必要である。一実施形態によると、フィールド順序付け情報は、データ
構造内でトラバースするのに適切なパスを決定するために用いられる。そのよう
に、ガーベージコレクション中には、フィールドは、ブロック906において、
ソートされた順序でスキャンされる。各フィールドが「スキャン」されると、フ
ィールドによって(直接的もしくは間接的に)指定されたオブジェクトがコピー
される。換言すると、フィールドおよび/または関連のオブジェクトによって指
定されたオブジェクトがコピーされる。したがって、ガーベージコレクション中
に、各オブジェクトに対して、オブジェクトのクラスに関連するフィールド順序
付け情報に従って、フィールドがトラバースされ、ソートされたフィールド各々
によって(直接的もしくは間接的に)指定されたオブジェクトがコピーされる。
例えば、オブジェクトのコピーは、深さ優先で実行されてよい。
トに対して、それらのフィールドは、コピーによるガーベージコレクション中に
適切なクラスに関するフィールド順序付け情報に従ってトラバースされる。図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)は、
次にコピーされる。
た。図11は、本発明の一実施形態に従って、メモリ内のオブジェクトを再配列
する方法の詳細を示すフローチャートである。この実施形態によると、効率をよ
くするために、ログではなくパスプロファイルが用いられる。それ故、ブロック
1102においては、各パスが実行時に採用される総回数を示す各パスのカウン
トを計算することを可能にするコードをコンピュータアプリケーションに挿入す
るために、コンピュータアプリケーションの制御フローが解析される。各パスに
対して、(同じクラス内の他のフィールドに関する)各フィールドの従属参照の
数が、ブロック1104において、各クラスに対して第1のテーブルを生成する
ために計算される。第1のテーブルの例については、図12を参照して、以下で
詳細に図示および説明する。ブロック1106において、実行時に採用された各
パスのカウントは、次に、各クラスに対して第2のテーブルを生成するために、
挿入されたコードを用いて計算される。第2のテーブルの例については、図13
を参照して、以下で詳細に図示および説明する。次いで、第1および第2のテー
ブルは、すべてのパスにわたって実行時の間に(同じクラス内の他のフィールド
に関する)各フィールドのフィールド参照の数を取得するために、ブロック11
08において結合される。第1および第2のテーブルの結合の結果については、
図14を参照して、以下で詳細に図示および説明する。次いで、フィールドは、
ブロック1110において、クラスに対するすべてのパスにわたるフィールド参
照の数によってクラスごとにソートされる。そのようなソートのプロセスの結果
については、図15を参照して、以下で詳細に図示および説明する。次いで、ソ
ートされた順序でメモリ内のオブジェクトのフィールドをトラバースし、フィー
ルドによって指定されたオブジェクトをコピーするガーベージコレクションコー
ドが、ブロック1112において生成される。次いで、ガーベージコレクション
は、ブロック1114において実行される。生成されたガーベージコレクション
コード(もしくは別の機構)を用いてガーベージコレクションを実行する方法の
詳細については、図17を参照して説明する。
04は、コンパイル時1116の間に実行され、ブロック1106〜1114は
、実行時に実行される。しかしながら、Java(登録商標)では実行時にコンパ
イルが実行されることを認識することが重要である。それ故、上述の説明は例示
的なものであり、工程は、個々のコンパイルおよび実行プロセス中に実行される
必要はない。
フィールドに関する)各フィールドの従属参照(すなわち、メモリアクセス)の
数は、各パスにわたって各クラスに対して第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つのフィールドに対して複
数のカウントがコンパイルされるように、ある特定のフィールドが、同じクラス
内の他のフィールド各々の前後に参照された回数をカウントする工程を含む。こ
のように、フィールド順序付け情報が最終的にコンパイルされてもよい。
実行時にトラバースされる回数がカウントされる。図13は、図11のブロック
1106で生成される第2のテーブルの例を示すブロック図である。図示されて
いるように、第2のテーブルは、各パス1302を識別し、識別されたパス13
02がコンピュータアプリケーションの実行中にトラバースされる回数を示す関
連のパスカウント1304を識別する。
と、図11のブロック1108を参照して上述したように、テーブルが結合され
る。図14は、図12および図13で示したようなテーブルから、図11のブロ
ック1108で生成される第3のテーブルの例を示すブロック図である。両テー
ブルが結合されると、ある特定のクラス内の各フィールド1402に対して、同
じクラスの他のフィールドに関するフィールドの参照1404の数が決定される
。例えば、図示されているように、クラスAのフィールドyに対して、クラスA
のフィールドxに関するすべてのパスにわたる実行時のフィールド参照の数は5
3である。換言すれば、この結果は、パスプロファイルではなくログが作成され
た場合に取得される結果と等しいはずである。同様に、図示されているように、
クラスAのフィールドxに対して、クラスAのフィールドyに関するすべてのパ
スにわたる実行時のフィールド参照の数は5である。上述のように、フィールド
参照の数は、同じクラスの他のフィールドに関する関連のフィールドのいくつか
の順序付け情報を示している。
スのフィールドに関連付けられる。図15は、図11のブロック1110で示し
たフィールドをソートする工程の結果の例を示すブロック図である。例えば、ク
ラスA1502に対して、各フィールド1504がソートされる。結果として、
フィールドx1506は、コピーによるガーベージコレクション中に最初にトラ
バースされ、フィールドy1508は、コピーによるガーベージコレクション中
に2番目にトラバースされる。同様に、クラスB1510に対して、各フィール
ド1512がソートされる。結果として、フィールドz1514は、コピーによ
るガーベージコレクション中に最初にトラバースされ、フィールドw1516は
、コピーによるガーベージコレクション中に2番目にトラバースされる。
しくは有向グラフのようなデータ構造に格納されてよい。図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に先立ってトラバースされ、コピーされる。
ンプロセスは、各関連のクラスに関するフィールド順序付け情報を用いて実行さ
れる。より詳細には、ガーベージコレクション(例えば、コピーによるコレクシ
ョン)中にコピーされる各オブジェクトに対して、オブジェクトのクラスが決定
され、オブジェクトのフィールドが、オブジェクトのクラスに関するフィールド
順序付け情報に従ってコピーによるコレクション中に訪問される。図17は、図
15に示されたようなソートプロセスの結果と、図16に示されたようなオブジ
ェクトのデータ構造とを用いて、図11のブロック1114に示したようにガー
ベージコレクションを実行する一方法を示すフローチャートである。プロセスは
、ブロック1700で始まる。例えば、上述のように、プロセスはルートノード
またはルートポインタで開始してよい。次いで、現在のポインタ(例えば、ルー
トポインタ)によって指定されるオブジェクトが、ブロック1702において取
得される。次いで、取得されたオブジェクトのクラスが、ブロック1704にお
いて決定される。例えば、オブジェクトのヘッダは、図16に示すようにクラス
を指定してもよい。それ故、オブジェクトヘッダから関連のクラスへポインタを
追跡することにより、オブジェクトのクラスを確認してもよい。次に、クラス/
オブジェクトが、トラバースされるいくつかの(または、さらなる)フィールド
を持っているか否かが、ブロック1706において決定される。
なるフィールドを持っている場合、オブジェクトはブロック1708においてコ
ピーされる。そうでない場合には、クラスフィールド順序付け情報で識別される
次のフィールドが、ブロック1710において確認される。例えば、クラスの記
述には通常、そのクラスのフィールドに関するオフセットのリストが含まれる。
取得されたオブジェクトのフィールドの位置を特定するために、識別された次の
フィールドのためのオフセットが、この記述から取得されてもよい。
か否かが、ブロック1712において決定される。そうである場合、ブロック1
714において、第2のオブジェクトが(例えば、再帰的プロセスによって)取
得される。オブジェクトの識別されたフィールドが第2のオブジェクトを指定し
ない場合、そのオブジェクトに関するさらなるフィールドに対して、プロセスは
ブロック1706を継続する。プロセスが再帰的に実行されると、トラバースさ
れているデータ構造内の各オブジェクトは、最終的に、ブロック1708におい
てコピーされる。
、近くに格納される可能性を最大化するように、メモリ内にオブジェクトを格納
するために用いられてもよい。図18は、メモリ内におけるオブジェクトの最適
な構成を実現するための本発明の使用方法を示す図である。図示されているよう
に、メインメモリ1802は、データのブロック1804内にオブジェクトを格
納する。例えば、データの各ブロックは、32バイトでよい。本発明を用いるこ
とにより、メインメモリ1802内のデータの単一のブロック1804に、第1
のオブジェクト1806(A)と、第2のオブジェクト1808(B)とを格納
することができる。CPU1808が、データのこのブロック1804をキャッ
シュ1810にコピーすると、オブジェクト1806および1808は、同じキ
ャッシュライン1812(もしくは、1セットのキャッシュライン)に格納され
る。したがって、本発明を用いると、データの単一のブロックがメインメモリ1
802からリトリーブされる際に、複数のオブジェクトが1つのキャッシュ内に
同時に格納されることを可能にすることにより、互いに近い時間にアクセスされ
るフィールドを持つオブジェクトの効率的なアクセスを実現できる。
の局所性の情報を集めるため、オブジェクトとフィールドの種類を区別する。換
言すると、本発明は、与えられたクラスのインスタンスが、おそらく同様のロー
ド依存性を持つという観察を利用している。これは、一実施形態によると、パス
プロファイル作成と、コピーによるコレクション中に、与えられたクラスのフィ
ールドが訪問される順序を動的に変更するための機構とによって実現される。
発明を実装するのに適した代表的な汎用コンピュータシステム1902を示した
図である。このコンピュータシステムは、任意の適切な形態をとってよい。例え
ば、コンピュータシステムは、デジタルテレビ受信機またはセットトップボック
スと統合されていてもよい。
当業者が理解するとおり、バーチャルマシンをサポートするよう構成されてもよ
い。コンピュータシステム1902は、一次記憶デバイス1906(通常、読み
出し専用メモリすなわちROM)と一次記憶デバイス1908(通常、ランダム
アクセスメモリすなわちRAM)とを含むメモリデバイスに接続された任意の数
のプロセッサ1904(中央処理装置すなわちCPUとも呼ばれる)を備えてい
る。当業者に周知のように、ROMは、CPU1904にデータおよび命令を一
方向的に転送するよう機能し、RAMは通常、データおよび命令を二方向的に転
送するのに用いられる。両方の一次記憶デバイス1906および1908は、任
意の適切なコンピュータ読み取り可能媒体を含んでいてよい。CPU1904は
、一般に、任意の数のプロセッサを含んでいて良い。
U1904に接続され、データ記憶容量を補っている。マスメモリデバイス19
10は、コンピュータコード、データなどを含むプログラムを格納するのに用い
ることが可能なコンピュータ読み取り可能な媒体である。通常、マスメモリデバ
イス1910は、一般に一次記憶デバイス1906および1908よりも低速な
ハードディスクなどの記憶媒体である。
ド、マイクロフォン、タッチセンシティブディスプレイ、トランスデューサカー
ドリーダ、磁気もしくは紙テープリーダ、タブレット、スタイラス、音声もしく
は手書き文字認識装置、もしくは、もちろん他のコンピュータのようなその他の
よく知られた入力デバイス、を含むがそれらに限定されない1つ以上の入出力デ
バイス1912に接続されてもよい。最後に、CPU1904は、1914に大
まかに示されているネットワーク接続を用いて、コンピュータや、例えばインタ
ーネットネットワークもしくはイントラネットネットワークなどの通信ネットワ
ークに随意的に接続されてもよい。このようなネットワーク接続により、CPU
1904は、上述した方法の段階を実行している間に、ネットワークから情報を
受信したりネットワークに情報を出力したりすることができると予期される。こ
のような情報は、CPU1904を用いて実行される命令のシーケンスであるこ
とが多く、例えば搬送波で運ばれるコンピュータデータ信号の形で、ネットワー
クから受信したりネットワークに出力したりしてよい。
明の概念、範囲、および趣旨の範囲内で多くの変更を加えることが可能であり、
これらの変更は、本出願を熟読した当業者にとって明らかである。例えば、本発
明は、デジタルテレビ受信機に実装した例によって説明されている。しかしなが
ら、本発明は、他の状況で用いられてもよい。さらに、本発明は、JAVA(登
録商標)プラットフォームに実装した例によって説明されているが、別のプラッ
トフォームに実装されてもよい。さらに、上述したプロセスのブロックは、単に
例示的なものである。したがって、本発明の実装は、代替のデータ構造はもちろ
ん、代替のプロセスのブロックを用いて実行されてもよい。したがって、上述し
た実施形態は、例示を目的としたものであって限定的ではなく、本発明は、本明
細書で取り上げた項目に限定されず、添付した請求項の範囲および均等物の範囲
内で変更することが可能である。
おけるメモリ内のオブジェクトの配置を示すブロック図である。
了時における図1Aのメモリを示すブロック図である。
ブジェクトを示すブロック図である。
のメモリを示すブロック図である。
の1つの可能な構成を示すブロック図である。
の別の可能な構成を示すブロック図である。
ロック図である。
ーションの実行中に作成できるメモリアクセスのログの例を示すブロック図であ
る。
のログから作成できるこれらのメモリアクセスの一時的な関係とを示す一時的な
参照グラフの例である。
ロック図である。
ーションの実行中に作成できるメモリアクセスのログの例を示すブロック図であ
る。
照グラフの例である。
である。
ファイルの例を示す図である。
ク図である。
ブロック図である。
持つオブジェクトがメモリにおいて近くに格納されるように、メモリ内のオブジ
ェクトを再配列するためのプロセスの概略を示すフローチャートである。
法の概略を示すフローチャートである。
了時のオブジェクトのセットの例を示す図である。
細を示すフローチャートである。
である。
である。
で生成される第3のテーブルの例を示すブロック図である。
示すブロック図である。
図である。
ブジェクトのデータ構造とを用いて、図11のブロック1114に示したように
ガーベージコレクションを実行する一方法を示すフローチャートである。
るオブジェクトの格納を実現するための本発明の使用法を示す図である。
である。
Claims (30)
- 【請求項1】 メモリ内の複数のオブジェクトを再配列するための機構を生
成する方法であって、 コンピュータアプリケーションの実行中において、前記複数のオブジェクトに
関する1つ以上のフィールドが相互に参照するデータのメモリ内でのアクセスの
頻度を決定する工程と、 前記複数のオブジェクトに関する前記1つ以上のフィールドが相互に参照する
データのメモリ内でのアクセスの前記決定された頻度に従って、前記メモリ内の
前記複数のオブジェクトを再配列するための機構を生成する工程と、 を備える生成方法。 - 【請求項2】 請求項1記載の機構生成方法であって、 前記機構を生成する工程は、ガーベージコレクション中に前記複数のオブジェ
クトを再配列するためのガーベージコレクションコードを生成する工程を含む、
生成方法。 - 【請求項3】 ガーベージコレクション中において、1つ以上のクラスに関
連付けられた複数のオブジェクトの複数のフィールドが訪問される順序を変更す
るための機構を生成する方法であって、 前記1つ以上のクラスのうちの1つのクラスの全インスタンスに対するフィー
ルド参照情報であって、前記1つ以上のクラスのうちの前記1つのクラスの複数
のフィールドの相互参照の頻度と近さとを示すフィールド参照情報を取得する工
程と、 前記1つ以上のクラスのうちの前記1つのクラスのためのクラスフィールド順
序であって、前記関連するクラスの複数のフィールドがガーベージコレクション
中にトラバースされる順序を識別するためのクラスフィールド順序を、前記関連
するフィールド参照情報から決定する工程と、 を備える生成方法。 - 【請求項4】 請求項3記載の機構生成方法であって、さらに、 前記クラスフィールド順序を前記複数のクラスのうちの前記1つのクラスに関
連付ける工程を備える、生成方法。 - 【請求項5】 請求項3記載の機構生成方法であって、さらに、 前記1つ以上のクラスに対して前記取得の工程と前記決定の工程とを繰り返す
工程を備える、生成方法。 - 【請求項6】 メモリ内の1つ以上のクラスに関連付けられた複数のオブジ
ェクトを再配列するための機構を生成する方法であって、 前記1つ以上のクラスのうちの選択された1つのクラスに関する複数のフィー
ルドに参照されるデータのメモリ内でのアクセス回数であって、前記1つ以上の
クラスのうちの前記選択された1つのクラスに関する複数のフィールドのうちの
残りによって参照されるデータに関するアクセス回数を確認する工程と、 前記1つ以上のクラスのうちの前記選択された1つのクラスに関するクラスフ
ィールド順序であって、前記1つ以上のクラスのうちの前記選択された1つのク
ラスの複数のフィールドがガーベージコレクション中にトラバースされる順序を
識別するクラスフィールド順序を、前記関連するアクセス回数から決定する工程
と、 前記1つ以上のクラスの各々に対して前記確認の工程と前記決定の工程とを繰
り返す工程と、 を備える生成方法。 - 【請求項7】 請求項6記載の機構生成方法であって、さらに、 前記関連するクラスフィールド順序に従って、各クラスに関する前記フィール
ドをソートする工程を備える、生成方法。 - 【請求項8】 請求項6記載の機構生成方法であって、 前記アクセス回数は、前記複数のフィールドによって参照されるデータのメモ
リ内でのアクセスの頻度と近さとを示す、生成方法。 - 【請求項9】 請求項6記載の機構生成方法であって、 前記アクセス回数は、前記選択されたクラスの前記複数のフィールドの各々が
、前記選択されたクラス内の別のフィールドの直後に参照される回数を特定する
、生成方法。 - 【請求項10】 請求項6記載の機構生成方法であって、 前記アクセスの数は、前記選択されたクラスの前記複数のフィールドの各々が
、前記選択されたクラス内の別のフィールドの直前に参照される回数を特定する
、生成方法。 - 【請求項11】 請求項6記載の機構生成方法であって、 前記アクセス回数は、前記選択されたクラスの前記複数のフィールドの各々が
、前記選択されたクラス内の別のフィールドの後に参照される回数を特定する、
生成方法。 - 【請求項12】 請求項6記載の機構生成方法であって、 前記アクセス回数は、前記選択されたクラスの前記複数のフィールドの各々が
、前記選択されたクラス内の別のフィールドの前に参照される回数を特定する、
生成方法。 - 【請求項13】 請求項6記載の機構生成方法であって、 前記選択されたクラスに関する複数のフィールドのメモリ内でのアクセス回数
を確認する工程は、 前記選択されたクラスの前記複数のフィールドのうちの1つが、前記選択され
たクラスの前記複数のフィールドの他の各々に関して参照される回数を、前記複
数のフィールドのうちの前記1つに対して1つ以上のカウントが生成されるよう
にカウントする工程と、 前記選択されたクラスに関する前記複数のフィールドの各々に対して前記カウ
ントの工程を繰り返す工程と、 前記複数のフィールドの各々に関する前記1つ以上のカウントから前記クラス
フィールド順序を生成する工程と、 を含む生成方法。 - 【請求項14】 請求項6記載の機構生成方法であって、さらに、 コンピュータアプリケーションの実行中に前記1つ以上のクラスに関する前記
複数のフィールドのメモリ内での前記アクセスの記録を生成する工程を備える、
生成方法。 - 【請求項15】 請求項14記載の機構生成方法であって、 前記1つ以上のクラスに関する前記複数のフィールドのメモリ内での前記アク
セスの記録を生成する工程は、前記コンピュータアプリケーションの実行中にメ
モリ内での前記アクセスのログを生成する工程を含む、生成方法。 - 【請求項16】 請求項14記載の機構生成方法であって、 前記1つ以上のクラスに関する前記複数のフィールドのメモリ内での前記アク
セスの記録を生成する工程は、パスプロファイル生成を実行する工程を含む、生
成方法。 - 【請求項17】 請求項14記載の機構生成方法であって、さらに、 各パスが前記コンピュータアプリケーションの実行中に採用される総回数を示
すカウントを計算することを可能にするコンピュータコードを前記コンピュータ
アプリケーションに挿入する工程と、 前記パスの各々に対して前記クラスのうちの前記同一の1つの内の他の複数の
フィールドに関する各フィールドの参照の数を決定する工程と、 前記コンピュータアプリケーションの実行中に採用される前記パスの各々の前
記カウントを計算するために、前記挿入されたコンピュータコードを用いる工程
と、 前記関連するクラスのための前記クラスフィールド順序を決定するために、前
記パスの各々に対して前記クラスのうちの前記同一の1つのクラス内の他の複数
のフィールドに関する各フィールドの前記決定された参照数を、前記コンピュー
タアプリケーションの実行中に採用された前記パスの各々の前記計算されたカウ
ントと結合する工程と、 を備える生成方法。 - 【請求項18】 請求項6記載の機構生成方法であって、さらに、 前記1つ以上のクラスに関する前記クラスフィールド順序に従って、前記メモ
リ内の前記複数のオブジェクトを再配列する工程を備える、生成方法。 - 【請求項19】 請求項18記載の機構生成方法であって、 前記再配列の工程は、ガーベージコレクション処理中に実行される、生成方法
。 - 【請求項20】 請求項19記載の機構生成方法であって、 前記ガーベージコレクション処理は、コピーによるガーベージコレクション処
理である、生成方法。 - 【請求項21】 請求項6記載の機構生成方法であって、さらに、 前記関連するクラスの前記クラスフィールド順序に従って、メモリ内の複数の
オブジェクトの複数のフィールドをトラバースするガーベージコレクションコー
ドを生成する工程を備える、生成方法。 - 【請求項22】 請求項21記載の機構生成方法であって、 前記生成されたガーベージコレクションコードは、オブジェクトのクラスを決
定するとともに、前記複数のオブジェクトの前記クラスの前記クラスフィールド
順序に従ってコピーによるコレクション中に前記オブジェクトの前記複数のフィ
ールドを訪問する、生成方法。 - 【請求項23】 メモリ内に格納された複数のオブジェクトのセットに対し
てガーベージコレクションを実行する方法であって、 メモリ内の複数のオブジェクトの前記セットのうちの1つを識別する工程と、 前記オブジェクトのクラスを確認する工程と、 前記オブジェクトの前記クラスに関するクラスフィールド順序であって、前記
オブジェクトの前記クラスの複数のフィールドがガーベージコレクション中にト
ラバースされる順序を識別するクラスフィールド順序を決定する工程と、 前記オブジェクトの前記クラスに関する前記クラスフィールド順序に従って、
ガーベージコレクション中に前記オブジェクトの前記複数のフィールドを訪問す
る工程と、 を備える実行方法。 - 【請求項24】 請求項23記載のガーベージコレクション実行方法であっ
て、さらに、 前記訪問された複数のフィールドに関連付けられた複数のオブジェクトをコピ
ーする工程を備える、実行方法。 - 【請求項25】 請求項24記載の方法であって、複数のオブジェクトをコ
ピーする工程は、前記訪問された複数のフィールドによって直接的または間接的
に指定された各オブジェクトをコピーする工程を含む、方法。 - 【請求項26】 メモリ内の1つ以上のクラスに関連付けられた複数のオブ
ジェクトを再配列するための機構を作成するためのコンピュータ読み取り可能な
記録媒体であって、 前記1つ以上のクラスのうちの選択された1つのクラスに関する複数のフィー
ルドに参照されるデータのメモリ内でのアクセス回数であって、前記1つ以上の
クラスのうちの前記選択された1つのクラスに関する複数のフィールドのうちの
残りによって参照されるデータに関するアクセス回数を確認するためのコンピュ
ータ命令と、 前記1つ以上のクラスのうちの前記選択された1つに関するクラスフィールド
順序であって、前記1つ以上のクラスのうちの前記選択された1つのクラスの複
数のフィールドがガーベージコレクション中にトラバースされる順序を識別する
クラスフィールド順序を、前記複数のフィールドのメモリ内での前記関連するア
クセス頻度から決定するためのコンピュータ命令と、 前記1つ以上のクラスの各々に対して前記確認の工程と前記決定の工程とを繰
り返すためのコンピュータ命令と、 を含む記録媒体。 - 【請求項27】 請求項26記載のコンピュータ読み取り可能な媒体であっ
て、さらに、 前記関連のクラスの前記クラスフィールド順序に従って、メモリ内の複数のオ
ブジェクトの複数のフィールドをトラバースするガーベージコレクションコード
を生成するためのコンピュータ命令を含む、媒体。 - 【請求項28】 メモリ内の1つ以上のクラスに関連付けられた複数のオブ
ジェクトを再配列するための機構を生成するためのシステムであって、 プロセッサと、 コンピュータ命令を格納するメモリとを含み、 前記コンピュータ命令は、 前記1つ以上のクラスのうちの選択された1つのクラスに関する複数のフィー
ルドに参照されるデータのメモリ内でのアクセス回数であって、前記1つ以上の
クラスのうちの前記選択された1つのクラスに関する複数のフィールドのうちの
残りによって参照されるデータに関するアクセス回数を確認するためのコンピュ
ータ命令と、 前記1つ以上のクラスのうちの前記選択された1つに関するクラスフィールド
順序であって、前記1つ以上のクラスのうちの前記選択された1つのクラスの複
数のフィールドがガーベージコレクション中にトラバースされる順序を識別する
クラスフィールド順序を、前記複数のフィールドのメモリ内での前記関連するア
クセス頻度から決定するためのコンピュータ命令と、 前記1つ以上のクラスの各々に対して前記確認の工程と前記決定の工程とを繰
り返すためのコンピュータ命令と、 を含むシステム。 - 【請求項29】 請求項28記載の機構生成システムであって、 前記メモリは、さらに、前記関連するクラスの前記クラスフィールド順序に従
って、メモリ内の複数のオブジェクトの複数のフィールドをトラバースするガー
ベージコレクションコードを生成するためのコンピュータ命令を格納する、シス
テム。 - 【請求項30】 請求項28記載の機構生成システムであって、 前記機構生成システムは、Javaプラットフォームに実装される、システム
。
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)
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)
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)
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 |
-
2000
- 2000-07-19 US US09/618,981 patent/US6594678B1/en not_active Expired - Lifetime
-
2001
- 2001-01-02 EP EP01901661A patent/EP1244969A2/en not_active Withdrawn
- 2001-01-02 JP JP2001550562A patent/JP4812997B2/ja not_active Expired - Lifetime
- 2001-01-02 AU AU27540/01A patent/AU2754001A/en not_active Abandoned
- 2001-01-02 KR KR1020027008667A patent/KR20020067595A/ko not_active Application Discontinuation
- 2001-01-02 CA CA002396768A patent/CA2396768A1/en not_active Abandoned
- 2001-01-02 CN CNB018060749A patent/CN1214325C/zh not_active Expired - Fee Related
- 2001-01-02 WO PCT/US2001/000055 patent/WO2001050270A2/en active Application Filing
Cited By (5)
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 |