JP2002534737A - 低減されたメモリ条件でプログラムコードを実行するための装置 - Google Patents
低減されたメモリ条件でプログラムコードを実行するための装置Info
- Publication number
- JP2002534737A JP2002534737A JP2000592737A JP2000592737A JP2002534737A JP 2002534737 A JP2002534737 A JP 2002534737A JP 2000592737 A JP2000592737 A JP 2000592737A JP 2000592737 A JP2000592737 A JP 2000592737A JP 2002534737 A JP2002534737 A JP 2002534737A
- Authority
- JP
- Japan
- Prior art keywords
- definition
- entity
- memory
- class
- defining
- 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
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
- G06F9/44594—Unloading
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】
Java仮想マシン2は、Javaバイトコード及びメモリ管理システム14を実行するための実行エンジンを有する。メモリ管理システム14は、Javaプログラムの現在の状態から、到達可能ではないオブジェクトを除去するためにガーベジコレクションを実施する。従来技術のメモリ管理システムにおいては、クラスオブジェクトをロードしたクラスローダオブジェクトが到達可能でない場合、クラス定義を表現するオブジェクトがメモリから削除されるだけである。本発明によるメモリ管理システム14は、クラスローダがまだ到達可能であっても、プログラムの現在の状態で到達できる例示されたオブジェクトを持たないクラスを除去する。これは、メモリのかなりのセーブになる。好ましくは、クラス定義を表現しているオブジェクトは、例示されたオブジェクトをもはや有しない場合、定義がメモリから削除されることができるということを知らせる方法を持つ。
Description
【0001】
本発明は、定義ローディング手段と関連する少なくとも2つの定義エンティテ
ィをメモリにロードするための当該定義ローディング手段を有し、前記定義エン
ティティに従ってオブジェクトを生成するためのオブジェクト生成手段を更に有
する、プログラムコードを実行する装置に関する。
ィをメモリにロードするための当該定義ローディング手段を有し、前記定義エン
ティティに従ってオブジェクトを生成するためのオブジェクト生成手段を更に有
する、プログラムコードを実行する装置に関する。
【0002】 本発明は、また、プログラムコードを実行するための方法、及びプログラムコ
ードを実行するための方法を実施するためのコンピュータプログラムを持つ媒体
にも関する。
ードを実行するための方法を実施するためのコンピュータプログラムを持つ媒体
にも関する。
【0003】
冒頭に述べた装置は、Tim Lindholm及びFrank Yellinによる刊行物"The JavaT
M Virtual Machine Specification"から知られており、当該刊行物は、Sunウェ
ブサイトから利用可能であって、1996年9月に初版の印刷された本から変換
されている。
M Virtual Machine Specification"から知られており、当該刊行物は、Sunウェ
ブサイトから利用可能であって、1996年9月に初版の印刷された本から変換
されている。
【0004】 近年、Javaプラットホームの人気は、かなり増大している。Javaは、Java仮想
マシン上で走るバイトコードにコンパイルされるJava言語を有するプラットホー
ムである。
マシン上で走るバイトコードにコンパイルされるJava言語を有するプラットホー
ムである。
【0005】 仮想マシン上で走るバイトコードの使用は、コンパイルされたバイトコードが
ハードウェアとオペレーティングシステムとのあらゆる組合せ上で(仮想マシン
がそのような組合せのために存在する場合)実行されうるという利点を有する。
ハードウェアとオペレーティングシステムとのあらゆる組合せ上で(仮想マシン
がそのような組合せのために存在する場合)実行されうるという利点を有する。
【0006】 Java言語はオブジェクト指向である。これは、プログラムの実行中に、Java言
語におけるクラスまたはインタフェースでありえる定義エンティティに従ってオ
ブジェクトが生成されることを意味する。オブジェクトが生成可能になる前に、
必要とされる定義エンティティ(クラスまたはインタフェース)がメモリに最初
にロードされなければならない。このローディングは、Java言語においてクラス
ローダと呼ばれる定義ローディング手段によって行われる。異なる定義ローディ
ング手段が、ローディング定義エンティティの異なる方法について存在しうる。
Javaでは、ディスクから、TCP/IPベースのネットワークからクラスをロードする
か、又はMPEG-2のトランスポートストリームからそれらをロードする、さまざ
まなクラスローダがありうる。
語におけるクラスまたはインタフェースでありえる定義エンティティに従ってオ
ブジェクトが生成されることを意味する。オブジェクトが生成可能になる前に、
必要とされる定義エンティティ(クラスまたはインタフェース)がメモリに最初
にロードされなければならない。このローディングは、Java言語においてクラス
ローダと呼ばれる定義ローディング手段によって行われる。異なる定義ローディ
ング手段が、ローディング定義エンティティの異なる方法について存在しうる。
Javaでは、ディスクから、TCP/IPベースのネットワークからクラスをロードする
か、又はMPEG-2のトランスポートストリームからそれらをロードする、さまざ
まなクラスローダがありうる。
【0007】
Java仮想マシンは、もはや必要でないオブジェクト及びクラスを自動的に削除
するためにガーベジコレクションを実施するメモリ管理システムを有する。
するためにガーベジコレクションを実施するメモリ管理システムを有する。
【0008】 Javaが、TVのもの及びセットトップボックスのような民生機器において使用さ
れるとき、制限された量のメモリ資源のみが利用可能である。現在、民生機器に
ついてのJavaの使用は、利用可能な限られた量のメモリにより非常に難しい。
れるとき、制限された量のメモリ資源のみが利用可能である。現在、民生機器に
ついてのJavaの使用は、利用可能な限られた量のメモリにより非常に難しい。
【0009】 本発明の目的は、メモリの必要量が低減された冒頭に述べられた装置を提供す
ることである。
ることである。
【0010】
前記目的を達成するために、本発明による装置は、関係するオブジェクトを持
たない定義エンティティをメモリから除去するためのメモリー管理手段を有し、
前記定義ローディング手段が関係するオブジェクトをまだ持つ定義エンティティ
と関連していることを特徴としている。
たない定義エンティティをメモリから除去するためのメモリー管理手段を有し、
前記定義ローディング手段が関係するオブジェクトをまだ持つ定義エンティティ
と関連していることを特徴としている。
【0011】 メモリからもはや関係するオブジェクトを持たない定義エンティティを除去す
ることによって、メモリのかなりの量が自由になり、本願の装置は先行技術の装
置より少ないメモリを必要とする。
ることによって、メモリのかなりの量が自由になり、本願の装置は先行技術の装
置より少ないメモリを必要とする。
【0012】 本発明は、Javaのバーチャルマシンの現在の仕様において、定義ローディング
手段がもはや到達可能ではない場合、定義エンティティが削除されるだけでよい
と規定される、という認識に基づく。このことは、前記定義ローディング手段に
よって定義エンティティがロードされたオブジェクトがもはや存在しないことを
意味する。
手段がもはや到達可能ではない場合、定義エンティティが削除されるだけでよい
と規定される、という認識に基づく。このことは、前記定義ローディング手段に
よって定義エンティティがロードされたオブジェクトがもはや存在しないことを
意味する。
【0013】 これは、下記の例でより明らかにされるだろう。クラスローダ(定義ローディ
ング手段)が2つのクラス(定義エンティティ)をロードした場合、もはや関係
するオブジェクトを持たない第1のロードされたクラスは、他のクラスが関係す
るオブジェクトをまだ持つかぎり、メモリから除去されなくてもよい。この結果
は、クラスがメモリに不必要なまま長く残るということである。
ング手段)が2つのクラス(定義エンティティ)をロードした場合、もはや関係
するオブジェクトを持たない第1のロードされたクラスは、他のクラスが関係す
るオブジェクトをまだ持つかぎり、メモリから除去されなくてもよい。この結果
は、クラスがメモリに不必要なまま長く残るということである。
【0014】 本発明による進歩的な考えを使用することによって、クラスがもはや必要でな
くなるとすぐ、クラスはロードされなくてもよい。
くなるとすぐ、クラスはロードされなくてもよい。
【0015】 本発明の実施例は、装置が、除去可能なものとして定義エンティティを指定す
るための指示手段を含み、メモリー管理手段が、定義エンティティが除去可能な
ものとして指定されたとき、関係するオブジェクトを持たないメモリ定義エンテ
ィティをメモリから除去するように構成され、前記メモリー管理手段は、関係す
るオブジェクトを持たない定義エンティティだけと関連している定義ローディン
グ手段に対応している定義エンティティをメモリから除去するように構成される
ことを特徴とする。
るための指示手段を含み、メモリー管理手段が、定義エンティティが除去可能な
ものとして指定されたとき、関係するオブジェクトを持たないメモリ定義エンテ
ィティをメモリから除去するように構成され、前記メモリー管理手段は、関係す
るオブジェクトを持たない定義エンティティだけと関連している定義ローディン
グ手段に対応している定義エンティティをメモリから除去するように構成される
ことを特徴とする。
【0016】 関係するオブジェクトを持たない定義エンティティがメモリから常に除去され
るということが好ましくない環境があるかもしれない。これは、クラス変数がク
ラス方法の実行によって変更されるときのケースでありえる。このようなクラス
がメモリから除去されて再び必要なときに再ロードされる場合、クラス変数の値
は変更されてもよい。
るということが好ましくない環境があるかもしれない。これは、クラス変数がク
ラス方法の実行によって変更されるときのケースでありえる。このようなクラス
がメモリから除去されて再び必要なときに再ロードされる場合、クラス変数の値
は変更されてもよい。
【0017】 定義エンティティが除去可能なものと示されるとき関係するオブジェクトを持
たない定義エンティティを除去するだけにより、アプリケーションプログラムは
除去可能又はそうでないものとして定義エンティティを示すことにより、この除
去を制御できる。 本発明の他の実施例は、前記装置が、除去可能であるとして示される定義エンテ
ィティの識別子を記憶するための記憶手段を含むことを特徴とする。
たない定義エンティティを除去するだけにより、アプリケーションプログラムは
除去可能又はそうでないものとして定義エンティティを示すことにより、この除
去を制御できる。 本発明の他の実施例は、前記装置が、除去可能であるとして示される定義エンテ
ィティの識別子を記憶するための記憶手段を含むことを特徴とする。
【0018】 クラスが関係するオブジェクトを持たないならばクラスがロードされないでも
良いかどうかをメモリ管理手段と通信する簡単な方法は、このクラスが除去可能
かどうかの識別子とともに、すべてのロードされたクラスが入力された表を記憶
することである。あるいは、各クラスオブジェクトと関連するオブジェクトヘッ
ダ内の識別子を記憶することが可能である。
良いかどうかをメモリ管理手段と通信する簡単な方法は、このクラスが除去可能
かどうかの識別子とともに、すべてのロードされたクラスが入力された表を記憶
することである。あるいは、各クラスオブジェクトと関連するオブジェクトヘッ
ダ内の識別子を記憶することが可能である。
【0019】 本発明は、図を参照して説明されるだろう。
【0020】
図1によるJava仮想マシンでは、クラス管理サブシステム6は、ローカルハード
ドライブ又はネットワークからメモリ内に存在しないクラスをロードするように
構成される。
ドライブ又はネットワークからメモリ内に存在しないクラスをロードするように
構成される。
【0021】 クラス管理サブシステム6によってロードされるべきクラスは、コード検査機
構4によって最初にチェックされる。通常は、ネットワークからロードされるク
ラスのみが検証される。なぜなら、これらは、未知であり、信頼性の低いソース
からのものでありうるからである。クラスをロードする際、構文チェックが実施
される。また、ロードされたクラスの「構文」整合性が、チェックされる。これ
は、例えばクラスで規定された定数がそれらのタイプと一致しているかどうかの
チェックを含む。これは、例えば文字列として規定された定数が本当に文字列で
あるかどうかがチェックされる。
構4によって最初にチェックされる。通常は、ネットワークからロードされるク
ラスのみが検証される。なぜなら、これらは、未知であり、信頼性の低いソース
からのものでありうるからである。クラスをロードする際、構文チェックが実施
される。また、ロードされたクラスの「構文」整合性が、チェックされる。これ
は、例えばクラスで規定された定数がそれらのタイプと一致しているかどうかの
チェックを含む。これは、例えば文字列として規定された定数が本当に文字列で
あるかどうかがチェックされる。
【0022】 ランタイムの間、バイトコード確認が、実施される。これはスタックの整合性
をチェックすること、 すなわち、スタックのオーバーフロー及びアンダーフロ
ーが発生しないことを確認するを含む。これは、変数に入れられるデータのタイ
プが前記変数の宣言に対応するかどうかをチェックすることも含む。
をチェックすること、 すなわち、スタックのオーバーフロー及びアンダーフロ
ーが発生しないことを確認するを含む。これは、変数に入れられるデータのタイ
プが前記変数の宣言に対応するかどうかをチェックすることも含む。
【0023】 実行エンジン8は、確認されたバイトコードを実行するよう構成される。この
実行のために、実行エンジンは、3つの利用可能なサブシステム、すなわちディ
スクから若しくはネットワークからの実ファイルのローディング又は表示装置の
グラフィック要素の表示のようなある作業を実施するためにオペレーティングシ
ステムを起動するためのシステムコールサブシステム8を有する。さらに、仮想
マシンは別々のスレッドを生成するために使用されるスレッドシステム12を有
する。スレッドサブシステム12は、また、分離したスレッドの同期をとるよう
に構成される。
実行のために、実行エンジンは、3つの利用可能なサブシステム、すなわちディ
スクから若しくはネットワークからの実ファイルのローディング又は表示装置の
グラフィック要素の表示のようなある作業を実施するためにオペレーティングシ
ステムを起動するためのシステムコールサブシステム8を有する。さらに、仮想
マシンは別々のスレッドを生成するために使用されるスレッドシステム12を有
する。スレッドサブシステム12は、また、分離したスレッドの同期をとるよう
に構成される。
【0024】 Java VMも、メモリから廃止項目を自動的に除去するためにガーベジコレクタ
を含むメモリ管理サブシステム14を有する。Java VMのSunインプリメンテーシ
ョンにおいて、いわゆる「マーク アンド スイープ」ガーベジコレクションア
ルゴリズムが使用される。このタイプのガーベジコレクションアルゴリズムは、
当業者にかなり知られている。このアルゴリズムでは、ヒープに存在するそれぞ
れのオブジェクトは、いわゆるマークビットを有する。ガーベジコレクションの
プロセスは、ヒープに存在するすべてのオブジェクトのためにマークビットをリ
セットすることから始まる。それから、すべてのフィールド及び変数が、ヒープ
内のオブジェクトへの参照のために調べられる。ヒープ内のそれぞれのオブジェ
クトに対して、各オブジェクトはフィールド又は変数によって参照付けられ、マ
ークビットが設定される。最後に、ガーベジコレクタはヒープを掃除し、マーク
ビットが設定されないオブジェクトにより使用されたメモリ領域を再要求する。
を含むメモリ管理サブシステム14を有する。Java VMのSunインプリメンテーシ
ョンにおいて、いわゆる「マーク アンド スイープ」ガーベジコレクションア
ルゴリズムが使用される。このタイプのガーベジコレクションアルゴリズムは、
当業者にかなり知られている。このアルゴリズムでは、ヒープに存在するそれぞ
れのオブジェクトは、いわゆるマークビットを有する。ガーベジコレクションの
プロセスは、ヒープに存在するすべてのオブジェクトのためにマークビットをリ
セットすることから始まる。それから、すべてのフィールド及び変数が、ヒープ
内のオブジェクトへの参照のために調べられる。ヒープ内のそれぞれのオブジェ
クトに対して、各オブジェクトはフィールド又は変数によって参照付けられ、マ
ークビットが設定される。最後に、ガーベジコレクタはヒープを掃除し、マーク
ビットが設定されないオブジェクトにより使用されたメモリ領域を再要求する。
【0025】 最後に、Java VMは、C、C++又はアセンブラで書かれた機能の使用を可能にす
る、ネイティブの方法インタフェースサブシステム16を有する。これは、既存
のライブラリを再利用するため、又は性能を改善するために最適化されたアセン
ブラルーチンを使用することができるために便利であろう。
る、ネイティブの方法インタフェースサブシステム16を有する。これは、既存
のライブラリを再利用するため、又は性能を改善するために最適化されたアセン
ブラルーチンを使用することができるために便利であろう。
【0026】 図2では、図1によるJava VMのヒープに存在するオブジェクトが、提示され
る。図2は、クラスローダ18によってロードされる、第1のクラス22及び第
2のクラス20を示す。クラス22から1つのオブジェクト24が例示(インス
タンシエート)され、クラス20は例示されたオブジェクトを有しない。
る。図2は、クラスローダ18によってロードされる、第1のクラス22及び第
2のクラス20を示す。クラス22から1つのオブジェクト24が例示(インス
タンシエート)され、クラス20は例示されたオブジェクトを有しない。
【0027】 従来技術のガーベジコレクションアルゴリズムを使用するとき、オブジェクト
18、20、22及び24のどれも集められるガーベジでないだろう、クラスロ
ーダ18がまだ到達可能だからである(クラスローダ18によりロードされるク
ラスからオブジェクト24が例示される)。本発明による装置において、クラス
20はメモリから削除されることができる。なぜならば、それが例示されたオブ
ジェクトを持たないからである。好ましくは、方法は、クラスがもはや例示され
たオブジェクトを持たないとき、クラスがロードされないことができるかどうか
を示すクラスを前記クラスに加える。このような方法の構文は、「EnableClassU
nloading(class)」でありえる。この方法は、このクラスが削除可能であるこ
とを示す、関連するクラスのクラスヘッダ内のビットを設定できる。あるいは、
すべての削除可能なクラスが登録される表が前記VMに構築されることが可能であ
る。
18、20、22及び24のどれも集められるガーベジでないだろう、クラスロ
ーダ18がまだ到達可能だからである(クラスローダ18によりロードされるク
ラスからオブジェクト24が例示される)。本発明による装置において、クラス
20はメモリから削除されることができる。なぜならば、それが例示されたオブ
ジェクトを持たないからである。好ましくは、方法は、クラスがもはや例示され
たオブジェクトを持たないとき、クラスがロードされないことができるかどうか
を示すクラスを前記クラスに加える。このような方法の構文は、「EnableClassU
nloading(class)」でありえる。この方法は、このクラスが削除可能であるこ
とを示す、関連するクラスのクラスヘッダ内のビットを設定できる。あるいは、
すべての削除可能なクラスが登録される表が前記VMに構築されることが可能であ
る。
【0028】 図3では、図1に従うJava VMのヒープに存在するオブジェクトのもう一つの
グループが表されている。図3は、第1のクラス32及び第2のクラス34をロ
ードした第1のクラスローダ36を示す。クラス32及び34のどれも、到達可
能ではない。方法EnableClassUnloadingが呼ばれるかどうかに関係なく、クラス
ローダ36が到達可能でないので、これらのクラス32及び34並びにこれらの
クラスローダ36はメモリから削除されるだろう。
グループが表されている。図3は、第1のクラス32及び第2のクラス34をロ
ードした第1のクラスローダ36を示す。クラス32及び34のどれも、到達可
能ではない。方法EnableClassUnloadingが呼ばれるかどうかに関係なく、クラス
ローダ36が到達可能でないので、これらのクラス32及び34並びにこれらの
クラスローダ36はメモリから削除されるだろう。
【0029】 図3は、また、オブジェクト30が例示されるクラス28をロードした第2の
クラスローダ26を示す。クラス28は、1つの到達可能なオブジェクト30を
有する。結果的に、クラスローダ26、クラス28及びオブジェクト30は、(
メモリから除去され)アンロードされない。
クラスローダ26を示す。クラス28は、1つの到達可能なオブジェクト30を
有する。結果的に、クラスローダ26、クラス28及びオブジェクト30は、(
メモリから除去され)アンロードされない。
【0030】 Java 1.2のSDKにおいて、基準オブジェクトの概念が導入され、強く及び弱
く到達可能なオブジェクトとなることが観察される。従来技術のガーベジコレク
タは、強く到達可能ではないすべてのオブジェクトを除去する。基準オブジェク
トが使用されるとき、図2及び図3を参照して上記説明に用いられるような到達
可能な概念は強く到達可能であることを意味することが観察される。
く到達可能なオブジェクトとなることが観察される。従来技術のガーベジコレク
タは、強く到達可能ではないすべてのオブジェクトを除去する。基準オブジェク
トが使用されるとき、図2及び図3を参照して上記説明に用いられるような到達
可能な概念は強く到達可能であることを意味することが観察される。
【0031】 図4による流れ図において、番号付けられた命令は以下の意味を有する:
【表1】
【0032】 図4によると、プログラムの命令40でプログラムが始まり、必要な初期化が
起こる。命令42では、プログラムの現在の状態に対応している変数及びフィー
ルドから始めて、到達可能なオブジェクトが、検索される。到達可能なオブジェ
クトが見つけられると、オブジェクトは命令44でマークされる。命令46では
、すべての到達可能なオブジェクトが見つけられたかチェックされる。これは、
VMの現在の状態でのすべてのフィールド及び変数が、対応しているオブジェクト
のためにトレースされた場合である。すべての到達可能なオブジェクトがまだ見
つけられない場合、プログラムは次の到達可能なオブジェクトを見つけるために
命令42へジャンプする。
起こる。命令42では、プログラムの現在の状態に対応している変数及びフィー
ルドから始めて、到達可能なオブジェクトが、検索される。到達可能なオブジェ
クトが見つけられると、オブジェクトは命令44でマークされる。命令46では
、すべての到達可能なオブジェクトが見つけられたかチェックされる。これは、
VMの現在の状態でのすべてのフィールド及び変数が、対応しているオブジェクト
のためにトレースされた場合である。すべての到達可能なオブジェクトがまだ見
つけられない場合、プログラムは次の到達可能なオブジェクトを見つけるために
命令42へジャンプする。
【0033】 すべてのあり得る到達可能なオブジェクトが見つけられると、「mark and swe
ep」のガーベジコレクションアルゴリズムの「mark phase」は完遂され、「swee
p phase」が始まる。
ep」のガーベジコレクションアルゴリズムの「mark phase」は完遂され、「swee
p phase」が始まる。
【0034】 命令48では、ヒープからのオブジェクトが、試験のために選択される。命令
49では、オブジェクトがマークされるかどうかが、チェックされる。オブジェ
クトがマークされる場合、それはメモリから削除されてはならず、プログラムは
命令60で続く。オブジェクトがマークされない場合、命令50で、オブジェク
トがクラスであるかどうかがチェックされる。これは、例えばオブジェクトと関
連するオブジェクトヘッダのフィールドから判断できる。オブジェクトがクラス
でない場合、プログラムは命令58で続き、オブジェクトがメモリから削除され
る。その後、プログラムは命令60で続けられる。
49では、オブジェクトがマークされるかどうかが、チェックされる。オブジェ
クトがマークされる場合、それはメモリから削除されてはならず、プログラムは
命令60で続く。オブジェクトがマークされない場合、命令50で、オブジェク
トがクラスであるかどうかがチェックされる。これは、例えばオブジェクトと関
連するオブジェクトヘッダのフィールドから判断できる。オブジェクトがクラス
でない場合、プログラムは命令58で続き、オブジェクトがメモリから削除され
る。その後、プログラムは命令60で続けられる。
【0035】 オブジェクトがクラスである場合、命令52において、クラスが削除可能なも
のとして指定されるかどうかがチェックされる。これは、例えばオブジェクトヘ
ッダの「削除可能なビット」がEnableClassUnloading方法を起動することによっ
て設定されたかどうかをチェックすることによりなされる。あるいは、また、す
べての削除可能なクラスを含む表を調べても可能である。オブジェクトが削除可
能な場合、命令58で、クラスオブジェクトは削除される。
のとして指定されるかどうかがチェックされる。これは、例えばオブジェクトヘ
ッダの「削除可能なビット」がEnableClassUnloading方法を起動することによっ
て設定されたかどうかをチェックすることによりなされる。あるいは、また、す
べての削除可能なクラスを含む表を調べても可能である。オブジェクトが削除可
能な場合、命令58で、クラスオブジェクトは削除される。
【0036】 クラスが削除可能なものとしてマークされない場合、命令54で、クラスをロ
ードしたクラスローダが検索される。これは、ロードしたクラス及びそれらの関
連したクラスローダを有するVMの表を読むことによってなされる。クラスローダ
を見つけたあと、命令56でクラスローダオブジェクトがマークされるかどうか
がチェックされる。クラスローダがマークされない場合、命令58で、クラスオ
ブジェクトは削除される。クラスローダがマークされる場合、クラスはメモリか
ら削除されず、プログラムは命令60で続けられる。
ードしたクラスローダが検索される。これは、ロードしたクラス及びそれらの関
連したクラスローダを有するVMの表を読むことによってなされる。クラスローダ
を見つけたあと、命令56でクラスローダオブジェクトがマークされるかどうか
がチェックされる。クラスローダがマークされない場合、命令58で、クラスオ
ブジェクトは削除される。クラスローダがマークされる場合、クラスはメモリか
ら削除されず、プログラムは命令60で続けられる。
【0037】 命令60で、ヒープのすべてのオブジェクトが処理されたかどうかが、チェッ
クされる。これが本当ならば、プログラムは命令62で終了される。さもなけれ
ば、プログラムはヒープの次のオブジェクトを処理するために命令48を続ける
。
クされる。これが本当ならば、プログラムは命令62で終了される。さもなけれ
ば、プログラムはヒープの次のオブジェクトを処理するために命令48を続ける
。
【図1】本発明が使用されるJava仮想マシンのアーキテクチャを示す。
【図2】関連するクラス及び例示されたオブジェクトをともなうクラスロー
ダを示す。
ダを示す。
【図3】各クラスローダが例示されたオブジェクトをともなうクラスを有す
る2つのクラスローダを示す。
る2つのクラスローダを示す。
【図4】図1に従うメモリ管理システム14での使用のための本発明による
プログラムのフローチャートを示す。
プログラムのフローチャートを示す。
6:クラス管理サブシステム、 8:実行エンジン、 12:スレッドシステム、 14:メモリ管理サブシステム、 18:クラスローダ、 22、32:第1クラス、 20、34:第2クラス、 24、30:オブジェクト、 26:第2クラスローダ、 36:第1クラスローダ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ブーツ ヨハネス エー ジー オランダ国 5656 アーアー アインドー フェン プロフ ホルストラーン 6 Fターム(参考) 5B060 AA10
Claims (9)
- 【請求項1】 定義ローディング手段と関連する少なくとも2つの定義エンティ
ティをメモリにロードするための当該定義ローディング手段を有し、前記定義エ
ンティティに従ってオブジェクトを生成するためのオブジェクト生成手段を更に
有する、プログラムコードを実行する装置において、関係するオブジェクトを持
たない定義エンティティをメモリから除去するためのメモリ管理手段を有し、前
記定義ローディング手段が関係するオブジェクトをまだ持つ定義エンティティと
関連していることを特徴とする装置。 - 【請求項2】 前記装置は除去可能なものとして定義エンティティを指定する指
定手段を有し、前記メモリ管理手段は、定義エンティティが除去可能なものとし
て指定されるとき関係するオブジェクトを持たない当該定義エンティティをメモ
リから除去し、関係するオブジェクトを持たない定義エンティティだけと関連し
ている定義ローディング手段に対応する定義エンティティをメモリから除去する
ことを特徴とする請求項1に記載の装置。 - 【請求項3】 除去可能なものとして指定される定義エンティティの識別を記憶
する記憶手段を有することを特徴とする請求項2に記載の装置。 - 【請求項4】 定義ローディングエンティティと関連する少なくとも2つの定義
エンティティを当該定義ローディングエンティティによりメモリにロードし、前
記定義エンティティに従ってオブジェクトを生成する、プログラムコードを実行
するための方法において、関係するオブジェクトを持たない定義エンティティを
メモリから除去し、前記定義ローディングエンティティが、関係するオブジェク
トをまだ持つ定義エンティティと関連していることを特徴とする方法。 - 【請求項5】 除去可能なものとして定義エンティティを指定し、定義エンティ
ティが除去可能なものとして指定されるとき関係するオブジェクトを持たない当
該定義エンティティをメモリから除去し、関係するオブジェクトを持たない定義
エンティティだけと関連している定義エンティティをメモリから除去することを
特徴とする請求項4に記載の方法。 - 【請求項6】 除去可能なものとして指定される定義エンティティの識別を記憶
することを特徴とする請求項5に記載の方法。 - 【請求項7】 定義ローディングエンティティと関連する少なくとも2つの定義
エンティティを当該定義ローディングエンティティによりメモリにロードし、前
記定義エンティティに従ってオブジェクトを生成する、プログラムコードを実行
するための方法を実施するためのコンピュータプログラムを持つ媒体において、
関係するオブジェクトを持たない定義エンティティをメモリから除去し、定義ロ
ーディング手段が、関係するオブジェクトをまだ持つ定義エンティティと関連し
ていることを特徴とする媒体。 - 【請求項8】 除去可能なものとして定義エンティティを指定し、定義エンティ
ティが除去可能なものとして指定されるとき関係するオブジェクトを持たない当
該定義エンティティをメモリから除去し、関係するオブジェクトを持たない定義
エンティティだけと関連している定義エンティティをメモリから除去することを
有する方法を実施するためのコンピュータプログラムを持つことを特徴とする請
求項7に記載の媒体。 - 【請求項9】 除去可能なものとして指定される定義エンティティの識別を記憶
することを有する方法を実施するためのコンピュータプログラムを持つことを特
徴とする請求項8に記載の媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP99200015 | 1999-01-06 | ||
EP99200015.8 | 1999-01-06 | ||
PCT/EP1999/010301 WO2000041079A2 (en) | 1999-01-06 | 1999-12-20 | Arrangement for executing program code with reduced memory requirements |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002534737A true JP2002534737A (ja) | 2002-10-15 |
JP2002534737A5 JP2002534737A5 (ja) | 2007-03-01 |
Family
ID=8239783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000592737A Pending JP2002534737A (ja) | 1999-01-06 | 1999-12-20 | 低減されたメモリ条件でプログラムコードを実行するための装置 |
Country Status (8)
Country | Link |
---|---|
US (1) | US6681381B1 (ja) |
EP (1) | EP1068572A2 (ja) |
JP (1) | JP2002534737A (ja) |
KR (1) | KR20010083781A (ja) |
CN (1) | CN1139032C (ja) |
BR (1) | BR9908574A (ja) |
CA (1) | CA2322950A1 (ja) |
WO (1) | WO2000041079A2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005100402A (ja) * | 2003-09-23 | 2005-04-14 | Microsoft Corp | オブジェクト指向プログラムのための領域ベースのメモリ管理 |
JP2013205911A (ja) * | 2012-03-27 | 2013-10-07 | Nec Corp | データ参照元特定システム及びその特定方法、並びにそのコンピュータ・プログラム |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ES2376191T3 (es) * | 2000-05-25 | 2012-03-09 | Oracle America, Inc. | Método y aparato para crear métodos nativos eficaces que extienden un intérprete de códigos de byte. |
US7082597B2 (en) | 2001-06-20 | 2006-07-25 | Sun Microsystems, Inc. | Representation of objects in a Java programming environment |
US7036120B2 (en) | 2001-07-31 | 2006-04-25 | Sun Microsystems, Inc. | Two tier clusters for representation of objects in Java programming environments |
US7114152B2 (en) * | 2002-01-08 | 2006-09-26 | International Business Machines Corporation | Method, apparatus, and program to determine the mutability of an object at loading time |
JP2005018425A (ja) * | 2003-06-26 | 2005-01-20 | Matsushita Electric Ind Co Ltd | プログラム変換方法、プログラムおよび記憶媒体 |
KR100626368B1 (ko) * | 2003-08-25 | 2006-09-20 | 삼성전자주식회사 | 가비지 콜렉션 벤치마킹 방법 |
DE10351622A1 (de) | 2003-11-05 | 2005-06-23 | Giesecke & Devrient Gmbh | Beschleunigtes Referenzfinden für eine automatische Speicherbereinigung (Garbage Collection) |
US7823137B2 (en) * | 2004-10-21 | 2010-10-26 | International Business Machines Corporation | Process and implementation for using byte code insertion to modify a class definition to define and use probes for application components |
WO2007076629A1 (en) * | 2005-12-30 | 2007-07-12 | Intel Corporation | Type checking for object-oriented programming languages |
US20090199171A1 (en) * | 2006-03-01 | 2009-08-06 | Nokia Corporation | Code Size Reduction by Outlining Specific Functions in a Library |
US8375373B2 (en) * | 2010-04-19 | 2013-02-12 | Microsoft Corporation | Intermediate language support for change resilience |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3294326B2 (ja) * | 1992-07-09 | 2002-06-24 | 株式会社日立製作所 | データ処理方法および装置 |
US5729710A (en) * | 1994-06-22 | 1998-03-17 | International Business Machines Corporation | Method and apparatus for management of mapped and unmapped regions of memory in a microkernel data processing system |
US5925100A (en) * | 1996-03-21 | 1999-07-20 | Sybase, Inc. | Client/server system with methods for prefetching and managing semantic objects based on object-based prefetch primitive present in client's executing application |
US6134602A (en) * | 1997-09-24 | 2000-10-17 | Microsoft Corporation | Application programming interface enabling application programs to group code and data to control allocation of physical memory in a virtual memory system |
-
1999
- 1999-12-20 CN CNB998035068A patent/CN1139032C/zh not_active Expired - Fee Related
- 1999-12-20 KR KR1020007009841A patent/KR20010083781A/ko active IP Right Grant
- 1999-12-20 JP JP2000592737A patent/JP2002534737A/ja active Pending
- 1999-12-20 BR BR9908574-7A patent/BR9908574A/pt not_active IP Right Cessation
- 1999-12-20 WO PCT/EP1999/010301 patent/WO2000041079A2/en not_active Application Discontinuation
- 1999-12-20 CA CA002322950A patent/CA2322950A1/en not_active Abandoned
- 1999-12-20 EP EP99966997A patent/EP1068572A2/en not_active Withdrawn
-
2000
- 2000-01-05 US US09/475,568 patent/US6681381B1/en not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005100402A (ja) * | 2003-09-23 | 2005-04-14 | Microsoft Corp | オブジェクト指向プログラムのための領域ベースのメモリ管理 |
JP2013205911A (ja) * | 2012-03-27 | 2013-10-07 | Nec Corp | データ参照元特定システム及びその特定方法、並びにそのコンピュータ・プログラム |
Also Published As
Publication number | Publication date |
---|---|
US6681381B1 (en) | 2004-01-20 |
CN1292119A (zh) | 2001-04-18 |
EP1068572A2 (en) | 2001-01-17 |
KR20010083781A (ko) | 2001-09-01 |
CA2322950A1 (en) | 2000-07-13 |
WO2000041079A2 (en) | 2000-07-13 |
WO2000041079A3 (en) | 2000-11-02 |
CN1139032C (zh) | 2004-02-18 |
BR9908574A (pt) | 2000-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6757890B1 (en) | Methods and apparatus for enabling local Java object allocation and collection | |
KR100541174B1 (ko) | 로컬화된 메모리 재이용을 가진 데이터 처리기 | |
US6272674B1 (en) | Method and apparatus for loading a Java application program | |
US6601235B1 (en) | Method and apparatus for dynamically deoptimizing compiled activations | |
US6718538B1 (en) | Method and apparatus for hybrid checkpointing | |
US6314436B1 (en) | Space-limited marking structure for tracing garbage collectors | |
US6820101B2 (en) | Methods and apparatus for optimizing garbage collection using separate heaps of memory for storing local objects and non-local objects | |
US7406684B2 (en) | Compiler, dynamic compiler, and replay compiler | |
EP0996059A2 (en) | Class loading model | |
EP3198452B1 (en) | On-demand loading of dynamic scripting language code for reduced memory usage | |
US11249758B2 (en) | Conditional branch frame barrier | |
EP1342159B1 (en) | Method and apparatus for lazy instantiation of objects in a virtual machine | |
WO2001061472A2 (en) | Incremental class unloading in a train-algorithm-based garbage collector | |
Atkinson et al. | Algorithms for a persistent heap | |
JP2002534737A (ja) | 低減されたメモリ条件でプログラムコードを実行するための装置 | |
JP2005063449A (ja) | オブジェクトからオブジェクトへのJavaネイティブインタフェースマッピングの方法及び装置 | |
EP1058897A1 (en) | Transparent garbage collection of resources | |
US20070203959A1 (en) | Apparatus and method for managing resources using virtual ID in multiple Java application environment | |
US9477496B2 (en) | Method and apparatus for loading classes and re-organizing class archives | |
EP1489518B1 (en) | Embedded garbage collection | |
US6901591B1 (en) | Frameworks for invoking methods in virtual machines | |
US6829686B2 (en) | Method and apparatus for bag-to-set, buffering remembered set | |
Baker et al. | An approach to buffer management in Java HPC messaging | |
US20020199176A1 (en) | Storing and retrieving of field descriptors in Java computing environments | |
Thomas | Garbage collection in shared-environment closure reducers: Space-efficient depth first copying using a tailored approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061219 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061219 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100128 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100624 |