(57)【要約】【課題】  Ｊａｖａプログラミング環境におけるオブジェクトの表現の改良された方法を提供する。【解決手段】  この技術は仮想マシン、特に限られたリソースで動作するもの（例えば組み込みシステム）の中のＪａｖａオブジェクトの表現に非常に適する。Ｊａｖａオブジェクト表現のクラスタが開示される。Ｊａｖａオブジェクト表現のそれぞれは、Ｊａｖａオブジェクトへの参照およびＪａｖａオブジェクトに関連付けられたクラスへの参照を提供する。したがって２ティア表現は、Ｊａｖａオブジェクトおよびクラスの両方に関する情報にアクセスするのが必要なアプリケーションを効率的に実現することを可能にするよう提供されえる。これは、ゴミ集めのように多大なリソースを要求するアプリケーションを実行するのに必要な処理が低減されることを意味する。さらに２ティア表現内の参照の一つは、オブジェクトに関連付けられた内部クラス表現に直接にアクセスすることを可能にする。その結果、本発明は、Ｊａｖａオブジェクトに関する情報に高速にアクセスすることを可能にする。よって本発明は、仮想マシン、特に限られた計算パワーおよび／またはメモリを持つシステムのパフォーマンスを向上させることができる。
2005521117.tif 000002
【特許請求の範囲】
【請求項１】
複数のＪａｖａオブジェクト表現を含むメモリの第１部分であって、前記Ｊａｖａオブジェクト表現のそれぞれは、
Ｊａｖａオブジェクトに関連付けられたクラスの内部クラス表現への第１参照、および
Ｊａｖａオブジェクトに関連付けられたインスタンスフィールドへの第２参照
を含むＪａｖａ仮想マシン。
【請求項２】
請求項１に記載のＪａｖａ仮想マシンであって、前記Ｊａｖａ仮想マシンは、
前記第１参照に関連付けられたＪａｖａクラスの内部クラス表現、および
前記第２参照によって参照されるＪａｖａオブジェクトのインスタンスフィールド
を含むメモリの第２部分をさらに備えるＪａｖａ仮想マシン。
【請求項３】
請求項２に記載のＪａｖａ仮想マシンであって、前記複数のＪａｖａオブジェクト表現は同じサイズを有するＪａｖａ仮想マシン。
【請求項４】
請求項３に記載のＪａｖａ仮想マシンであって、前記第１参照は、前記Ｊａｖａオブジェクトの前記内部クラス表現への直接参照であるＪａｖａ仮想マシン。
【請求項５】
請求項４に記載のＪａｖａ仮想マシンであって、
前記第２参照は、参照群のアレイへの参照であり、
前記参照群のアレイ内のそれぞれの参照は、前記Ｊａｖａオブジェクトに関連付けられたインスタンスフィールドへの参照である
Ｊａｖａ仮想マシン。
【請求項６】
請求項５に記載のＪａｖａ仮想マシンであって、前記第１および第２参照は４バイトとしてアロケートされるＪａｖａ仮想マシン。
【請求項７】
請求項６に記載のＪａｖａ仮想マシンであって、
前記内部クラス表現は、所定のサイズのヘッダを含み、
前記Ｊａｖａオブジェクトに関連付けられたメソッドテーブルは前記ヘッダの直後にアロケートされる
Ｊａｖａ仮想マシン。
【請求項８】
Ｊａｖａコンピューティング環境において、アクティブなＪａｖａオブジェクトおよびアクティブなＪａｖａクラスを識別する方法であって、
順次配列されたＪａｖａオブジェクト表現のクラスタを読むこと、
ＪａｖａオブジェクトまたはＪａｖａクラスのいずれが識別されるべきかを決定すること、
Ｊａｖａオブジェクトが識別されるべきであると前記決定が決定するときにＪａｖａオブジェクトに対応するメモリアドレスにマークを付けること、および
Ｊａｖａクラスが識別されるべきであると前記決定が決定するときにＪａｖａクラスに対応するメモリアドレスにマークを付けること
を含む方法。
【請求項９】
請求項８に記載の方法であって、前記Ｊａｖａオブジェクト表現のそれぞれは、
Ｊａｖａオブジェクトに関連付けられたクラスの内部クラス表現への第１参照、および
前記Ｊａｖａオブジェクトに関連付けられたインスタンスフィールドへの第２参照
を含む方法。
【請求項１０】
請求項９に記載の方法であって、前記第１参照は、前記Ｊａｖａオブジェクトの内部クラス表現への直接参照である方法。
【請求項１１】
請求項９に記載の方法であって、
前記第２参照は、参照群のアレイへの参照であり、
前記参照群のアレイ内のそれぞれの参照は、前記Ｊａｖａオブジェクトに関連付けられたインスタンスフィールドへの参照である
方法。
【請求項１２】
請求項９に記載の方法であって、前記第１および第２参照は４バイトとしてアロケートされる方法。
【請求項１３】
請求項９に記載の方法であって、前記方法は、
マークが付けられていない内部クラス表現を取り除くこと
をさらに含む方法。
【請求項１４】
請求項９に記載の方法であって、前記方法は、
マークが付けられていないＪａｖａオブジェクトを取り除くこと
をさらに含む方法。
【請求項１５】
請求項９に記載の方法であって、前記方法は、ＪａｖａオブジェクトおよびＪａｖａクラスのゴミ集めのために仮想マシンによって用いられる方法。
【請求項１６】
アクティブなＪａｖａオブジェクトおよびアクティブＪａｖａクラスを識別するコンピュータプログラムコードを含むコンピュータで読み取り可能な媒体であって、
クラスタ内に順次配列されたＪａｖａオブジェクト表現のクラスタを読むコンピュータプログラムコード、
ＪａｖａオブジェクトまたはＪａｖａクラスのいずれが識別されるべきかを決定するコンピュータプログラムコード、
Ｊａｖａオブジェクトが識別されるべきであると前記決定が決定するときにＪａｖａオブジェクトに対応するメモリアドレスにマークを付けるコンピュータプログラムコード、および
Ｊａｖａクラスが識別されるべきであると前記決定が決定するときにＪａｖａクラスに対応するメモリアドレスにマークを付けるコンピュータプログラムコード
を含むコンピュータで読み取り可能な媒体。
【請求項１７】
請求項１６に記載のコンピュータで読み取り可能な媒体であって、前記Ｊａｖａオブジェクト表現のそれぞれは、
Ｊａｖａオブジェクトに関連付けられたクラスの内部クラス表現への第１参照、および
Ｊａｖａオブジェクトに関連付けられたインスタンスフィールドへの第２参照
を含むコンピュータで読み取り可能な媒体。
【請求項１８】
請求項１７に記載のコンピュータで読み取り可能な媒体であって、前記第１参照は、前記Ｊａｖａオブジェクトの前記内部クラス表現への直接参照であるコンピュータで読み取り可能な媒体。
【請求項１９】
請求項１８に記載のコンピュータで読み取り可能な媒体であって、
前記第２参照は、参照群のアレイへの参照であり、
前記参照群のアレイ内のそれぞれの参照は、前記Ｊａｖａオブジェクトに関連付けられたインスタンスフィールドへの参照である
コンピュータで読み取り可能な媒体。
【請求項２０】
請求項１９に記載のコンピュータで読み取り可能な媒体であって、前記第１および第２参照は４バイトとしてアロケートされるコンピュータで読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大きくはＪＡＶＡプログラミング環境に関し、より具体的にはＪＡＶＡプログラミング環境におけるオブジェクトの表現に適した手法に関する。
【背景技術】
【０００２】
高級言語の一つのゴールは、コンピュータプログラムが容易に他のコンピュータプラットフォームに移植できるような可搬性のあるプログラミング環境を提供することにある。「Ｃ」のような高級言語は、根底にあるコンピュータアーキテクチャからの抽象化のレベルを提供し、これら言語の成功は多くのコンピュータアプリケーションが今や高級言語で書かれる事実によってよく証明されている。
【０００３】
可搬性は、グラフィカルインタフェースを通してさまざまなコンピュータプラットフォーム間での通信を可能にするインターネットのインタフェースプロトコルであるワールドワイドウェブ（「ウェブ」）の出現とともに新たな頂へと導かれた。ウェブ上で通信するコンピュータは、アプレットと呼ばれる小さなアプリケーションをダウンロードし実行することができる。アプレットがコンピュータプラットフォームのさまざまな組み合わせの上で実行されえることを仮定すれば、アプレットは典型的にはＪａｖａ（登録商標）仮想マシンによって実行される。
【０００４】
近年、Ｊａｖａプログラミング環境はかなり人気が出てきた。Ｊａｖａプログラミング言語は、小さなデバイス（例えば、ポケベル、携帯電話およびスマートカード）からスーパコンピュータに至るまで広い範囲のコンピュータ上で実行されえるだけ充分に可搬性を持つよう設計される言語である。Ｊａｖａで書かれたコンピュータプログラミング（および他の言語）は、Ｊａｖａ仮想マシンの実装によって実行されるのに適したＪａｖａバイトコードインストラクションにコンパイルされえる。Ｊａｖａ仮想マシンはふつうソフトウェア中でＪａｖａ仮想マシンインストラクションセットのためのインタプリタとしてインプリメントされるが、一般にはソフトウェア、ハードウェア、またはその両方でありえる。特定のＪａｖａ仮想マシンのインプリメンテーションおよび対応するサポートライブラリは共にＪａｖａランタイム環境を構成する。
【０００５】
Ｊａｖａプログラミング言語によるコンピュータプログラムは、１つ以上のクラスまたはインタフェース（ここでは併せてクラスまたはクラスファイルと呼ばれる）に組まれる。このようなプログラムは一般にプラットフォーム、すなわちハードウェアおよびオペレーティングシステムに依存しない。よってこれらのコンピュータプログラムは修正することなく、Ｊａｖａランタイム環境のインプリメンテーションを走らせることができるどのようなコンピュータ上でも実行されえる。
【０００６】
Ｊａｖａプログラミング言語で書かれたオブジェクト指向のクラスは、「クラスファイルフォーマット」と呼ばれる特定のバイナリフォーマットでコンパイルされる。このクラスファイルは、単一のクラスに関連付けられたさまざまな要素を含む。これらの要素は例えばクラスに関連付けられたメソッドおよび／またはインタフェースでありえる。さらにクラスファイルフォーマットはクラスに関連付けられるかなりの量の補助的な情報を含みえる。クラスファイルフォーマット（Ｊａｖａ仮想マシンの一般的な動作と共に）は、Tim LindholmおよびFrank Yellinによる「The Java Virtual Machine Specification」第２版にある程度詳細に記載され、ここで参照によって援用される。
【０００７】
図１Ａは、インタプリタであるＪａｖａ仮想マシンによる実行を通して、簡単な一つのＪａｖａソースコード１０１の処理の進行を示す。Ｊａｖａソースコード１０１は、Ｊａｖａで書かれた古典的なハローワールドのプログラムを含む。このソースコードはそれから、ソースコードをバイトコードにコンパイルするバイトコードコンパイラ１０３に入力される。バイトコードは、ソフトウェアでエミュレートされたコンピュータによって実行されるので、仮想マシンインストラクションである。典型的には仮想マシンインストラクションは汎用である（すなわち特定のマイクロプロセッサまたはコンピュータアーキテクチャのために設計されてはいない）が、これは必要ではない。バイトコードコンパイラは、Ｊａｖａプログラムのバイトコードを含むＪａｖａクラスファイル１０５を出力する。ＪａｖａクラスファイルはＪａｖａ仮想マシン１０７に入力される。Ｊａｖａ仮想マシンは、Ｊａｖａクラスファイル中のバイトコードをデコードし実行するインタプリタである。Ｊａｖａ仮想マシンはインタプリタであるが、ソフトウェアでマイクロプロセッサまたはコンピュータアーキテクチャをエミュレートする（例えばマイクロプロセッサまたはコンピュータアーキテクチャはハードウェアとしては存在しないかもしれない）のでふつうは仮想マシンと呼ばれる。
【０００８】
図１Ｂは、簡略化されたクラスファイル１００を示す。図１Ｂに示されるように、クラスファイル１００は、コンスタントプール１０２の部分、インタフェース部分１０４、フィールド部分１０６、メソッド部分１０８、および属性部分１１０を含む。属性（または属性テーブル）１１０部分は、クラスファイル１００に関連付けられた属性を表す。これは１つ以上の属性が定義されることを可能にし、これらのそれぞれがクラスファイルの１つ以上の要素と関連付けられえる。当業者には知られるように、Ｊａｖａ仮想マシンを実装するとさまざまな属性を定義し使用することができる。さらに仮想マシンの実装は、それが認識しない属性を無視する。よってクラスファイルは１つ以上の属性を含みえ、それらの全てが特定の仮想マシンの実装によって認識されるか、あるいはそれらの全てが特定の仮想マシンの実装によって認識されないかのいずれもありえる。
【０００９】
従来、Ｊａｖａオブジェクトは、オブジェクトに関連付けられたメソッドがオブジェクト表現から参照されえるように、メモリ内で表現される。典型的にはＪａｖａオブジェクト表現からそのオブジェクトに関連付けられたメソッドを含むメソッドテーブルへの直接の参照が存在する。メソッドテーブルへの直接参照によりメソッド起動が実行されることが可能になるが、従来のＪａｖａでのオブジェクト表現はオブジェクトに関する情報（例えばオブジェクトタイプ、オブジェクトサイズ、静的フィールドなど）を見つけるのにある程度の処理が必要である。このようなＪａｖａオブジェクトに関する情報は、オブジェクトの内部クラス表現内に格納されえる。換言すれば、仮想マシンは典型的にはＪａｖａオブジェクトのクラスに関連付けられた情報を内部で表現し、格納する。しかしこの情報にアクセスすることは貴重な処理時間をとる。これは、特に計算パワーおよび／またはメモリが制限されたシステムにおいては仮想マシンのパフォーマンスを深刻に低下させる。
【００１０】
さらに従来のＪａｖａオブジェクト表現を用いると、ＪａｖａクラスとともにＪａｖａオブジェクトの除去を可能にする単一の「ゴミ集め（garbage collection、ガーベッジコレクション）」スキームをインプリメントするのが困難である。換言すると従来は、Ｊａｖａオブジェクトが必要なくなったときにはあるゴミ集め方法がＪａｖａオブジェクトを除去するのに用いられ、クラスが必要なくなったときには別のゴミ集め方法がクラスを除去するのに用いられる。よって従来は、ゴミ集めは従来の仮想マシンのかなりの量のメモリおよび計算時間を使用しえる。その結果、仮想マシンのパフォーマンスは悪影響を受け、特に比較的少ないリソースで動作しているときはそうである（例えば組み込みシステム）。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上述を鑑みて、ＪＡＶＡプログラミング環境でのオブジェクト表現のための改良された技術が必要とされる。
【課題を解決するための手段】
【００１２】
大きく言えば、本発明は、Ｊａｖａプログラミング環境におけるオブジェクトの表現についての技術に関する。この技術は、仮想マシン内のＪａｖａオブジェクトの表現、特に限られたリソースで動作するもの（例えば組み込みシステム）に非常に適している。本発明のある仮想マシンによれば、複数のＪａｖａオブジェクト表現を含むクラスタが開示される。理解されるように、クラスタ内のＪａｖａオブジェクト表現のそれぞれは、Ｊａｖａオブジェクトへの参照およびＪａｖａオブジェクトに関連付けられたクラスへの参照を提供する。したがって２ティア表現は、Ｊａｖａオブジェクトおよびクラスの両方に関する情報にアクセスするのが必要なアプリケーションを効率的に実現することを可能にするよう提供されえる。よって本発明は、ゴミ集めのように多大なリソースを要求するアプリケーションを実行するのに必要な処理を低減するのに使用されえる。その結果、仮想マシンのパフォーマンス、特に比較的限られたリソースで動作するもののそれは改善されえる。
【００１３】
さらに２ティア表現内の参照の一つは、オブジェクトに関連付けられた内部クラス表現に直接にアクセスすることを可能にする。内部クラス表現は、Ｊａｖａオブジェクトに関する情報（例えばオブジェクトサイズ、オブジェクトタイプ、静的フィールドなど）を提供する。その結果、本発明は、Ｊａｖａオブジェクトに関する情報に高速にアクセスすることを可能にする。これは、Ｊａｖａオブジェクトに関する情報にアクセスするのに従来必要とされた処理時間が短くなることを意味する。よって本発明は、仮想マシン、特に限られた計算パワーおよび／またはメモリを持つシステムのパフォーマンスを向上させることができる。
【００１４】
本発明は、方法、装置、コンピュータで読み取り可能な媒体、およびデータベースシステムを含む多くの手法で実現されえる。本発明のいくつかの実施形態が以下に説明される。
【００１５】
仮想マシンとして、本発明のある実施形態は、複数のＪａｖａオブジェクト表現を含むメモリの第１部分を含み、前記Ｊａｖａオブジェクト表現のそれぞれは、Ｊａｖａオブジェクトに関連付けられたクラスの内部クラス表現への第１参照、およびＪａｖａオブジェクトに関連付けられたインスタンスフィールドへの第２参照を含む。
【００１６】
アクティブなＪａｖａオブジェクトおよびアクティブなＪａｖａクラスを識別する方法として本発明のある実施形態は、順次配列されたＪａｖａオブジェクト表現のクラスタを読むこと、ＪａｖａオブジェクトまたはＪａｖａクラスのいずれが識別されるべきかを決定すること、Ｊａｖａオブジェクトが識別されるべきであると前記決定が決定するときにＪａｖａオブジェクトに対応するメモリアドレスにマークを付けること、およびＪａｖａクラスが識別されるべきであると前記決定が決定するときにＪａｖａクラスに対応するメモリアドレスにマークを付けることを含む。
【００１７】
アクティブなＪａｖａオブジェクトおよびアクティブＪａｖａクラスを識別するコンピュータプログラムコードを含むコンピュータで読み取り可能な媒体として、本発明のある実施形態は、クラスタ内に順次配列されたＪａｖａオブジェクト表現のクラスタを読むコンピュータプログラムコード、ＪａｖａオブジェクトまたはＪａｖａクラスのいずれが識別されるべきかを決定するコンピュータプログラムコード、Ｊａｖａオブジェクトが識別されるべきであると前記決定が決定するときにＪａｖａオブジェクトに対応するメモリアドレスにマークを付けるコンピュータプログラムコード、およびＪａｖａクラスが識別されるべきであると前記決定が決定するときにＪａｖａクラスに対応するメモリアドレスにマークを付けるコンピュータプログラムコードを含む。  
【００１８】
本発明のこれらや他の局面および利点は、以下の詳細な説明が添付図面と共に読まれればより明らかになろう。
【発明を実施するための最良の形態】
【００１９】
本発明は添付の図面を参照して以下の詳細な説明によって容易に理解されるだろう。図面において同様の参照番号は同様の要素を表す。
【００２０】
背景技術において述べられたように、Ｊａｖａプログラミング環境は大きく広がった成功を収めた。したがってＪａｖａコンパチブルなデバイスの幅を広げ、そのようなデバイスのパフォーマンスを改善しようとする努力が続いている。特定のプラットフォーム上でのＪａｖａベースのプログラムのパフォーマンスに最も影響を与えるファクタの一つは、基礎になる仮想マシンのパフォーマンスである。典型的には仮想マシンは、Ｊａｖａオブジェクトのクラスに関連付けられた情報を内部において表現し格納する。しかし従来の技術を用いてこの情報にアクセスするのには貴重な処理時間をとる。これは特に計算パワーおよび／またはメモリが制限されているシステムにおいては、仮想マシンのパフォーマンスを深刻に低下しえる。したがってＪａｖａに従う仮想マシンのパフォーマンスを改善するための努力が多くの団体によって精力的になされてきた。
【００２１】
本発明はＪａｖａプログラミング環境におけるオブジェクト表現の技術に関する。この技術は仮想マシン内のＪａｖａオブジェクトの表現に非常に適しており、特に限定されたリソースで動作するもの（例えば組み込みシステム）についてはそうである。本発明のある局面によれば、複数のＪａｖａオブジェクト表現を含むクラスタが開示される。理解されるように、クラスタ内のＪａｖａオブジェクト表現のそれぞれはＪａｖａオブジェクトへの参照およびそのＪａｖａオブジェクトに関連付けられたクラスへの参照を提供する。したがって２つのティア表現が提供されえ、これはＪａｖａオブジェクトおよびクラスの両方についての情報にアクセスする必要があるアプリケーションの効率的なインプリメンテーションを可能する。よって本発明はゴミ集めのようなリソースの時間を大量に消費しえるアプリケーションを実行するのに必要な処理を低減するのに用いられえる。その結果、仮想マシンのパフォーマンスは、特に比較的に小さいリソースで動作する仮想マシンのパフォーマンスは改善しえる。
【００２２】
さらに、２ティア表現の参照のうちの一つは、オブジェクトに関連付けられた内部クラス表現への直接アクセスを提供しえる。この内部クラス表現はＪａｖａオブジェクトに関する情報（例えばオブジェクトサイズ、オブジェクトタイプ、静的フィールドなど）を提供する。その結果、本発明は、Ｊａｖａオブジェクトについての情報へ素早くアクセスすることを可能にする。これはＪａｖａオブジェクトについての情報へアクセスするのに従来必要だった処理時間が短縮されることを意味する。よって本発明は、仮想マシンのパフォーマンス、特に計算パワーおよび／またはメモリが制限されているシステムにおけるパフォーマンスを向上させることができる。本発明の実施形態は図２〜４を参照して以下に説明される。しかしこれらの図を参照してここで与えられた詳細な説明は説明の目的だけであって、本発明はこれらの限定された実施形態を超えるものであることが当業者には容易に理解されよう。
【００２３】
図２は、本発明のある実施形態によるクラスタ２００を含むＪａｖａコンピューティング環境を示す。クラスタ２００は、Ｊａｖａ仮想マシンのメモリ部分のインプリメンテーションに適する。図２に示されるように、クラスタ２００は、複数の２ティアオブジェクト表現２０２、２０４、２０６および２０８を含み、これらオブジェクト表現のそれぞれは第１部分Ｃおよび第２部分Ｏからなる。第１部分Ｃ1、Ｃ2、Ｃi、およびＣnはＪａｖａクラスへの参照を表す。第２部分Ｏ1、Ｏ2、Ｏi、およびＯnはＪａｖａオブジェクトへの参照を表す。したがって２ティアオブジェクト表現２０２、２０４、２０６および２０８は、そのクラスに関連付けられたＪａｖａクラスおよびオブジェクトへの参照を提供する。例えば２ティアオブジェクト表現２０６は、クラスＩへの参照ＣiおよびクラスＩのオブジェクトＩへの参照Ｏiを提供する。当業者には理解されるように、クラスタ２００の構成は効率的なアクセスを可能にするが、これは第１および第２部分が同じサイズでありえるからである（例えば４バイト）。
【００２４】
クラスへの参照は、クラスの内部クラス表現への参照でありえる。図３は、本発明のある実施形態についてのＪａｖａオブジェクト表現を示す。Ｊａｖａオブジェクト表現３００は、図２の２ティアオブジェクト表現２０２、２０４、２０６および２０８をより詳細に示す。図３に示されるように、オブジェクト表現３００は、内部クラス表現３０４への第１参照３０２を含む。内部クラス表現３０４は、Ｊａｖａオブジェクトに関する情報を提供する。この情報はＪａｖａオブジェクトに関する情報と共に、例えば、メソッドテーブル３０６およびフィールド記述子テーブル３０８を含みえる。記載された実施形態においては、所定の大きさのヘッダ３０９の後にメソッドテーブル３０６がすぐに続く。
【００２５】
理解されるように、第１参照３０２は、内部クラス表現３０４に直接にアクセスするのに使用されえ、その結果、Ｊａｖａオブジェクトに関する情報は高速にアクセスされる。その結果、オブジェクトに関する情報は、この情報を見つける処理により多くの時間を必要とする従来の手法よりも、より高速にアクセスされえる。
【００２６】
さらにオブジェクト表現３００は、Ｊａｖａオブジェクトに関連付けられたインスタンスフィールドへの第２参照３１０を含む。これらのインスタンスフィールドは、それぞれのオブジェクトについてユニークでありえ、例えば、Ｊａｖａオブジェクトに関連付けられたインスタンス変数Ｉ1〜Ｉnを含む。Ｊａｖａプログラム言語の文脈におけるインスタンスフィールドは当業者にはよく知られている。
【００２７】
内部オブジェクト表現３００は、Ｊａｖａオブジェクトをユニークに識別する識別子を含みえることに注意されたい。当業者には理解されるように、識別子はハッシュキーでありえる。ある実施形態においては、第１参照３０２のアドレスはハッシュキーとして用いられる。第１および第２参照２３２および３１０は２つの連続するメモリアドレスを表現することにも注意されたい。そのため第１および第２参照３０２および３１０のそれぞれは、仮想マシン中のメモリ部における連続する４バイト（１ワード）でありえる。
【００２８】
図４は、本発明のある実施形態によるアクティブなＪａｖａオブジェクトおよびクラスを識別する方法４００を示す。そのため方法４００は、ゴミ集めを実行するために仮想マシン内で用いられえる。さらに方法４００は、Ｊａｖａクラスおよびオブジェクトの両方についてゴミ集めを実行するのに用いられえる。したがって方法４００は、効率的なゴミ集めのアプリケーションを実現することを可能にする。
【００２９】
まず操作４０２において、２ティアＪａｖａオブジェクト表現のクラスタの順次読み出しが起動される。次に操作４０４において、ＪａｖａオブジェクトまたはＪａｖａクラスのいずれが識別されるべきかが決定される。もし操作４０４においてＪａｖａオブジェクトが識別されるべきであると決定されるなら、方法４００は操作４０６に進み、ここでＪａｖａオブジェクトへの参照が２ティアＪａｖａオブジェクト表現のクラスタから順次読み出しされる。その後、操作４０８において、読み出されたメモリアドレスにマークが付けられる。方法４００は操作４０８に続いて終了する。しかしもし操作４０４においてＪａｖａクラスが識別されるべきであると決定されるなら、方法４００は操作４１０に進み、ここでＪａｖａクラスへの参照が２ティアＪａｖａオブジェクト表現のクラスタから順次読み出しされる。その後、操作４０８において、読み出されたメモリアドレスにマークが付けられる。方法４００は操作４０８に続いて終了する。
【００３０】
本発明の多くの特徴および利点は詳細な説明から明らかであり、よって添付の特許請求の範囲は本発明の全てのそのような特徴および利点を含むと意図される。さらに多くの改変および変更が当業者には容易に可能であるので、本発明は図示され記載されたのまったく同一の構成および動作に限定されるべきではない。したがって全ての適切な変更および等価物は本発明の範囲に含まれるように解される。
【図面の簡単な説明】
【００３１】
【図１Ａ】インタプリタであるＪａｖａ仮想マシンによる実行を通したＪａｖａソースコードの簡単なものの進行を示す図である。
【図１Ｂ】簡略化されたクラスファイルを示す図である。
【図２】本発明のある実施形態によるＪａｖａオブジェクト表現のクラスタを含むＪａｖａコンピューティング環境を示す図である。
【図３】本発明のある実施形態によるＪａｖａオブジェクト表現を示す図である。
【図４】本発明のある実施形態によるアクティブＪａｖａオブジェクトおよびクラスを識別する方法を示す図である。
【図１Ａ】
2005521117.tif 000003
【図１Ｂ】
2005521117.tif 000004
【図２】
2005521117.tif 000005
【図３】
2005521117.tif 000006
【図４】
2005521117.tif 000007
【国際調査報告】
2005521117.tif 000008
2005521117.tif 000009
2005521117.tif 000010