JP2005507103A - Javaヒープを実現するフレームワーク - Google Patents
Javaヒープを実現するフレームワーク Download PDFInfo
- Publication number
- JP2005507103A JP2005507103A JP2003517739A JP2003517739A JP2005507103A JP 2005507103 A JP2005507103 A JP 2005507103A JP 2003517739 A JP2003517739 A JP 2003517739A JP 2003517739 A JP2003517739 A JP 2003517739A JP 2005507103 A JP2005507103 A JP 2005507103A
- Authority
- JP
- Japan
- Prior art keywords
- java
- designated
- heap
- specified
- portions
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【課題】Javaヒープを実現する技術を提供する。
【解決手段】この技術は、Javaコンピューティング環境において動作するJava仮想マシン内で実現されえる。2つ以上の指定された部分を備えるJavaヒープ部分が開示される。指定されたヒープ部分のそれぞれは、特定のJava論理要素(例えばJavaオブジェクト、Javaクラス表現、ネイティブ要素など)だけを格納するよう指定されえる。指定されたヒープ部分は、メモリプールとして実現されえる。換言すれば2つ以上の指定されたヒープ部分は、特定のJava論理要素について指定されたメモリプールを全体として表しえる。メモリプールは、指定されたヒープ部分のダイナミックな管理を可能にする。その結果、仮想マシン、特に比較的限られたリソースで動作するもののパフォーマンスは改善される。
【選択図】図3A
【解決手段】この技術は、Javaコンピューティング環境において動作するJava仮想マシン内で実現されえる。2つ以上の指定された部分を備えるJavaヒープ部分が開示される。指定されたヒープ部分のそれぞれは、特定のJava論理要素(例えばJavaオブジェクト、Javaクラス表現、ネイティブ要素など)だけを格納するよう指定されえる。指定されたヒープ部分は、メモリプールとして実現されえる。換言すれば2つ以上の指定されたヒープ部分は、特定のJava論理要素について指定されたメモリプールを全体として表しえる。メモリプールは、指定されたヒープ部分のダイナミックな管理を可能にする。その結果、仮想マシン、特に比較的限られたリソースで動作するもののパフォーマンスは改善される。
【選択図】図3A
Description
【技術分野】
【0001】
本発明は、大きくはJavaプログラミング環境に関し、より具体的にはJavaヒープのインプリメンテーションに適する手法に関する。
【背景技術】
【0002】
高級言語の1つのゴールは、コンピュータプログラムが容易に他のコンピュータプラットフォームに移植できるような可搬性のあるプログラミング環境を提供することにある。「C」のような高級言語は、根底にあるコンピュータアーキテクチャからの抽象化のレベルを提供し、これら言語の成功は多くのコンピュータアプリケーションが今や高級言語で書かれる事実によってよく証明されている。
【0003】
可搬性は、グラフィカルインタフェースを通してさまざまなコンピュータプラットフォーム間での通信を可能にするインターネットのインタフェースプロトコルであるワールドワイドウェブ(「ウェブ」)の出現とともに新たな頂へと導かれた。ウェブ上で通信するコンピュータは、アプレットと呼ばれる小さなアプリケーションをダウンロードし実行することができる。アプレットがコンピュータプラットフォームのさまざまな組み合わせの上で実行されえることを仮定すれば、アプレットは典型的にはJava(商標)仮想マシンによって実行される。
【0004】
近年、Javaプログラミング環境はかなり人気が出てきた。Javaプログラミング言語は、小さなデバイス(例えば、ポケットベル、携帯電話およびスマートカード)からスーパコンピュータに至るまで広い範囲のコンピュータ上で実行されえるだけ充分に可搬性を持つよう設計される言語である。Javaで書かれたコンピュータプログラミング(および他の言語)は、Java仮想マシンの実装によって実行されるのに適したJavaバイトコードインストラクションにコンパイルされえる。Java仮想マシンはふつうソフトウェア中でJava仮想マシンインストラクションセットのためのインタプリタとしてインプリメントされるが、一般にはソフトウェア、ハードウェア、またはその両方でありえる。特定のJava仮想マシンのインプリメンテーションおよび対応するサポートライブラリは共にJavaランタイム環境を構成する。
【0005】
Javaプログラミング言語によるコンピュータプログラムは、1つ以上のクラスまたはインタフェース(ここでは併せてクラスまたはクラスファイルと呼ばれる)に組まれる。このようなプログラムは一般にプラットフォーム、すなわちハードウェアおよびオペレーティングシステムに依存しない。よってこれらのコンピュータプログラムは修正することなく、Javaランタイム環境のインプリメンテーションを走らせることができるどのようなコンピュータ上でも実行されえる。
【0006】
Javaプログラミング言語で書かれたオブジェクト指向のクラスは、「クラスファイルフォーマット」と呼ばれる特定のバイナリフォーマットでコンパイルされる。このクラスファイルは、単一のクラスに関連付けられたさまざまな要素を含む。これらの要素は例えばクラスに関連付けられたメソッドおよび/またはインタフェースでありえる。さらにクラスファイルフォーマットはクラスに関連付けられるかなりの量の補助的な情報を含みえる。クラスファイルフォーマット(Java仮想マシンの一般的な動作と共に)は、Tim LindholmおよびFrank Yellinによる「The Java Virtual Machine Specification」第2版にある程度詳細に記載され、ここで参照によって援用される。
【0007】
図1Aは、インタプリタであるJava仮想マシンによる実行を通して、簡単な1つのJavaソースコード101の処理の進行を示す。Javaソースコード101は、Javaで書かれた古典的なハローワールドのプログラムを含む。このソースコードはそれから、ソースコードをバイトコードにコンパイルするバイトコードコンパイラ103に入力される。バイトコードは、ソフトウェアでエミュレートされたコンピュータによって実行されるので、仮想マシンインストラクションである。典型的には仮想マシンインストラクションは汎用である(すなわち特定のマイクロプロセッサまたはコンピュータアーキテクチャのために設計されてはいない)が、これは必要ではない。バイトコードコンパイラは、Javaプログラムのバイトコードを含むJavaクラスファイル105を出力する。JavaクラスファイルはJava仮想マシン107に入力される。Java仮想マシンは、Javaクラスファイル中のバイトコードをデコードし実行するインタプリタである。Java仮想マシンはインタプリタであるが、ソフトウェアでマイクロプロセッサまたはコンピュータアーキテクチャをエミュレートする(例えばマイクロプロセッサまたはコンピュータアーキテクチャはハードウェアとしては存在しないかもしれない)のでふつうは仮想マシンと呼ばれる。
【0008】
図1Bは、簡略化されたクラスファイル100を示す。図1Bに示されるように、クラスファイル100は、コンスタントプール102の部分、インタフェース部分104、フィールド部分106、メソッド部分108、および属性部分110を含む。このメソッド部分108は、クラスファイル100で表現されるJavaクラスに関連付けられたいくつかのJavaメソッドへの参照を含むか有する。
【0009】
従来、Javaコンピューティング環境のさまざまな要素は、Javaヒープの中に格納される。これら要素は、Javaコンピューティング環境の他の論理要素(例えばネイティブ言語要素)と共にJavaクラス表現およびJavaオブジェクトを含む。Javaヒープの従来のインプリメンテーションに付随する1つの問題は、さまざまな要素がJavaヒープ中に混在しえることである。その結果、Javaヒープ中のさまざまな要素にアクセスしたり、Javaヒープを維持したりすることなどのために多大な量の処理が実行されなければならない。これはもちろんシステムリソースの非常に非効率的な使用となる。ある状況では、特に限られた計算パワーおよび/またはメモリのシステムにおいては、この非効率なリソースの使用は深刻な欠点である。
【0010】
さらにJavaヒープをダイナミックに管理する(例えばより多くのメモリが必要とされる場合にヒープを拡張する)ことが非常に望ましい。これは特に比較的限られたリソースのシステムにおいて有用であり、それはアロケートされたメモリが使用されるかされないかにかかわらず大量のメモリは確保されえないことに部分的にはよっている。
【発明の開示】
【発明が解決しようとする課題】
【0011】
したがってJavaヒープの改良されたインプリメンテーション技術が必要とされる。
【課題を解決するための手段】
【0012】
大きく言えば、本発明はJavaヒープを実現する技術に関する。そのため本発明は、Javaコンピューティング環境において動作するJava仮想マシン内で実現されえる。本発明のある実施形態において、2つ以上の指定された部分を備えるJavaヒープ部分が開示される。指定されたヒープ部分のそれぞれは、特定のJava論理要素(例えばJavaオブジェクト、Javaクラス表現、ネイティブ要素など)だけを格納するよう指定されえる。理解されるように、指定されたヒープ部分は、メモリプールとして実現されえる。換言すれば2つ以上の指定されたヒープ部分は、特定のJava論理要素について指定されたメモリプールを全体として表しえる。メモリプールは、指定されたヒープ部分のダイナミックな管理を可能にする。その結果、仮想マシン、特に比較的限られたリソースで動作するもののパフォーマンスは改善される。
【0013】
本発明は、方法、装置、コンピュータで読み取り可能な媒体、およびデータベースシステムを含む多くの手法で実現されえる。本発明のいくつかの実施形態が以下に説明される。
【0014】
Javaヒープメモリを含むJavaコンピューティング環境として、Javaヒープメモリは、2つ以上の指定された部分を含み、前記指定された部分のそれぞれは、前記Javaコンピューティング環境の論理要素を格納するよう指定され、前記指定された部分のそれぞれは、それに指定される前記1つの論理要素だけを格納する。
【0015】
Javaヒープメモリを含むJavaコンピューティング環境において動作するJava仮想マシンとして、本発明のある実施形態は、2つ以上の指定された部分を含み、前記指定された部分のそれぞれは、前記Javaコンピューティング環境の論理要素を格納するよう指定され、前記指定された部分のそれぞれは、それに指定される前記1つの論理要素だけを格納する。
【0016】
Javaヒープメモリを格納するコンピュータで読み取り可能な媒体として、本発明のある実施形態は、2つ以上の指定された部分を含み、前記指定された部分のそれぞれは、前記Javaコンピューティング環境の論理要素を格納するよう指定され、前記指定された部分のそれぞれは、それに指定される前記論理要素だけを格納する。
【0017】
本発明のこれらや他の局面および利点は、以下の詳細な説明が添付図面と共に読まれればより明らかになろう。
【発明を実施するための最良の形態】
【0018】
本発明は添付の図面を参照して以下の詳細な説明によって容易に理解されるだろう。図面において同様の参照番号は同様の要素を表す。
【0019】
背景技術において述べられたように、Javaプログラミング環境は大きく広がった成功を収めた。したがってJavaコンパチブルなデバイスの幅を広げ、そのようなデバイスのパフォーマンスを改善しようとする努力が続いている。特定のプラットフォーム上でのJavaベースのプログラムのパフォーマンスに最も影響を与えるファクタの1つは、基礎になる仮想マシンのパフォーマンスである。したがってJavaに従う仮想マシンのパフォーマンスを改善するための努力が多くの団体によって精力的になされてきた。
【0020】
本発明のこの目的や他の目的を達成するために、Javaヒープのインプリメンテーションの技術が開示される。そのためこの技術は、Javaコンピューティング環境において動作するJava仮想マシンにおいて実現される。本発明のある局面によれば、2つ以上の指定された部分を備えるJavaヒープ部分が開示される。指定されたヒープ部分のそれぞれは、特定のJava論理要素(例えばJavaオブジェクト、Javaクラス表現、ネイティブ要素など)だけを格納するように指定されえる。理解されるように、指定されたヒープ部分は、メモリプールとして実現されえる。換言すれば、2つ以上の指定されたヒープ部分が、特定のJava論理要素のために指定されたメモリプールを全体として表す。メモリプールは、指定されたヒープ部分のダイナミックな管理を可能にする。その結果、仮想マシン、特に比較的限られたリソースで動作するもののパフォーマンスは改善される。
【0021】
本発明の実施形態は、図2A〜3Cを参照して以下に説明される。しかしこれらの図を参照して与えられた詳細な説明は例示目的であって、本発明はこれらの限定された実施形態を超えて成り立つことが当業者には容易に理解されよう。
【0022】
図2Aは、本発明のある実施形態によるJavaヒープ200を示す。Javaヒープ200は、Javaコンピューティング環境で(例えばJava仮想マシン内で)インプリメントされえる。図2Aに示されるように、Javaヒープ200は、2つ以上の指定されたヒープ部分(指定されたヒープ部分1〜N)を含みえる。理解されるように、指定されたヒープ部分1〜Nのそれぞれは、Javaコンピューティング環境の論理要素を格納するのに適する。これらの論理要素は例えば、Javaクラス表現、Javaオブジェクト、ネイティブ要素などである。
【0023】
したがって特定のJavaヒープ部分は、特定の論理要素だけを格納するように設計されえる。例として図2Bは、本発明のある実施形態によるJavaヒープ部分201を示す。Javaヒープ部分201は、Java内部クラス表現部分202、Javaオブジェクト部分204、およびネイティブ要素部分206を含む。記載された実施形態において、ヒープ部分202、204、および206のそれぞれは、特定のJava論理要素だけを格納するように指定される。そのためJava内部クラス表現部分202、Javaオブジェクト部分204、およびネイティブ要素部分206は、それぞれ、Java内部クラス表現、Javaオブジェクト、およびネイティブ要素を格納するように指定される。
【0024】
理解されるように、Javaヒープ部分201の構成は、Javaコンピューティング環境のさまざまな論理要素により効率的にアクセスすることを可能にする。その結果、仮想マシン、特に限られたリソースで動作するもののパフォーマンスは向上されえる。本発明は、任意の所望の目的のためにヒープ部分を指定することを可能にする(例えばヒープ部分は特定のオブジェクト、特定のクラスなどのために指定されえる)ことが理解されよう。これによりJava仮想マシンのパフォーマンスをさらに向上させるのに用いられる大きな柔軟性が可能となる。
【0025】
背景で述べられたように、Javaヒープをダイナミックに管理する(例えばより多くのメモリが必要とされる場合にヒープを拡張する)能力を持つことが非常に望まれる。しかし比較的限られたリソースしか持たないシステムにおいては、アロケートされたメモリが使用されるされないにかかわらず、大量のメモリは確保されえない。この目的や他の目的を達成するために、指定されたヒープ部分がメモリプールリストとして実現されえる。図3Aは、本発明のある実施形態によるJavaヒープ300を示す。図3Aに示されるように、Javaヒープ300は、いくつかの指定されたヒープ部分を含む。再びこれら指定されたヒープ部分のそれぞれは、特定のJava論理要素だけを格納するように指定されえる。さらに2つ以上の指定されたヒープ部分は、メモリプールを全体として表す。そのためメモリプールのそれぞれは、互いにリンクされた2つ以上のアドレス空間(例えばリンクされたリストとして)を含みえる。例えば指定されたヒープ部分302、304および306は全体で、メモリプールとしてリンクされた非連続なアドレス空間を表現する。したがって指定されたヒープ部分302、304および306は特定のJava論理要素を格納するのに用いられえる。
【0026】
図3Bは、本発明のある実施形態によるJavaヒープ310を示す。Javaヒープ310は、Java内部クラス表現、Javaオブジェクト、およびネイティブ要素を格納するのに適する。そのため1つ以上のヒープ部分がこれらのJava論理要素のそれぞれを格納するのに指定される。例えば、指定されたヒープ部分312、318および322は、全てJava内部クラス表現だけを格納するよう指定されている。
【0027】
理解されるように、メモリプールは、指定されたヒープ部分を追加したり除去したりすることを可能にするためダイナミックに管理されえる。図示すれば図3Cは、ある指定されたヒープ部分が除去され、新しい指定されたヒープ部分が追加された後の図3Bに示されたJavaヒープ310を示す。Java内部クラス表現を格納するように指定されたJavaヒープ部分326(図3Bで示される)は、除去されている。その代わりにネイティブ要素を格納するのに指定された新しいJavaヒープ部分326が追加されている。図3Cに示されるように、新しいJavaヒープ部分326は、やはりネイティブ要素の格納のために指定されているJavaヒープ部分328とリンクされえる。したがってヒープメモリは、さまざまなJava論理要素のためにダイナミックに管理されえる。これは、メモリが効率的に使用されえることを意味する。その結果、仮想マシン、特に限られたリソースで動作するもののパフォーマンスが向上されえる。
【0028】
本発明の多くの特徴および利点は詳細な説明から明らかであり、よって添付の特許請求の範囲は本発明の全てのそのような特徴および利点を含むと意図される。さらに多くの改変および変更が当業者には容易に可能であるので、本発明は図示され記載されたのまったく同一の構成および動作に限定されるべきではない。したがって全ての適切な変更および等価物は本発明の範囲に含まれるように解される。
【図面の簡単な説明】
【0029】
【図1A】インタプリタであるJava仮想マシンによる実行を通したJavaソースコードの簡単なものの進行を示す図である。
【図1B】簡略化されたクラスファイルを示す図である。
【図2A】本発明のある実施形態によるJavaヒープを示す図である。
【図2B】本発明のある実施形態によるJavaヒープを示す図である。
【図3A】本発明のある実施形態によるJavaヒープを示す図である。
【図3B】本発明のある実施形態によるJavaヒープを示す図である。
【図3C】本発明のある実施形態によるJavaヒープを示す図である。
【0001】
本発明は、大きくはJavaプログラミング環境に関し、より具体的にはJavaヒープのインプリメンテーションに適する手法に関する。
【背景技術】
【0002】
高級言語の1つのゴールは、コンピュータプログラムが容易に他のコンピュータプラットフォームに移植できるような可搬性のあるプログラミング環境を提供することにある。「C」のような高級言語は、根底にあるコンピュータアーキテクチャからの抽象化のレベルを提供し、これら言語の成功は多くのコンピュータアプリケーションが今や高級言語で書かれる事実によってよく証明されている。
【0003】
可搬性は、グラフィカルインタフェースを通してさまざまなコンピュータプラットフォーム間での通信を可能にするインターネットのインタフェースプロトコルであるワールドワイドウェブ(「ウェブ」)の出現とともに新たな頂へと導かれた。ウェブ上で通信するコンピュータは、アプレットと呼ばれる小さなアプリケーションをダウンロードし実行することができる。アプレットがコンピュータプラットフォームのさまざまな組み合わせの上で実行されえることを仮定すれば、アプレットは典型的にはJava(商標)仮想マシンによって実行される。
【0004】
近年、Javaプログラミング環境はかなり人気が出てきた。Javaプログラミング言語は、小さなデバイス(例えば、ポケットベル、携帯電話およびスマートカード)からスーパコンピュータに至るまで広い範囲のコンピュータ上で実行されえるだけ充分に可搬性を持つよう設計される言語である。Javaで書かれたコンピュータプログラミング(および他の言語)は、Java仮想マシンの実装によって実行されるのに適したJavaバイトコードインストラクションにコンパイルされえる。Java仮想マシンはふつうソフトウェア中でJava仮想マシンインストラクションセットのためのインタプリタとしてインプリメントされるが、一般にはソフトウェア、ハードウェア、またはその両方でありえる。特定のJava仮想マシンのインプリメンテーションおよび対応するサポートライブラリは共にJavaランタイム環境を構成する。
【0005】
Javaプログラミング言語によるコンピュータプログラムは、1つ以上のクラスまたはインタフェース(ここでは併せてクラスまたはクラスファイルと呼ばれる)に組まれる。このようなプログラムは一般にプラットフォーム、すなわちハードウェアおよびオペレーティングシステムに依存しない。よってこれらのコンピュータプログラムは修正することなく、Javaランタイム環境のインプリメンテーションを走らせることができるどのようなコンピュータ上でも実行されえる。
【0006】
Javaプログラミング言語で書かれたオブジェクト指向のクラスは、「クラスファイルフォーマット」と呼ばれる特定のバイナリフォーマットでコンパイルされる。このクラスファイルは、単一のクラスに関連付けられたさまざまな要素を含む。これらの要素は例えばクラスに関連付けられたメソッドおよび/またはインタフェースでありえる。さらにクラスファイルフォーマットはクラスに関連付けられるかなりの量の補助的な情報を含みえる。クラスファイルフォーマット(Java仮想マシンの一般的な動作と共に)は、Tim LindholmおよびFrank Yellinによる「The Java Virtual Machine Specification」第2版にある程度詳細に記載され、ここで参照によって援用される。
【0007】
図1Aは、インタプリタであるJava仮想マシンによる実行を通して、簡単な1つのJavaソースコード101の処理の進行を示す。Javaソースコード101は、Javaで書かれた古典的なハローワールドのプログラムを含む。このソースコードはそれから、ソースコードをバイトコードにコンパイルするバイトコードコンパイラ103に入力される。バイトコードは、ソフトウェアでエミュレートされたコンピュータによって実行されるので、仮想マシンインストラクションである。典型的には仮想マシンインストラクションは汎用である(すなわち特定のマイクロプロセッサまたはコンピュータアーキテクチャのために設計されてはいない)が、これは必要ではない。バイトコードコンパイラは、Javaプログラムのバイトコードを含むJavaクラスファイル105を出力する。JavaクラスファイルはJava仮想マシン107に入力される。Java仮想マシンは、Javaクラスファイル中のバイトコードをデコードし実行するインタプリタである。Java仮想マシンはインタプリタであるが、ソフトウェアでマイクロプロセッサまたはコンピュータアーキテクチャをエミュレートする(例えばマイクロプロセッサまたはコンピュータアーキテクチャはハードウェアとしては存在しないかもしれない)のでふつうは仮想マシンと呼ばれる。
【0008】
図1Bは、簡略化されたクラスファイル100を示す。図1Bに示されるように、クラスファイル100は、コンスタントプール102の部分、インタフェース部分104、フィールド部分106、メソッド部分108、および属性部分110を含む。このメソッド部分108は、クラスファイル100で表現されるJavaクラスに関連付けられたいくつかのJavaメソッドへの参照を含むか有する。
【0009】
従来、Javaコンピューティング環境のさまざまな要素は、Javaヒープの中に格納される。これら要素は、Javaコンピューティング環境の他の論理要素(例えばネイティブ言語要素)と共にJavaクラス表現およびJavaオブジェクトを含む。Javaヒープの従来のインプリメンテーションに付随する1つの問題は、さまざまな要素がJavaヒープ中に混在しえることである。その結果、Javaヒープ中のさまざまな要素にアクセスしたり、Javaヒープを維持したりすることなどのために多大な量の処理が実行されなければならない。これはもちろんシステムリソースの非常に非効率的な使用となる。ある状況では、特に限られた計算パワーおよび/またはメモリのシステムにおいては、この非効率なリソースの使用は深刻な欠点である。
【0010】
さらにJavaヒープをダイナミックに管理する(例えばより多くのメモリが必要とされる場合にヒープを拡張する)ことが非常に望ましい。これは特に比較的限られたリソースのシステムにおいて有用であり、それはアロケートされたメモリが使用されるかされないかにかかわらず大量のメモリは確保されえないことに部分的にはよっている。
【発明の開示】
【発明が解決しようとする課題】
【0011】
したがってJavaヒープの改良されたインプリメンテーション技術が必要とされる。
【課題を解決するための手段】
【0012】
大きく言えば、本発明はJavaヒープを実現する技術に関する。そのため本発明は、Javaコンピューティング環境において動作するJava仮想マシン内で実現されえる。本発明のある実施形態において、2つ以上の指定された部分を備えるJavaヒープ部分が開示される。指定されたヒープ部分のそれぞれは、特定のJava論理要素(例えばJavaオブジェクト、Javaクラス表現、ネイティブ要素など)だけを格納するよう指定されえる。理解されるように、指定されたヒープ部分は、メモリプールとして実現されえる。換言すれば2つ以上の指定されたヒープ部分は、特定のJava論理要素について指定されたメモリプールを全体として表しえる。メモリプールは、指定されたヒープ部分のダイナミックな管理を可能にする。その結果、仮想マシン、特に比較的限られたリソースで動作するもののパフォーマンスは改善される。
【0013】
本発明は、方法、装置、コンピュータで読み取り可能な媒体、およびデータベースシステムを含む多くの手法で実現されえる。本発明のいくつかの実施形態が以下に説明される。
【0014】
Javaヒープメモリを含むJavaコンピューティング環境として、Javaヒープメモリは、2つ以上の指定された部分を含み、前記指定された部分のそれぞれは、前記Javaコンピューティング環境の論理要素を格納するよう指定され、前記指定された部分のそれぞれは、それに指定される前記1つの論理要素だけを格納する。
【0015】
Javaヒープメモリを含むJavaコンピューティング環境において動作するJava仮想マシンとして、本発明のある実施形態は、2つ以上の指定された部分を含み、前記指定された部分のそれぞれは、前記Javaコンピューティング環境の論理要素を格納するよう指定され、前記指定された部分のそれぞれは、それに指定される前記1つの論理要素だけを格納する。
【0016】
Javaヒープメモリを格納するコンピュータで読み取り可能な媒体として、本発明のある実施形態は、2つ以上の指定された部分を含み、前記指定された部分のそれぞれは、前記Javaコンピューティング環境の論理要素を格納するよう指定され、前記指定された部分のそれぞれは、それに指定される前記論理要素だけを格納する。
【0017】
本発明のこれらや他の局面および利点は、以下の詳細な説明が添付図面と共に読まれればより明らかになろう。
【発明を実施するための最良の形態】
【0018】
本発明は添付の図面を参照して以下の詳細な説明によって容易に理解されるだろう。図面において同様の参照番号は同様の要素を表す。
【0019】
背景技術において述べられたように、Javaプログラミング環境は大きく広がった成功を収めた。したがってJavaコンパチブルなデバイスの幅を広げ、そのようなデバイスのパフォーマンスを改善しようとする努力が続いている。特定のプラットフォーム上でのJavaベースのプログラムのパフォーマンスに最も影響を与えるファクタの1つは、基礎になる仮想マシンのパフォーマンスである。したがってJavaに従う仮想マシンのパフォーマンスを改善するための努力が多くの団体によって精力的になされてきた。
【0020】
本発明のこの目的や他の目的を達成するために、Javaヒープのインプリメンテーションの技術が開示される。そのためこの技術は、Javaコンピューティング環境において動作するJava仮想マシンにおいて実現される。本発明のある局面によれば、2つ以上の指定された部分を備えるJavaヒープ部分が開示される。指定されたヒープ部分のそれぞれは、特定のJava論理要素(例えばJavaオブジェクト、Javaクラス表現、ネイティブ要素など)だけを格納するように指定されえる。理解されるように、指定されたヒープ部分は、メモリプールとして実現されえる。換言すれば、2つ以上の指定されたヒープ部分が、特定のJava論理要素のために指定されたメモリプールを全体として表す。メモリプールは、指定されたヒープ部分のダイナミックな管理を可能にする。その結果、仮想マシン、特に比較的限られたリソースで動作するもののパフォーマンスは改善される。
【0021】
本発明の実施形態は、図2A〜3Cを参照して以下に説明される。しかしこれらの図を参照して与えられた詳細な説明は例示目的であって、本発明はこれらの限定された実施形態を超えて成り立つことが当業者には容易に理解されよう。
【0022】
図2Aは、本発明のある実施形態によるJavaヒープ200を示す。Javaヒープ200は、Javaコンピューティング環境で(例えばJava仮想マシン内で)インプリメントされえる。図2Aに示されるように、Javaヒープ200は、2つ以上の指定されたヒープ部分(指定されたヒープ部分1〜N)を含みえる。理解されるように、指定されたヒープ部分1〜Nのそれぞれは、Javaコンピューティング環境の論理要素を格納するのに適する。これらの論理要素は例えば、Javaクラス表現、Javaオブジェクト、ネイティブ要素などである。
【0023】
したがって特定のJavaヒープ部分は、特定の論理要素だけを格納するように設計されえる。例として図2Bは、本発明のある実施形態によるJavaヒープ部分201を示す。Javaヒープ部分201は、Java内部クラス表現部分202、Javaオブジェクト部分204、およびネイティブ要素部分206を含む。記載された実施形態において、ヒープ部分202、204、および206のそれぞれは、特定のJava論理要素だけを格納するように指定される。そのためJava内部クラス表現部分202、Javaオブジェクト部分204、およびネイティブ要素部分206は、それぞれ、Java内部クラス表現、Javaオブジェクト、およびネイティブ要素を格納するように指定される。
【0024】
理解されるように、Javaヒープ部分201の構成は、Javaコンピューティング環境のさまざまな論理要素により効率的にアクセスすることを可能にする。その結果、仮想マシン、特に限られたリソースで動作するもののパフォーマンスは向上されえる。本発明は、任意の所望の目的のためにヒープ部分を指定することを可能にする(例えばヒープ部分は特定のオブジェクト、特定のクラスなどのために指定されえる)ことが理解されよう。これによりJava仮想マシンのパフォーマンスをさらに向上させるのに用いられる大きな柔軟性が可能となる。
【0025】
背景で述べられたように、Javaヒープをダイナミックに管理する(例えばより多くのメモリが必要とされる場合にヒープを拡張する)能力を持つことが非常に望まれる。しかし比較的限られたリソースしか持たないシステムにおいては、アロケートされたメモリが使用されるされないにかかわらず、大量のメモリは確保されえない。この目的や他の目的を達成するために、指定されたヒープ部分がメモリプールリストとして実現されえる。図3Aは、本発明のある実施形態によるJavaヒープ300を示す。図3Aに示されるように、Javaヒープ300は、いくつかの指定されたヒープ部分を含む。再びこれら指定されたヒープ部分のそれぞれは、特定のJava論理要素だけを格納するように指定されえる。さらに2つ以上の指定されたヒープ部分は、メモリプールを全体として表す。そのためメモリプールのそれぞれは、互いにリンクされた2つ以上のアドレス空間(例えばリンクされたリストとして)を含みえる。例えば指定されたヒープ部分302、304および306は全体で、メモリプールとしてリンクされた非連続なアドレス空間を表現する。したがって指定されたヒープ部分302、304および306は特定のJava論理要素を格納するのに用いられえる。
【0026】
図3Bは、本発明のある実施形態によるJavaヒープ310を示す。Javaヒープ310は、Java内部クラス表現、Javaオブジェクト、およびネイティブ要素を格納するのに適する。そのため1つ以上のヒープ部分がこれらのJava論理要素のそれぞれを格納するのに指定される。例えば、指定されたヒープ部分312、318および322は、全てJava内部クラス表現だけを格納するよう指定されている。
【0027】
理解されるように、メモリプールは、指定されたヒープ部分を追加したり除去したりすることを可能にするためダイナミックに管理されえる。図示すれば図3Cは、ある指定されたヒープ部分が除去され、新しい指定されたヒープ部分が追加された後の図3Bに示されたJavaヒープ310を示す。Java内部クラス表現を格納するように指定されたJavaヒープ部分326(図3Bで示される)は、除去されている。その代わりにネイティブ要素を格納するのに指定された新しいJavaヒープ部分326が追加されている。図3Cに示されるように、新しいJavaヒープ部分326は、やはりネイティブ要素の格納のために指定されているJavaヒープ部分328とリンクされえる。したがってヒープメモリは、さまざまなJava論理要素のためにダイナミックに管理されえる。これは、メモリが効率的に使用されえることを意味する。その結果、仮想マシン、特に限られたリソースで動作するもののパフォーマンスが向上されえる。
【0028】
本発明の多くの特徴および利点は詳細な説明から明らかであり、よって添付の特許請求の範囲は本発明の全てのそのような特徴および利点を含むと意図される。さらに多くの改変および変更が当業者には容易に可能であるので、本発明は図示され記載されたのまったく同一の構成および動作に限定されるべきではない。したがって全ての適切な変更および等価物は本発明の範囲に含まれるように解される。
【図面の簡単な説明】
【0029】
【図1A】インタプリタであるJava仮想マシンによる実行を通したJavaソースコードの簡単なものの進行を示す図である。
【図1B】簡略化されたクラスファイルを示す図である。
【図2A】本発明のある実施形態によるJavaヒープを示す図である。
【図2B】本発明のある実施形態によるJavaヒープを示す図である。
【図3A】本発明のある実施形態によるJavaヒープを示す図である。
【図3B】本発明のある実施形態によるJavaヒープを示す図である。
【図3C】本発明のある実施形態によるJavaヒープを示す図である。
Claims (19)
- Javaコンピューティング環境におけるJavaヒープメモリであって、
2つ以上の指定された部分であって、前記指定された部分のそれぞれは、前記Javaコンピューティング環境の論理要素を格納するよう指定され、前記指定された部分のそれぞれは、前記Javaコンピューティング環境の1つの論理要素だけを格納し、前記1つの論理要素は、前記指定された部分のうちの1つ以上において格納されるよう指定される、Javaヒープメモリ。 - 請求項1に記載のJavaヒープメモリであって、前記2つ以上の指定された部分のうちの少なくとも1つは、非連続なメモリアドレス空間において実現されるJavaヒープメモリ。
- 請求項2に記載のJavaヒープメモリであって、前記少なくとも1つの指定された部分は、連続するアドレス空間のリンクされたリストとして実現されるJavaヒープメモリ。
- 請求項3に記載のJavaヒープメモリであって、前記少なくとも1つの指定された部分は、Javaプログラムの実行中にダイナミックに大きくなりえるJavaヒープメモリ。
- 請求項3に記載のJavaヒープメモリであって、前記少なくとも1つの指定された部分は、Javaプログラムの実行中にダイナミックに小さくなりえるJavaヒープメモリ。
- 請求項2に記載のJavaヒープメモリであって、前記少なくとも1つの指定された部分は、Javaプログラムの実行中にダイナミックに大きくなったり、小さくなったりしえるJavaヒープメモリ。
- 請求項2に記載のJavaヒープメモリであって、前記論理要素は、Javaオブジェクト、Javaクラス表現、またはネイティブ要素のいずれかであるJavaヒープメモリ。
- 請求項1に記載のJavaヒープメモリであって、Javaプログラムの実行中に他の指定された部分が前記ヒープ部分に追加され、それにより他の論理要素を前記他の部分に格納されることを可能にするJavaヒープメモリ。
- 請求項1に記載のJavaヒープメモリであって、前記2つ以上の指定された部分のうちの1つは、Javaプログラムの実行中に前記ヒープ部分からダイナミックに除去されえるJavaヒープメモリ。
- Javaコンピューティング環境において動作するJava仮想マシンであって、
Javaヒープメモリであって、前記Javaヒープメモリは、
2つ以上の指定された部分であって、前記指定された部分のそれぞれは、前記Javaコンピューティング環境の論理要素を格納するよう指定され、前記指定された部分のそれぞれは、それに指定される前記論理要素だけを格納する、Java仮想マシン。 - 請求項10に記載のJava仮想マシンであって、前記2つ以上の指定された部分のうちの少なくとも1つは、非連続なメモリアドレス空間において実現されるJava仮想マシン。
- 請求項11に記載のJava仮想マシンであって、前記少なくとも1つの指定された部分は、連続アドレス空間のリンクされたリストとして実現されるJava仮想マシン。
- 請求項12に記載のJava仮想マシンであって、前記少なくとも1つの指定された部分は、Javaプログラムの実行中にダイナミックに管理されえるJava仮想マシン。
- 請求項13に記載のJava仮想マシンであって、前記論理要素は、Javaオブジェクト、Javaクラス表現、またはネイティブ要素のうちのいずれかであるJava仮想マシン。
- Javaヒープメモリを格納するコンピュータで読み取り可能な媒体であって、
2つ以上の指定された部分であって、前記指定された部分のそれぞれは、前記Javaコンピューティング環境の論理要素を格納するよう指定され、前記指定された部分のそれぞれは、それに指定される前記論理要素だけを格納する、コンピュータで読み取り可能な媒体。 - 請求項15に記載のコンピュータで読み取り可能な媒体であって、前記2つ以上の指定された部分の少なくとも1つは、非連続なメモリアドレス空間において実現されるコンピュータで読み取り可能な媒体。
- 請求項16に記載のコンピュータで読み取り可能な媒体であって、前記少なくとも1つの指定された部分は、連続なアドレス空間のリンクされたリストとして実現されるコンピュータで読み取り可能な媒体。
- 請求項17に記載のコンピュータで読み取り可能な媒体であって、前記少なくとも1つの指定された部分は、Javaプログラムの実行中にダイナミックに大きくなったり、小さくなったりしえるコンピュータで読み取り可能な媒体。
- 請求項18に記載のコンピュータで読み取り可能な媒体であって、前記論理要素は、Javaオブジェクト、Javaクラス表現、またはネイティブ要素のうちのいずれかであるコンピュータで読み取り可能な媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/919,751 US6754796B2 (en) | 2001-07-31 | 2001-07-31 | Frameworks for implementation of java heaps |
PCT/US2002/024831 WO2003012629A2 (en) | 2001-07-31 | 2002-07-25 | Frameworks for implementation of java heaps |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005507103A true JP2005507103A (ja) | 2005-03-10 |
Family
ID=25442590
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003517739A Pending JP2005507103A (ja) | 2001-07-31 | 2002-07-25 | Javaヒープを実現するフレームワーク |
Country Status (5)
Country | Link |
---|---|
US (1) | US6754796B2 (ja) |
EP (1) | EP1412847A2 (ja) |
JP (1) | JP2005507103A (ja) |
AU (1) | AU2002324617A1 (ja) |
WO (1) | WO2003012629A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009543236A (ja) * | 2006-07-14 | 2009-12-03 | インテル コーポレイション | マルチタスク仮想マシンのためのヒープ組織 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7162605B2 (en) * | 2004-06-24 | 2007-01-09 | International Business Machines Corporation | Method and system for obtaining memory usage information for a heap when a peak live count is updated |
US7444484B2 (en) * | 2004-06-24 | 2008-10-28 | International Business Machines Corporation | Method and system for determining memory usage of a heap |
US20060242635A1 (en) * | 2005-04-21 | 2006-10-26 | Scott Broussard | Method and system for optimizing array sizes in a JAVA virtual machine |
CN102521148A (zh) * | 2011-11-18 | 2012-06-27 | 深圳中兴网信科技有限公司 | 一种基于内存的日志信息防溢出方法 |
US20140040326A1 (en) * | 2012-07-31 | 2014-02-06 | International Business Machines Corporation | Garbage collection of an object |
US9753846B2 (en) * | 2012-09-06 | 2017-09-05 | Red Hat, Inc. | Adjusting the operating memory used by a virtual machine during runtime |
US9495395B2 (en) * | 2013-04-11 | 2016-11-15 | Oracle International Corporation | Predictive diagnosis of SLA violations in cloud services by seasonal trending and forecasting with thread intensity analytics |
US10248561B2 (en) | 2015-06-18 | 2019-04-02 | Oracle International Corporation | Stateless detection of out-of-memory events in virtual machines |
US10417111B2 (en) | 2016-05-09 | 2019-09-17 | Oracle International Corporation | Correlation of stack segment intensity in emergent relationships |
US11809839B2 (en) | 2022-01-18 | 2023-11-07 | Robert Lyden | Computer language and code for application development and electronic and optical communication |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6076151A (en) * | 1997-10-10 | 2000-06-13 | Advanced Micro Devices, Inc. | Dynamic memory allocation suitable for stride-based prefetching |
US6018793A (en) * | 1997-10-24 | 2000-01-25 | Cirrus Logic, Inc. | Single chip controller-memory device including feature-selectable bank I/O and architecture and methods suitable for implementing the same |
US6286016B1 (en) * | 1998-06-09 | 2001-09-04 | Sun Microsystems, Inc. | Incremental heap expansion in a real-time garbage collector |
US6421739B1 (en) * | 1999-01-30 | 2002-07-16 | Nortel Networks Limited | Fault-tolerant java virtual machine |
US6421761B1 (en) * | 1999-11-09 | 2002-07-16 | International Business Machines Corporation | Partitioned cache and management method for selectively caching data by type |
US6526422B1 (en) * | 2000-05-15 | 2003-02-25 | Sun Microsystems, Inc. | Striding-type generation scanning for parallel garbage collection |
US6453403B1 (en) * | 2000-05-19 | 2002-09-17 | Sun Microsystems, Inc. | System and method for memory management using contiguous fixed-size blocks |
-
2001
- 2001-07-31 US US09/919,751 patent/US6754796B2/en not_active Expired - Lifetime
-
2002
- 2002-07-25 AU AU2002324617A patent/AU2002324617A1/en not_active Abandoned
- 2002-07-25 EP EP02759271A patent/EP1412847A2/en not_active Ceased
- 2002-07-25 JP JP2003517739A patent/JP2005507103A/ja active Pending
- 2002-07-25 WO PCT/US2002/024831 patent/WO2003012629A2/en active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009543236A (ja) * | 2006-07-14 | 2009-12-03 | インテル コーポレイション | マルチタスク仮想マシンのためのヒープ組織 |
Also Published As
Publication number | Publication date |
---|---|
US20030028741A1 (en) | 2003-02-06 |
WO2003012629A2 (en) | 2003-02-13 |
AU2002324617A1 (en) | 2003-02-17 |
US6754796B2 (en) | 2004-06-22 |
EP1412847A2 (en) | 2004-04-28 |
WO2003012629A3 (en) | 2004-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7003778B2 (en) | Exception handling in java computing environments | |
US6964033B2 (en) | Object band customization of Java runtime environments | |
US6959430B2 (en) | Specialized heaps for creation of objects in object-oriented environments | |
US6754796B2 (en) | Frameworks for implementation of java heaps | |
JP2005501334A (ja) | Javaコンピューティング環境におけるJavaマクロインストラクションの生成のためのフレームワーク | |
US6948156B2 (en) | Type checking in java computing environments | |
US7036120B2 (en) | Two tier clusters for representation of objects in Java programming environments | |
US7096467B2 (en) | Initialization of Java classes in Java virtual machine environments | |
US7181724B2 (en) | Representation of Java® data types in virtual machines | |
US20030041320A1 (en) | Frameworks for generation of java macro instructions for performing programming loops | |
US7117489B2 (en) | Optional attribute generator for customized Java programming environments | |
US6751790B2 (en) | Frameworks for efficient representation of string objects in Java programming environments | |
US6918109B2 (en) | Execution of synchronized Java methods in Java computing environments | |
US6961933B2 (en) | Representation of Java data types in virtual machines | |
JP2005501331A (ja) | Javaオブジェクトをインスタンス化するためのJavaマクロインストラクションを生成するフレームワーク | |
US7082597B2 (en) | Representation of objects in a Java programming environment | |
US6996824B2 (en) | Frameworks for efficient representation of string objects in Java programming environments | |
Hartikainen et al. | On mobile java memory consumption | |
US20030041319A1 (en) | Java bytecode instruction for retrieving string representations of java objects |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050722 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071016 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080318 |