JP3627055B2 - キャッシュ対象オブジェクト選択方法、キャッシュ破棄方法及びコンピュータ - Google Patents
キャッシュ対象オブジェクト選択方法、キャッシュ破棄方法及びコンピュータ Download PDFInfo
- Publication number
- JP3627055B2 JP3627055B2 JP02822898A JP2822898A JP3627055B2 JP 3627055 B2 JP3627055 B2 JP 3627055B2 JP 02822898 A JP02822898 A JP 02822898A JP 2822898 A JP2822898 A JP 2822898A JP 3627055 B2 JP3627055 B2 JP 3627055B2
- Authority
- JP
- Japan
- Prior art keywords
- class
- level
- cached
- objects
- belonging
- 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 - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
-
- 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/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【発明の属する技術分野】
本発明は、オブジェクトのキャッシュ方法に関し、より詳しくは、オブジェクトのクラスが階層的にレベル分けされているデータ構造、及びそのデータ構造におけるオブジェクトのキャッシング、及びキャッシュされたオブジェクトの破棄に関する。
【0002】
【従来の技術】
インターネットやイントラネットの普及に伴い、計算機の様々なアプリケーション・プログラムも分散環境で実行されるようになってきた。また、アプリケーション・システム開発で設計・分析段階からオブジェクト指向技術が用いられるようになり、実装上、様々なデータがオブジェクトとして表現され、分散計算機上に格納されている。さらに、ネットワーク・コンピュータ(NC)や携帯型簡易端末に代表されるような、主記憶や計算能力等のリソースに大きな制限を受ける計算機が広く用いられるようになってきた。
【0003】
このような環境では端末から遠隔計算機に格納されたオブジェクトを使用するのが一般的な実行形態であるが、端末の能力やネットワークの速度を考えると、多数のオブジェクトを処理対象とするような処理プログラムでは、端末側に必要なオブジェクトをキャッシュするのがよい方策である。必要なオブジェクトは、1個のオブジェクトではなく、まとめてアクセスが発生するであろうオブジェクトにより構成されるネットワーク構造単位にキャッシュした方がよい。これは、オブジェクト指向プログラミングの特徴として、(1)オブジェクトに多量のメッセージを送ることによって処理が進められ、メッセージを受けたオブジェクトは自分に関連したオブジェクトにさらにメッセージを送ることが多いこと、(2)さらにこのような処理が繰り返されて、関連し合った多数のオブジェクトにアクセスが行われるためである。
【0004】
また、データベース内のデータの一部をオブジェクトとして処理の対象とする場合を考えてみる。現実のプログラム開発では、特に過去のデータベース・システムとそのデータベースをそのまま使用する場合が多く、データベース内のデータをそのままオブジェクトとしてアクセスすることはできない。そこで、処理対象となる部分だけをアクセス可能なところへ変換・コピーして処理を行うこととなる。この場合、処理の対象となるのはただ1つのオブジェクトではなく、そのオブジェクトに関連した部分も必要となる。
【0005】
このようにキャッシュするオブジェクトをどのように決定するかは、端末におけるパフォーマンスを大きく左右する問題である。以下、キャッシュされるオブジェクトの範囲の決定方法についての従来技術について説明する。
【0006】
Java(Sun Microsystems社の商標)のオブジェクト・シリアライゼイション(Object Serialization)では、あるオブジェクトを一つ指定すると、基本的には、それから参照されているすべてのオブジェクトをシリアライズ(serialize)しようとする。その基本的アルゴリズムは、以下のようなものである。コピー処理の中で、オブジェクトの参照が出てきたときは、それが最初の出現であれば後に参照できるような番号を付した上で再帰的にコピー処理を繰り返す。2度以上出現したオブジェクトへの参照の場合は、最初の時に割り当てた番号をコピーする。このようにして、参照関係でたどられるオブジェクトで構成されるネットワークを完全に送ることができる。
【0007】
これはもれがない方法であるが、転送量の予測・制御が難しく、大量に連結されたオブジェクトによるネットワーク構造を送る場合には注意が必要となる。Java RMI(Remote Method Invocation)等では、オブジェクトの参照のうちトランジエント(transient)を指定することにより、ある程度の制御を可能にしている。しかし、これはプログラミング時に固定的に指定するものであり、実行時の状況に合わせて動的に変化させることができないので柔軟性に欠ける。
【0008】
データベースの内容をオブジェクトとして実体化する場合は、データベース・システムのアーキテクチャにも影響されるが、クラスの定義においてローカル・ポインタとグローバル・ポインタを定義することにより、オブジェクトの転送範囲をあらかじめ制御する技術がある(例えば、コンテナ・オブジェクト(福田他,”関係データベース状に構築するオブジェクトサーバーのためのデータモデルとC++インターフェース,” 情報処理学会第45回大会(平成4年後期)(4),p.4−111、Entity/Dependent (IBM,”San Francisco Project Technical Summary,” http://www.ibm.com/Java/Sanfransisco )を参照のこと。)。しかし、処理の場面ごとに転送対象や転送範囲を動的に変更することは困難である。
【0009】
また、クラスタ概念を用いて関連するクラスタ内のオブジェクトをすべてそのまま転送実体化するものもある(例えば、オブジェクトストア(Object Design Inc. ”User Guide ObjectStore Release 3.0 For OS/2 and AIX/xlc System,” Jan. 1994, pp.42−44)を参照のこと)。この方式では、オブジェクトを2次記憶装置内に生成する場合にクラスタを指定しておく。実装では、2次記憶装置と主記憶のページをクラスタ単位とすることにより、オブジェクトの参照をたどるといった転送におけるCPUの計算を不要にし、より効率的なキャッシュを目指している。しかし、クラスタ内のオブジェクトは無条件に転送されるため、クラスタの構成方法によっては無駄なオブジェクトが転送される可能性がある。特に分散環境で転送時間がかかる場合は通信量が増えてパフォーマンスが落ちる。また、クラスタ単位である程度の制御(キャッシュのポリシーの選択)はできるが、実行時に、特にオブジェクト生成後のオブジェクトのネットワークの変化等の動的な変更に動的に対応できないという欠点がある。
【0010】
アプリケーション・プログラムやフレームワーク等では、キャッシュについても、それぞれのオブジェクトの設計者がプログラミングするという方法がとられてきた。これは、注意深くプログラミングすれば、かなり柔軟性もあり効果も期待できるものである。しかし、かなり高度なプログラミング技術を必要とし、特にキャッシュの解放では、キャッシュ内の参照関係の一貫性を保持するのは困難である。
【0011】
先に述べたようなオブジェクトにより構成されるネットワーク構造をキャッシュしている時に、強制的なキャッシュの解放は、オブジェクトの解放そのものの違法、無効なオブジェクトへの違法な参照などを引き起こす原因となる。これは、オブジェクトにより構成されるネットワーク構造同士ではオブジェクトの共有も可能であり、また、あるネットワーク内から別のネットワーク内への参照も自由だからである。よって、一貫性を保持するような特別なガベージコレクションが必要である。
【0012】
オブジェクトのキャッシュ外へのアクセスの検出については、ハードウエア的あるいはソフトウエア的にアクセスしたことをフックできるようなメカニズムを用いる場合が多い(例えば、オブジェクトストア(Object Design Inc. ”User Guide ObjectStore Release 3.0 For OS/2 and AIX/xlc System,” Jan. 1994, pp.9−11)を参照のこと)。これは、プログラムを実行しているプロセッサからは通常のオブジェクトへの参照を使ってアクセスするだけで特定のルーチンが起動できるもので、通常のプログラムとして特別な記述をする必要がない。
【0013】
【発明が解決しようとする課題】
以上述べたような、キャッシュするオブジェクトの範囲を決定する手法では、様々な処理の場面に対応してキャッシュ対象オブジェクトを動的に変更することができない。
【0014】
よって、本発明の目的は、処理の各場面に応じて、キャッシュ対象オブジェクトを動的に変更することができるような方法を提供することである。
【0015】
また、キャッシュ対象オブジェクトの動的な変更に対してキャッシュ全体の一貫性を保持できるような方法を提供することも目的である。
【0016】
さらに、キャッシュ対象オブジェクトの動的な変更を実施可能とするデータ構造を提供することも目的である。
【0017】
また、アプリケーション・プログラムの性質に合わせてキャッシュ対象オブジェクトをカスタマイズすることを可能とすることも目的である。
【0018】
さらに、キャッシュ対象オブジェクトの動的な計算のコストを、実装可能な範囲に抑えることも目的である。
【0019】
【課題を解決するための手段】
最初に、キャッシュ対象オブジェクトの動的な変更を実施可能とするデータ構造について説明する。少なくとも、このデータ構造は、データ構造内のオブジェクトのクラスが階層的にレベル分けされている必要がある。このレベルごとにキャッシュするか否かを決定する。また、1のレベルに属する第1クラスの第1オブジェクトから他のレベルに属する第2クラスの第2オブジェクトへ参照が生じる際にキャッシュすべきオブジェクトを決定するための計算の起点となるルート・オブジェクトのクラスが、各レベルごとに定義される必要もある。
【0020】
但し、ルート・オブジェクトは、参照元オブジェクトである、1のレベルに属する第1クラスの第1オブジェクト、又は参照先オブジェクトである、他のレベルに属する第2クラスの第2オブジェクトとすることもできる。この際には、キャッシュ対象オブジェクトを決定する際にルート・オブジェクトを検出する処理が簡略化される。
【0021】
アプリケーション・プログラムを作成する者は、例えば、処理の内容の詳細度に基づき、階層的にレベル分けされたクラスを定義しつつプログラミングすることにより、オブジェクトのキャッシングをより効率化することができる。但し、このデータ構造は、アプリケーション・プログラムを作成する者以外の者が定義してもよい。以下で述べるキャッシュ処理は、アプリケーション・プログラム特有の情報は用いず、且つアプリケーション・プログラム特有のロジックとは独立にキャッシングを行うものである。
【0022】
さらに、1のレベルに属する第1クラスの第1オブジェクトから他のレベルに属する第2クラスの第2オブジェクトへの参照が生じる際に第1クラスの第1オブジェクトから直接又は間接的に参照をたどることができるオブジェクトのクラスであって他のレベルに属するクラスのグループを、第1クラス及び第2クラスの組ごと又は第1クラスごとに定義するようにできる。単なるレベルのみならず、特定のクラスに属するオブジェクト間の参照に合わせた、クラスのグループを定義しているので、このグループごとにキャッシュすべきオブジェクトを決定できる。すなわち、よりオブジェクトの参照実態に合わせた、きめ細かいキャッシングを行うことが可能になる。
【0023】
一方、レベルのみ定義されたデータ構造に基づくオブジェクトをキャッシュする場合には、1のレベルに属する第1クラスの第1オブジェクトから他のレベルに属する第2クラスの第2オブジェクトへ参照が生じたことに応答して、他のレベルに属するクラスを検出するステップと、これまでにキャッシュされておらず且つ第1クラスの第1オブジェクト以降参照をたどることができ且つ他のレベルに属するクラスのオブジェクトを、キャッシュ対象オブジェクトとして指定するステップとを実施する。
【0024】
加えて、他のレベルに属するクラスのオブジェクト及びキャッシュされるレベルの順番において昇順のレベル間の参照が生じる場合の参照先オブジェクトを除き、これまでにキャッシュされておらず且つ第1クラスの第1オブジェクト以降参照をたどることができるオブジェクトを、キャッシュ対象オブジェクトとして指定するステップをさらに実施することも考えられる。キャッシュされるレベルの順番において降順のレベル間の参照が生じた場合のキャッシングを規定している。
【0025】
さらに、グループ分けも実施されているデータ構造に基づくオブジェクトをキャッシュする場合には、あるレベルに属する第3クラスの第3オブジェクトから他のレベルに属する第4クラスの第4オブジェクトへの参照が生じることに応答して、第3クラス及び前記第4クラスの組又は第3クラスにより定義されるグループを求めるステップと、これまでにキャッシュされておらず且つ第3クラスの第3オブジェクト以降参照をたどることができ且つ第3クラス及び第4クラスの組又は第3クラスにより定義されるグループに属するクラスのオブジェクトを、キャッシュ対象オブジェクトとして指定するステップとを実施する。これにより、特定のクラスに属するオブジェクト間の参照に対応して、より実行状態に即したキャッシングを実行することができる。
【0026】
加えて、第3クラス及び第4クラスの組又は第3クラスにより定義されるグループに属するクラスのオブジェクト及びキャッシュされるレベルの順番において昇順のレベル間の参照が生じる場合の参照先オブジェクトを除き、これまでにキャッシュされておらず且つ第3クラスの第3オブジェクト以降参照をたどることができるオブジェクトを、キャッシュ対象オブジェクトとして指定するステップをさらに実施することも考えられる。キャッシュされるレベルの順番において降順のレベル間の参照が生じた場合のキャッシングを規定している。
【0027】
以上のキャッシング方法は、クラスのレベル分け及びグループ分けに基づいて行われる。また、同じクラスでも同一のオブジェクトがキャッシュされるとは限らない。よって、より実行状態又は使用状態に即した動的なキャッシングがなされる。
【0028】
一方、キャッシュ内のオブジェクトの破棄の方法としては、キャッシュされている順番でn−1番目のレベルに属するクラスのオブジェクトであって、レベルnに属するクラスのオブジェクトへの参照を有する、レベルnのキー・オブジェクトを検出するステップと、検出されたレベルnのキー・オブジェクトの、レベルnに属するクラスのオブジェクトへの参照を無効化するステップと、レベルnのキー・オブジェクトから参照をたどることができ且つレベルn以上のレベルに属するオブジェクトを破棄するステップとを含む。このように、キャッシュされる順番でn番目のレベルn以降のキャッシュを破棄する場合でも、キャッシュされている順番でn−1番目に属するクラスのオブジェクトであって、レベルnに属するクラスのオブジェクトへの参照を有する、レベルnのキー・オブジェクトを基準にオブジェクトの破棄を実施すれば、参照関係の一貫性を保つことができる。なお、この方法は、他のプログラムなどから命じられることにより実行される。
【0029】
以上の述べた方法は、プログラムによって実現することも、専用の装置を用いて実現することも可能である。このように実現形態を変更することは、以下の説明を理解した当業者が通常行うことのできる事項である。さらに、このプログラム及び上記データ構造を、CD−ROMやフロッピー・ディスクなどの記憶媒体に格納することは当業者が通常行うことである。
【0030】
【発明の実施の形態】
本発明が実施されるコンピュータ・システムの一例を図1に示す。このコンピュータ・システムでは、コンピュータ1及び5がネットワーク7にてサーバ9に接続されている。そして、コンピュータ1及びサーバ9にはディスク装置3及び11が接続されている。コンピュータ1は、サーバ9に接続されたディスク装置11内のオブジェクトを使用する際に、本発明により決定されるキャッシュ対象オブジェクトを、コンピュータ1内のメインメモリ(図示せず)又はディスク装置3に格納する。また、コンピュータ5のようにディスク装置を有しないコンピュータの場合には、メインメモリ(図示せず)にキャッシュする。また、コンピュータ1は自己に接続されているディスク装置3に格納されたオブジェクトをメインメモリに読み込む場合に本発明を実施してもよい。この際、コンピュータ1はネットワーク7に接続されている必要ない。さらに、コンピュータ1又は5のサーバ9に対する接続は、固定的なネットワークだけでなく、ワイアレスであってもよいし、必要に応じて電話回線にて接続する形式を用いてもよい。
【0031】
次にサーバ9(コンピュータ1がディスク装置3に記憶されたデータ構造内のオブジェクトをキャッシュする場合にはコンピュータ1)が実行するアルゴリズム及びディスク装置11(又はディスク装置3)が格納するオブジェクトのデータ構造について、概略を説明する。図2に示したようにオブジェクトのクラスはレベル分けがなされている。例えば、最下層のレベル1のクラスは、全体の中の概要の処理で使用されるオブジェクトのクラス、あるいは、処理全体で一様に広く用いられるオブジェクトのクラスが属するようにする。より上のレベルに属するクラスは、より詳細な処理で使用されるオブジェクトのクラスとする。
【0032】
図3に示された同心円は処理対象のオブジェクトの集合をレベル別に円で表現したものである。中央の小さな円がレベル1で、順次レベルが上がるごとに外側の円で表される。円の大きさはそのレベルに含まれるオブジェクトの総数も直感的に表している。処理の一番最初の時点では、レベル1のオブジェクトだけがキャッシュされている。
【0033】
同心円内部に描かれた小円は実際処理を行ったオブジェクトを表す。矢印はオブジェクト間の参照関係で、実際にオブジェクトが活性化されていった順番も表す。また、処理が進むにつれてキャッシュされるオブジェクトの集合をハッチングで表している。処理が進むと、レベル1のあるオブジェクトのさらに詳細な処理を行うためにレベル2の一部のオブジェクトが活性化される。同様に、レベル2のあるオブジェクトのさらに詳細な処理を行うためにレベル3の一部のオブジェクトが活性化される。
【0034】
次の詳細な処理に移るタイミングを知るために、キーとなるオブジェクトが一つ前のレベルのキャッシュに存在している。これを、アクセスされるオブジェクトが属するレベルのキー・オブジェクトと呼ぶ。図3中においては、黒丸小円で表されている。ここでは、同時に次のレベル(アクセスされるオブジェクトが属するレベル)のキャッシュ対象を計算する際に出発点となるものでもある。この出発点となるオブジェクトをルート・オブジェクトと呼ぶが、一般的にはキー・オブジェクトとルート・オブジェクトは同一でなく、ルート・オブジェクトはアプリケーション・プログラム固有の意味情報を用いて設定することも可能である。
【0035】
このキー・オブジェクトから次のレベルのオブジェクトへのアクセスが発生したときに、キャッシュ対象オブジェクトの計算が始まる。すなわち、ルート・オブジェクトからたどることができる、そのレベルのクラスのオブジェクトを収集する。図3の例では、レベル3のキー・オブジェクトであり且つルート・オブジェクトでもあるオブジェクトaからレベル3のオブジェクトbへアクセスがあった場合には、オブジェクトaからたどることができるレベル3のオブジェクトb,c,d,eがキャッシュ対象オブジェクトとして指定される。
【0036】
なお、オブジェクト間のアクセス・パターンによって、クラスの集合であるレベルをさらに細かく分けることも可能である。これは、同じレベルの処理であっても複数の種類が存在する場合に対応するためである。図3の例では、オブジェクトb,c,d,eをオブジェクトa及びbにより指定されたグループとして、レベル分けとは別に定義することができる。
【0037】
キャッシュの一部を破棄する場合は、このレベル単位に行う。すなわち、あるレベルとそのレベルより大きいレベルに属するクラスのオブジェクトを解放する。あるレベルより上のレベルを残したまま、当該あるレベルを解放することはできない。これは、レベルが処理の詳細度を表していることを考えれば自然である。実際に破棄する場合には、あるレベルのキー・オブジェクトをすべて集め、そこからたどることができるオブジェクトで、このレベルより上のクラスのオブジェクトを全て解放すればよい。オブジェクトの解放による参照ポインタの無効化は、このレベルのキー・オブジェクトのみに注目すればよい。キャッシュ全体のガベージ・コレクションなどの処理は不要である。図3の例でレベル3以上を破棄する場合、レベル3のキー・オブジェクトa,f,gを集めて、これらのキー・オブジェクトa,f,gからたどることができるオブジェクトb,c,d,eを破棄する。さらに、キー・オブジェクトa,f,gの参照ポインタを無効化する。
【0038】
以上の本発明の概要を踏まえて、以下、本発明の詳細を説明する。最初に、いくつかの定義及び表記法を述べる。
【0039】
(1)クラスの表記
クラスはC、Ciのように表す。ここで下付iはクラスの番号を表す。後で用いるが、上付文字はクラスが属するレベルの番号を表す。
(2)オブジェクトの表記
オブジェクトはO、Oiのように表す。下付及び上付の意味はクラスと同じである。また、Oの属するクラスをClass(O)のように表す。
(3)その他
オブジェクトOiがOjへの参照を有する時、Oi→Ojと表す。同じ表記でプログラム実行中にOiの中からOjを参照したというアクセス・パターンをも表す。クラスCiからクラスCjへ参照がある場合には、Ci→Cjと表す。特に、Class(Oi)=Ci,Class(Oj)=Cjならば、Oi→Oj⇔Ci→Cjである。
さらに間接的に参照をたどることができる場合には、Ci→*Cj(閉包:参照先を参照元が含む)、Ci→+Cj(正の閉包:参照先を参照元が含まない)と表す。特に途中の経路を指定する場合には、Ci{→Ck}*→Cj,Ci{→Ck}+→Cjなどと表す。
【0040】
A.データ構造の定義
では、キャッシュされるオブジェクトのデータ構造の定義を行う。
Level(1)は、最初の処理でキャッシュされるオブジェクトのクラスの集合である。これをLevel(1)={C1 1,C2 1,C3 1,...}と表す。ここで、レベル1のルート・オブジェクトをOrootとすると、プログラム実行開始時にはOrootからたどることができるCi 1(i=1,....)のインスタンスすべてがキャッシュされる。どのクラスをLevel(1)に入れるかは、アプリケーション・プログラムの性質によってアプリケーション・プログラムの設計者が任意に指定することができる。
【0041】
Level(n)はレベルnに属するクラスの集合である。レベルn−1に属するクラスの中でレベルnのオブジェクトへ参照を有するオブジェクトのクラスを、Key(n)とする。これを記号で表すと、以下のようになる。
【数1】
このKey(n)のクラスのオブジェクトを、キー・オブジェクトという。
【0042】
キー・オブジェクトからの任意のアクセス・パターンCi n−1→Cj n(Ci n−1はキー・オブジェクトのクラスであって、Cj nはレベル1からn−1のレベルに属するクラスではない)に対して、
Group(Ci n−1→Cj n)={Cj n,Cij1 n,Cij2 n,...}
関数fgetRoot(Ci n−1→Cj n)→Cij−root
を設計・定義することもできる。これは、アクセス・パターンCi n−1→Cj n(両クラスに属するオブジェクト間のアクセス)が実行時に起きた時に、fgetRoot関数で決まるルート・オブジェクトCij−rootからたどることができるCj n,Cij1 n,Cij2 n,...をGroupとして定義している。ルート・オブジェクトは、Cj n,Cij1 n,Cij2 n,...にたどることができ、且つレベルn−1に属するクラスのオブジェクト又はキー・オブジェクトから参照されるオブジェクトに限定される。これを記号で表すと、以下のようになる。
【数2】
【数3】
なお、Level(n)は以下のように定義し直すこともできる。
【数4】
【0043】
これをKey(n)=φとなるまで繰り返すことにより、データ構造Level(n)(n≧2)及び{Level(1),Group(Ci 1→Cj 2),...Group(Ci n−1→Cj n)}及び関数fgetRoot及びKey(n)を設計・定義することができる。これらは、次に述べるキャッシュ対象オブジェクトを決定する際に用いられる。
【0044】
なお、Group(Ci n−1→Cj n)は実際のアプリケーション・プログラムでは、アクセス・パターンによらず一定のクラス集合にしたり(Groupを定義しない)、キー・オブジェクトのクラスだけで与えること(Group(Ci n−1))なども考えられる。同様に、fgetRoot関数も、キー・オブジェクトやその参照先オブジェクトのクラスをそのまま値とするならば、後の処理は簡単化される。
【0045】
ここで設計・定義されたデータ構造は、例えば図1のサーバ9のディスク装置11又はコンピュータ1のディスク装置3に記憶される。さらに、携帯可能な記憶装置に記憶される場合もある。
【0046】
B.キャッシュの制御アルゴリズム
キャッシュの制御アルゴリズムは、(1)処理の最初にLevel(1)をキャッシュする部分の処理、(2)レベルnの処理中にキャッシュ内でアクセス・パターンOn→On+1が生じた時に新たにキャッシュを追加する部分の処理、(3)使わなくなったキャッシュを破棄する部分の処理、を含む。(1)の部分の処理は、レベル1のルート・オブジェクトをOrootとすると、プログラム実行開始時にはOrootからたどることができるCi 1(i=1,....)のインスタンスすべてがキャッシュされることとして、説明を省略する。この他にキャッシュの一貫性管理のメカニズムも必要であるが、キャッシュ内容を元データへ更新する場合には、オブジェクト単位で行えばよく、従来の手法がそのまま使えるので説明は省略する。
【0047】
(2)レベルnの処理中にキャッシュ内でアクセス・パターンOn→On+1が生じた時に新たにキャッシュを追加する部分の処理
ここでは、既にレベルnまではキャッシュされているとする。以下、On→On+1というアクセスが発生した時、キャッシュ対象オブジェクトの決定アルゴリズムを図4及び図5を用いて説明する。
【0048】
(イ)On→On+1及びfgetRoot関数を用いて、対応するルート・オブジェクトOrとキャッシュするクラスの集合Group(Ci n→Cj n+1)を求める(ステップ110)。なお、データ構造によっては、Group(Ci n→Cj n+1)が定義されておらず、Level(n+1)又はGroup(Ci n)が定義されている場合もあるが、その場合には定義してあるクラスの集合を使用する。また、アプリケーション・プログラム固有の性質を用いてOrを定義している場合はそれを用い、そうでない場合にはOr=On又はOr=On+1であるからOrは簡単に求められる。
【0049】
(ロ)Orから参照をたどっていって得られる、Group(Ci n→Cj n+1)のクラスのオブジェクトOすべてを出発オブジェクトとしてdoCopy(O)を実行する(ステップ120)。doCopy(O)は図5を用いて説明する。Group(Ci n→Cj n+1)のクラスのオブジェクトであっても、Orから参照をたどっていかれないオブジェクトも一般的には存在するので、そのようなオブジェクトは出発オブジェクトではない。オブジェクトOは以下のように定義される。
Class(Or)=Cj n+1の時
O=Or
それ以外の時Oは以下の式を満たすようなものである。すなわち、
Or{→O’}*→∀O且つClass(O’)∈Level(n)且つ
Class(O)∈Level(Ci n→Cj n+1)
【0050】
なお、キャッシュ対象オブジェクトの集合をActivatedn(On→On+1)とし、最初はActivatedn(On→On+1)=φとしておく。なお、doCopy(O)(図5)は再帰的に行われる。
【0051】
(ハ)doCopy(O)では、最初にオブジェクトOが既にキャッシュされるいるかどうか判断する(ステップ210)。オブジェクトOが既にキャッシュされている場合には、元の処理に戻る(ステップ270)。一方、オブジェクトOがまだキャッシュされていない場合には、オブジェクトOをActivatedn(On→On+1)に追加する。そして、Oの参照先オブジェクトOdに対し、ステップ240以下を実施する(ステップ230)。よって、オブジェクトOの参照先オブジェクトOdをすべて処理したか否か判断する。すべての参照先オブジェクトOdを処理したならば、元の処理に戻る。
【0052】
もし、処理していない参照先オブジェクトOdがある場合には、(a)OdのクラスはGroup(Ci n→Cj n+1)のメンバであるか、又は(b)OdのクラスはLevel(k)(1≦k≦n)に属しており且つ参照元オブジェクトOがキー・オブジェクトではないか、ということが判断される(ステップ240)。もし、(a)又は(b)の条件を満たす場合には、doCopy(Od)を実行する(ステップ250)。そして、OからOdへの参照を記録しておく。なお、このdoCopy(Od)は、参照先オブジェクトOdのさらに参照先オブジェクトについて処理していく点に注意が必要である。(a)の条件は、
【数5】
(b)の条件は、
【数6】
と記載できる。(b)の条件は、レベル間の参照が遡る形で生じた場合に過剰なキャッシュを防止するのに必要な条件である。
【0053】
もし、ステップ240のいずれの条件をも満たしていない場合には、結果的に参照先オブジェクトOdのクラスがLevel(n+2)のメンバであるか又は参照元オブジェクトが1以上n+1以下のレベルのキー・オブジェクトであるから、Od及びその先のオブジェクトをキャッシュ対象オブジェクトとして指定しない。但し、OからOdへのアクセスが生じた時には、図4及び図5の処理を起動できるように、doSetProxy(O→Od)で、参照関係を登録しておく(ステップ260)。
【0054】
このようにして、全ての出発オブジェクトOについて再帰的にdoCopy(O)を実施すれば、図4の処理を終了する。そして、Activatedn(On→On+1)のキャッシュ対象オブジェクトをキャッシュする。
【0055】
ここで、doCopy(O)の処理の例を示しておく。Level(2)={A,B},Level(3)={C}であって、クラスAのオブジェクトをa1,a2,a3,....、クラスBのオブジェクトをb1,b2,b3,....、クラスCのオブジェクトをc1,c2,c3,....とする。参照関係は図7に示したようにa1→c1→c2→b1→a2→b2→....となっているとする。ここで、key(3)={A}とする。最初に、図7のハッチング分、すなわちオブジェクトa1がキャッシュされているとする。
【0056】
その後、a1→c1というアクセスが発生すると、図4の処理が起動され(ここではc1がルート・オブジェクトであるとする)、最初にdoCopy(c1)が呼ばれる。
【0057】
1.最初の実行(doCopy(c1))
c1がキャッシュ対象オブジェクトとされる(ステップ220)。そして、c1の参照先オブジェクトc2はステップ230の最初の条件を満たすので、doCopy(c2)が呼ばれる。
2.一度目の再帰実行(doCopy(c2))
c2がキャッシュ対象オブジェクトとされる。そして、c2の参照先オブジェクトb1はクラスBのオブジェクトであるのでLevel(3)のオブジェクトではなく、ステップ230の最初の条件を満たさない。しかし、クラスBはlevel(2)のクラスであって、参照元オブジェクトc2のクラスCがkey(3)={A}ではないので、二番目の条件を満たす。よって、doCopy(b1)が呼ばれる。
【0058】
3.ニ度目の再帰実行(doCopy(b1))
b1がキャッシュ対象オブジェクトとされる。そして、b1の参照先オブジェクトa2のクラスAはLevel(2)であるので、Level(3)のオブジェクトではなく、ステップ230の最初の条件を満たさない。しかし、クラスAはLevel(2)のクラスであって、参照元オブジェクトb1のクラスBがkey(3)={A}でないので、二番目の条件を満たす。よって、doCopy(a2)が呼ばれる。
4.三度目の再帰実行(doCopy(a2)
a2がキャッシュ対象オブジェクトとされる。そして、a2の参照先オブジェクトb2のクラスBはLevel(2)であるので、Level(3)のオブジェクトではなく、ステップ230の最初の条件を満たさない。加えて、クラスBはLevel(2)のオブジェクトであるが、参照元オブジェクトa2のクラスAがkey(3)={A}であるから、二番目の条件も満たさない。よって、ステップ260に遷移してdoSetProxy(a2→b2)がセットされてステップ250を終了する。
【0059】
(1)及び(2)の処理は、図1のサーバ9が実行する処理である。但し、コンピュータ1がディスク装置3からキャッシュする場合には、コンピュータ1が実行する。
【0060】
(3)使わなくなったキャッシュを破棄する部分の処理
キャッシュの破棄も、基本的にはレベルごとに行う。但し、レベルnとそれより上位のレベルのオブジェクトを全て破棄することになる。破棄しようとするレベルより高いレベルをキャッシュに残したまま、そのレベルを破棄することは、参照の一貫性などの理由で不可能である。破棄するタイミング及びレベルの選択はアプリケーション・プログラムによって異なり、他のプログラムにて決定する。
【0061】
ここではレベルn以上のオブジェクトを破棄する場合を説明する(図6)。最初に、レベルnの全てのキー・オブジェクトOkey n−1を求める(ステップ310)。ここでキー・オブジェクトの定義をおさらいしておくと、キー・オブジェクトは、レベルnのオブジェクトに参照を有するレベルn−1のクラスのオブジェクトである。よって、レベルnのキー・オブジェクトはレベルn−1のオブジェクトである。そして、Okey n−1からレベルnのオブジェクトへの参照をdoSetProxyにセットする(ステップ320)。すなわち、次に、Okey n−1からレベルnのオブジェクトへの参照があった場合に、図4及び図5の処理を起動するように登録する。また、キャッシュ内の参照を無効にする。最後に、Okey n−1からたどることができるすべてのオブジェクトでレベルn以上のものだけを解放する(ステップ330)。
【0062】
以上のように、キー・オブジェクトからたどることのできる参照がきちんと処理されれば、キャッシュ内の参照関係の一貫性は保たれる。すなわち、有効なオブジェクトから解放されたオブジェクトへの参照が生じることはない。但し、どこからも参照されることのない、レベルn未満のオブジェクトが残る可能性はあるが、通常のガベージ・コレクションで問題なく処理できる。
【0063】
(3)の処理は、コンピュータ1(又はコンピュータ3)が実行する。
【0064】
ここまで定義してきたクラスは必ずしもプログラミング言語上のクラスに一致するとは限らない。本方式でいうクラスはあくまでもそのインスタンスの個数がキャッシュ対象として意味があるようなものを考えている。しかし、現実には、Level(1)を除いて一般的なクラスと一致させても問題はないことが多い。Level(1)に関しては、一般的なクラスとは別の指定方法を使用した方がよい場合もある。
【0065】
【実施例】
図8のようなクラス階層を考える。クラスAには100個のオブジェクトが存在し、Aのオブジェクト1つにBのオブジェクト100個、Bのオブジェクト1つにCのオブジェクト100個がつながっているとする。このようなクラス階層の全オブジェクト数は100万個を超えるので、全てを一時にキャッシュするのは現実的ではない。ここで、キャッシュを必要とする処理として、Aのオブジェクトのみを対象に処理するPa、Aのオブジェクト1個とそれから得られる全てのBのオブジェクトを処理するPb、A,Bのオブジェクト1個ずつとそれから得られるすべてのCのオブジェクトを処理するPcという3つの処理を考える。
【0066】
そうすると、以下のようなデータ構造を決定することができる。
Level(1)={A}
key(2)={A},Level(2)={B},fgetRoot(a→b)=a
key(3)={C},Level(3)={C},fgetRoot(b→c)=b
(Class(a)=A,Class(b)=B,Class(c)=C)
【0067】
実行時には、まずPa処理が行われるので、Level(1)に相当するAのオブジェクトがすべてキャッシュされる。すなわち100個のAのオブジェクトのみがキャッシュされる。処理がPbに移った時、あるAのオブジェクトaがBのオブジェクトbにアクセスした場合、Level(2)のキャッシュActivated2(a→∀b)が新たにキャッシュされる。同様にPcの処理に移った時もActivated3(b→∀c)がキャッシュされる。この時点で、キャッシュに存在するオブジェクトの数は300個であり適当な数である。
【0068】
また図8のようなクラス階層で、まったく別のアクセス・パターンとなる処理を考える。すなわち、AのオブジェクトaからBのオブジェクトbをアクセスした時に始まる処理P’bは、BからたどることができるCのクラスのオブジェクトをも処理対象とする。これは、最初の例が広さ優先のアクセス・パターンでオブジェクトのネットワークを処理していたのに対し、深さ優先のアクセス・パターンによる処理になったものである。このとき、データ構造は以下のように定義しなおされる。
【0069】
Level(1)={A}
Key(2)={A},Level(2)={B,C},fgetRoot(a→b)=b
【0070】
これによりbをアクセスした時点で、bからたどることができるCのオブジェクトがすべてキャッシュされる。これで、この処理で必要十分なオブジェクトがキッッシュされる。なお、Bのオブジェクトにアクセスした時点で、201個のオブジェクトがキャッシュされる。
【0071】
さらに、別のキャッシュ方略として、AのオブジェクトからB,及びBからCはそれぞれ1つの処理の中では一つしかキャッシュしないとする。AからBへアクセスした段階では、その先のCオブジェクト100個のうちどの一つをキャッシュすればよいかは、アプリケーション・プログラムの処理内容を解析せずに知るのは不可能である。よって、このアクセスではB一個のみのレベルがキャシュされる。BからCへアクセスした時点では、次のレベルのキャッシュとしてCのオブジェクトが1個キャッシュされる。このときのデータ構造は以下のとおりである。
【0072】
Level(1)={A}
Key(2)={A},Level(2)={B},fgetRoot(a→b)= b
Key(3)={B},Level(3)={C},fgetRoot(a→b)= b
【0073】
Cがアクセスされた段階で、102個のオブジェクトがキャッシュされることになる。
【0074】
これらの例において注目すべきは、アプリケーション・プログラム内容はもちろんのこと、キャッシュ・アルゴリズムを変更することなく、データ構造を変更することにより複数のキャッシュ方略を可能にしている点である。このことは、本発明を用いれば、アプリケーション固有の性質に合わせて自由にキャッシュ方式を設計可能であり、また、アプリケーション・プログラム開発後にパフォーマスンス・チューニングが容易に行うことができることができるということを意味している。
【0075】
【効果】
処理の各場面に応じて、キャッシュ対象オブジェクトを動的に変更することができるような方法を提供することができた。
【0076】
また、キャッシュ対象オブジェクトの動的な変更に対してキャッシュ全体の一貫性を保持できるような方法を提供することもできた。
【0077】
さらに、キャッシュ対象オブジェクトの動的な変更を実施可能とするデータ構造を提供することもできた。
【0078】
また、アプリケーション・プログラムの性質に合わせてキャッシュ対象オブジェクトをカスタマイズすることを可能とする方法を提供することもできた。
【0079】
さらに、キャッシュ対象オブジェクトの動的な計算のコストを、実装可能な範囲に抑えることもできた。
【図面の簡単な説明】
【図1】本発明が実施されるコンピュータ・システムの一例である。
【図2】本発明の階層的なデータ構造の一例を示す図である。
【図3】本発明を用いたキャッシングの様子の一例を示す図である。
【図4】キャッシュ対象オブジェクトの選択アルゴリズムを表す図である。
【図5】図4の中で用いられるdoCopy(O)のアルゴリズムを表す図である。
【図6】キャッシュ破棄アルゴリズムを表す図である。
【図7】doCopy(O)のアルゴリズムの説明のためのデータ構造を表す図である。
【図8】実施例を説明するためのクラス階層を表す図である。
【符号の説明】
1 コンピュータ
3 ディスク装置
5 コンピュータ
7 ネットワーク
9 サーバ
11 ディスク装置
Claims (16)
- オブジェクトのクラスが階層的にレベル分けされているデータ構造内のキャッシュすべきオブジェクトを選択する方法であって、
1のレベルに属する第1クラスの第1オブジェクトから他のレベルに属する第2クラスの第2オブジェクトへ参照が生じたことに応答して、前記他のレベルに属するクラスを検出するステップと、
これまでにキャッシュされておらず且つ前記第1クラスの第1オブジェクト以降参照をたどることができ且つ前記他のレベルに属するクラスのオブジェクトを、キャッシュ対象オブジェクトとして指定するステップと、
を含むキャッシュ対象オブジェクト選択方法。 - 前記他のレベルに属するクラスのオブジェクト及びキャッシュされるレベルの順番において昇順のレベル間の参照が生じる場合の参照先オブジェクトを除き、これまでにキャッシュされておらず且つ前記第1クラスの第1オブジェクト以降参照をたどることができるオブジェクトを、キャッシュ対象オブジェクトとして指定するステップと、
をさらに含む請求項1記載のキャッシュ対象オブジェクト選択方法。 - オブジェクトのクラスが階層的にレベル分けされており、1のレベルに属する第1クラスの第1オブジェクトから他のレベルに属する第2クラスの第2オブジェクトへの参照が生じる際に前記第1クラスの第1オブジェクトから直接又は間接的に参照をたどることができるオブジェクトのクラスであって前記他のレベルに属するクラスのグループが、前記第1クラス及び前記第2クラスの組ごとに定義されているデータ構造において、当該データ構造内のキャッシュすべきオブジェクトを選択する方法であって、
あるレベルに属する第3クラスの第3オブジェクトから他のレベルに属する第4クラスの第4オブジェクトへの参照が生じることに応答して、前記第3クラス及び前記第4クラスの組により定義されるグループを求めるステップと、
これまでにキャッシュされておらず且つ前記第3クラスの第3オブジェクト以降参照をたどることができ且つ前記第3クラス及び前記第4クラスの組により定義されるグループに属するクラスのオブジェクトを、キャッシュ対象オブジェクトとして指定するステップと、
を含むキャッシュ対象オブジェクト選択方法。 - 前記第3クラス及び前記第4クラスの組により定義されるグループに属するクラスのオブジェクト及びキャッシュされるレベルの順番において昇順のレベル間の参照が生じる場合の参照先オブジェクトを除き、これまでにキャッシュされておらず且つ前記第3クラスの第3オブジェクト以降参照をたどることができるオブジェクトを、キャッシュ対象オブジェクトとして指定するステップと、
をさらに含む請求項3記載のキャッシュ対象オブジェクト選択方法。 - オブジェクトのクラスが階層的にレベル分けされており、1のレベルに属する第1クラスの第1オブジェクトから他のレベルに属する第2クラスの第2オブジェクトへの参照が生じる際に前記第1クラスの第1オブジェクトから直接又は間接的に参照をたどることができるオブジェクトのクラスであって前記他のレベルに属するクラスのグループが、前記第1クラスごとに定義されているデータ構造において、当該データ構造内のキャッシュすべきオブジェクトを選択する方法であって、
あるレベルに属する第3クラスの第3オブジェクトから他のレベルに属する第4クラスの第4オブジェクトへの参照が生じることに応答して、前記第3クラスにより定義されるグループを求めるステップと、
これまでにキャッシュされておらず且つ前記第3クラスの第3オブジェクト以降参照をたどることができ且つ前記第3クラスにより定義されるグループに属するクラスのオブジェクトを、キャッシュ対象オブジェクトとして指定するステップと、
を含むキャッシュ対象オブジェクト選択方法。 - オブジェクトのクラスが階層的にレベル分けされているデータ構造において、キャッシュされる順番でn番目のレベルn以降のレベルに属するクラスの、キャッシュされたオブジェクトを破棄する方法であって、
キャッシュされている順番でn−1番目のレベルに属するクラスのオブジェクトであって、前記レベルnに属するクラスのオブジェクトへの参照を有する、前記レベルnのキー・オブジェクトを検出するステップと、
検出された前記レベルnのキー・オブジェクトの、前記レベルnに属するクラスのオブジェクトへの参照を無効化するステップと、
前記レベルnのキー・オブジェクトから参照をたどることができ且つ前記レベルn以上のレベルに属するオブジェクトを破棄するステップと、
を含むオブジェクト破棄方法。 - 記憶装置に格納された、オブジェクトのクラスが階層的にレベル分けされているデータ構造内のキャッシュすべきオブジェクトを選択するコンピュータであって、
1のレベルに属する第1クラスの第1オブジェクトから他のレベルに属する第2クラスの第2オブジェクトへ参照が生じたことに応答して、前記他のレベルに属するクラスを検出するクラス・デテクタと、
これまでにキャッシュされておらず且つ前記第1クラスの第1オブジェクト以降参照をたどることができ且つ前記他のレベルに属するクラスのオブジェクトを、キャッシュ対象オブジェクトとして指定するオブジェクト指定プロセッサと、
を有するコンピュータ。 - 前記オブジェクト指定プロセッサが、
前記他のレベルに属するクラスのオブジェクト及びキャッシュされるレベルの順番において昇順のレベル間の参照が生じる場合の参照先オブジェクトを除き、これまでにキャッシュされておらず且つ前記第1クラスの第1オブジェクト以降参照をたどることができるオブジェクトを、キャッシュ対象オブジェクトとしてさらに指定する、請求項7記載のコンピュータ。 - オブジェクトのクラスが階層的にレベル分けされており、1のレベルに属する第1クラスの第1オブジェクトから他のレベルに属する第2クラスの第2オブジェクトへの参照が生じる際に前記第1クラスの第1オブジェクトから直接又は間接的に参照をたどることができるオブジェクトのクラスであって前記他のレベルに属するクラスのグループが、前記第1クラス及び前記第2クラスの組ごとに定義されているデータ構造を格納した記憶装置から、当該データ構造内のキャッシュすべきオブジェクトを選択するコンピュータであって、
あるレベルに属する第3クラスの第3オブジェクトから他のレベルに属する第4クラスの第4オブジェクトへの参照が生じることに応答して、前記第3クラス及び前記第4クラスの組により定義されるグループを検出するグループ・デテクタと、
これまでにキャッシュされておらず且つ前記第3クラスの第3オブジェクト以降参照をたどることができ且つ前記第3クラス及び前記第4クラスの組により定義されるグループに属するクラスのオブジェクトを、キャッシュ対象オブジェクトとして指定するオブジェクト指定プロセッサと、
を有するコンピュータ。 - 前記オブジェクト指定プロセッサが、
前記第3クラス及び前記第4クラスの組により定義されるグループに属するクラスのオブジェクト及びキャッシュされるレベルの順番において昇順のレベル間の参照が生じる場合の参照先オブジェクトを除き、これまでにキャッシュされておらず且つ前記第3クラスの第3オブジェクト以降参照をたどることができるオブジェクトを、キャッシュ対象オブジェクトとしてさらに指定する、請求項9記載のコンピュータ。 - オブジェクトのクラスが階層的にレベル分けされているデータ構造において、キャッシュされる順番でn番目のレベルn以降のレベルに属するクラスの、キャッシュされたオブジェクトを破棄するコンピュータであって、
キャッシュされている順番でn−1番目のレベルに属するクラスのオブジェクトであって、前記レベルnに属するクラスのオブジェクトへの参照を有する、前記レベルnのキー・オブジェクトを検出するキー・オブジェクト・デテクタと、
検出された前記レベルnのキー・オブジェクトの、前記レベルnに属するクラスのオブジェクトへの参照を無効化する参照無効化プロセッサと、
前記レベルnのキー・オブジェクトから参照をたどることができ且つ前記レベルn以上のレベルに属するオブジェクトを破棄するオブジェクト破棄プロセッサと、
を有するコンピュータ。 - オブジェクトのクラスが階層的にレベル分けされているデータ構造内のキャッシュすべきオブジェクトをコンピュータに選択させるプログラムを格納した記憶媒体であって、
前記プログラムは、前記コンピュータに、
1のレベルに属する第1クラスの第1オブジェクトから他のレベルに属する第2クラスの第2オブジェクトへ参照が生じたことに応答して、前記他のレベルに属するクラスを検出するステップと、
これまでにキャッシュされておらず且つ前記第1クラスの第1オブジェクト以降参照をたどることができ且つ前記他のレベルに属するクラスのオブジェクトを、キャッシュ対象オブジェクトとして指定するオブジェクト指定ステップと、
を実行させる、記憶媒体。 - 前記オブジェクト指定ステップが、
キャッシュされるレベルの順番において昇順のレベル間の参照が生じる場合の参照先オブジェクトを除き、これまでにキャッシュされておらず且つ前記第1クラスの第1オブジェクト以降参照をたどることができるオブジェクトを、キャッシュ対象オブジェクトとして指定するステップを含む、請求項12記載の記憶媒体。 - オブジェクトのクラスが階層的にレベル分けされており、1のレベルに属する第1クラスの第1オブジェクトから他のレベルに属する第2クラスの第2オブジェクトへの参照が生じる際に前記第1クラスの第1オブジェクトから直接又は間接的に参照をたどることができるオブジェクトのクラスであって前記他のレベルに属するクラスのグループが、前記第1クラス及び前記第2クラスの組ごと又は前記第1クラスごとに定義されているデータ構造において、当該データ構造内のキャッシュすべきオブジェクトをコンピュータに選択させるためのプログラムを格納した記憶媒体であって、
前記プログラムは、前記コンピュータに、
あるレベルに属する第3クラスの第3オブジェクトから他のレベルに属する第4クラスの第4オブジェクトへの参照が生じることに応答して、前記第3クラス及び前記第4クラスの組又は前記第3クラスにより定義されるグループを求めるステップと、
これまでにキャッシュされておらず且つ前記第3クラスの第3オブジェクト以降参照をたどることができ且つ前記第3クラス及び前記第4クラスの組又は前記第3クラスにより定義されるグループに属するクラスのオブジェクトを、キャッシュ対象オブジェクトとして指定するオブジェクト指定ステップと、
を実行させる、記憶媒体。 - 前記オブジェクト指定ステップが、
キャッシュされるレベルの順番において昇順のレベル間の参照が生じる場合の参照先オブジェクトを除き、これまでにキャッシュされておらず且つ前記第3クラスの第3オブジェクト以降参照をたどることができるオブジェクトを、キャッシュ対象オブジェクトとして指定するステップを
含む、請求項14記載の記憶媒体。 - オブジェクトのクラスが階層的にレベル分けされているデータ構造において、キャッシュされる順番でn番目のレベルn以降のレベルに属するクラスの、キャッシュされたオブジェクトをコンピュータに破棄させるプログラムを記憶した記憶媒体であって、
前記プログラムは、前記コンピュータに、
キャッシュされている順番でn−1番目のレベルに属するクラスのオブジェクトであって、前記レベルnに属するクラスのオブジェクトへの参照を有する、前記レベルnのキー・オブジェクトを検出するステップと、
検出された前記レベルnのキー・オブジェクトの、前記レベルnに属するクラスのオブジェクトへの参照を無効化するステップと、
前記レベルnのキー・オブジェクトから参照をたどることができ且つ前記レベルn以上のレベルに属するオブジェクトを破棄するステップと、
を実行させる、記憶媒体。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP02822898A JP3627055B2 (ja) | 1998-02-10 | 1998-02-10 | キャッシュ対象オブジェクト選択方法、キャッシュ破棄方法及びコンピュータ |
US09/247,397 US6363397B1 (en) | 1998-02-10 | 1999-02-10 | Method for selecting objects to be cached, method for discarding cached objects, and computer |
US10/023,056 US6499038B2 (en) | 1998-02-10 | 2001-12-17 | Method for selecting objects to be cached, method for discarding cached objects, and computer |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP02822898A JP3627055B2 (ja) | 1998-02-10 | 1998-02-10 | キャッシュ対象オブジェクト選択方法、キャッシュ破棄方法及びコンピュータ |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11259300A JPH11259300A (ja) | 1999-09-24 |
JP3627055B2 true JP3627055B2 (ja) | 2005-03-09 |
Family
ID=12242754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP02822898A Expired - Fee Related JP3627055B2 (ja) | 1998-02-10 | 1998-02-10 | キャッシュ対象オブジェクト選択方法、キャッシュ破棄方法及びコンピュータ |
Country Status (2)
Country | Link |
---|---|
US (2) | US6363397B1 (ja) |
JP (1) | JP3627055B2 (ja) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6425057B1 (en) * | 1998-08-27 | 2002-07-23 | Hewlett-Packard Company | Caching protocol method and system based on request frequency and relative storage duration |
US6941338B1 (en) * | 1999-09-01 | 2005-09-06 | Nextwave Telecom Inc. | Distributed cache for a wireless communication system |
US6826599B1 (en) * | 2000-06-15 | 2004-11-30 | Cisco Technology, Inc. | Method and apparatus for optimizing memory use in network caching |
US7035979B2 (en) | 2002-05-22 | 2006-04-25 | International Business Machines Corporation | Method and apparatus for optimizing cache hit ratio in non L1 caches |
US7073030B2 (en) | 2002-05-22 | 2006-07-04 | International Business Machines Corporation | Method and apparatus providing non level one information caching using prefetch to increase a hit ratio |
US20040040029A1 (en) * | 2002-08-22 | 2004-02-26 | Mourad Debbabi | Method call acceleration in virtual machines |
US7231496B2 (en) * | 2003-09-15 | 2007-06-12 | International Business Machines Corporation | Method, system and program product for caching data objects |
US7756910B2 (en) | 2004-05-21 | 2010-07-13 | Bea Systems, Inc. | Systems and methods for cache and pool initialization on demand |
US7543273B2 (en) * | 2004-05-21 | 2009-06-02 | Bea Systems, Inc. | Systems and methods for dynamic control of cache and pool sizes using a batch scheduler |
US7284091B2 (en) * | 2004-05-21 | 2007-10-16 | Bea Systems, Inc. | Systems and methods for passivation of cached objects in transaction |
US7506280B2 (en) * | 2004-11-12 | 2009-03-17 | Tabtronics, Inc. | Magnetic winding and method of making same |
US7873787B2 (en) * | 2005-01-26 | 2011-01-18 | International Business Machines Corporation | Caching controls/policies for structured markup objects |
US7685565B1 (en) | 2009-03-19 | 2010-03-23 | International Business Machines Corporation | Run time reconfiguration of computer instructions |
MX342901B (es) | 2012-12-05 | 2016-10-18 | Braeburn Systems Llc | Panel de control de clima con pantalla no plana. |
MX357098B (es) * | 2014-06-16 | 2018-06-26 | Braeburn Systems Llc | Realce luminoso para programar un control. |
US10356573B2 (en) | 2014-10-22 | 2019-07-16 | Braeburn Systems Llc | Thermostat synchronization via remote input device |
CA2910895C (en) | 2014-10-30 | 2023-01-10 | Braeburn Systems Llc | System and method for monitoring building environmental data |
CA2910884C (en) | 2014-10-30 | 2023-05-23 | Braeburn Systems Llc | Quick edit system for programming a thermostat |
CA2920281C (en) | 2015-02-10 | 2021-08-03 | Daniel S. Poplawski | Thermostat configuration duplication system |
US10317867B2 (en) | 2016-02-26 | 2019-06-11 | Braeburn Systems Llc | Thermostat update and copy methods and systems |
US10317919B2 (en) | 2016-06-15 | 2019-06-11 | Braeburn Systems Llc | Tamper resistant thermostat having hidden limit adjustment capabilities |
MX2017011987A (es) | 2016-09-19 | 2018-09-26 | Braeburn Systems Llc | Sistema de gestion de control que tiene calendario perpetuo con excepciones. |
US10921008B1 (en) | 2018-06-11 | 2021-02-16 | Braeburn Systems Llc | Indoor comfort control system and method with multi-party access |
US10802513B1 (en) | 2019-05-09 | 2020-10-13 | Braeburn Systems Llc | Comfort control system with hierarchical switching mechanisms |
US11925260B1 (en) | 2021-10-19 | 2024-03-12 | Braeburn Systems Llc | Thermostat housing assembly and methods |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0463874A2 (en) * | 1990-06-29 | 1992-01-02 | Digital Equipment Corporation | Cache arrangement for file system in digital data processing system |
CA2246949C (en) * | 1991-03-28 | 2000-04-18 | Ibm Canada Limited-Ibm Canada Limitee | Method and means for encoding storing and retrieving hierarchical data processing information for a computer system |
US5781924A (en) * | 1996-09-30 | 1998-07-14 | Sun Microsystems, Inc. | Computer caching methods and apparatus |
SE9700622D0 (sv) * | 1997-02-21 | 1997-02-21 | Ericsson Telefon Ab L M | Anordning och metod vid datanät |
US6122638A (en) * | 1997-11-26 | 2000-09-19 | International Business Machines Corporation | Object-oriented processor and method for caching intermediate data in an object-oriented processor |
-
1998
- 1998-02-10 JP JP02822898A patent/JP3627055B2/ja not_active Expired - Fee Related
-
1999
- 1999-02-10 US US09/247,397 patent/US6363397B1/en not_active Expired - Fee Related
-
2001
- 2001-12-17 US US10/023,056 patent/US6499038B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20020065809A1 (en) | 2002-05-30 |
US6363397B1 (en) | 2002-03-26 |
US6499038B2 (en) | 2002-12-24 |
JPH11259300A (ja) | 1999-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3627055B2 (ja) | キャッシュ対象オブジェクト選択方法、キャッシュ破棄方法及びコンピュータ | |
Carlisle | Olden: parallelizing programs with dynamic data structures on distributed-memory machines | |
US6321240B1 (en) | Data structure partitioning with garbage collection to optimize cache utilization | |
US6330556B1 (en) | Data structure partitioning to optimize cache utilization | |
EP1805630B1 (en) | Cache eviction | |
KR100384905B1 (ko) | 컴퓨터 메모리에서 데이터 관리 방법, 장치 및 기록매체 | |
US6785888B1 (en) | Memory allocator for a multiprocessor computer system | |
US8429633B2 (en) | Managing memory to support large-scale interprocedural static analysis for security problems | |
US5937431A (en) | Multi- node, multi-level cache- only memory architecture with relaxed inclusion | |
Hosking et al. | Object fault handling for persistent programming languages: A performance evaluation | |
Reineke et al. | Relative competitive analysis of cache replacement policies | |
Marques et al. | Extending the operating system to support an object-oriented environment | |
Kato et al. | Persistent caching: an implementation technique for complex objects with object identity | |
Roh et al. | Design of storage hierarchy in multithreaded architectures | |
US6996694B1 (en) | Basing computer memory allocation for aggregate data types on data separate from a type definition | |
US5150463A (en) | Multi processor data processing system with remote packet copying mechanism | |
US6910107B1 (en) | Method and apparatus for invalidation of data in computer systems | |
Edwards et al. | Exploiting read-mostly workloads in the FileNet file system | |
US5031090A (en) | Multi-processor data processing system and method for processing function packets | |
Tasneem et al. | Android memory optimization | |
Knafla | Prefetching techniques for client server object-oriented database systems | |
Mohindra | Issues in the design of distributed shared memory systems | |
da Silva | An Implementation of Or-Parallel Prolog on a Distributed Shared Memory Architecture | |
Anderson et al. | The DASH virtual memory system | |
Lim | Adaptive caching in a distributed file system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20031203 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20040301 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20040304 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040521 |
|
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: 20041116 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041119 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071217 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081217 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |