説明

個々のクラスローダを実装するための方法および装置

【課題】個々のクラスローダを実装するための方法および装置を提供することを目的とする。
【解決手段】アプリケーションに関連付けられたクラスをロードしたりアンロードしたりするための方法および装置を開示する。アプリケーションに関連付けられたクラスをロードするように適合されたクラスローダが構築される。このクラスローダは、アプリケーションに関連付けられた1またはそれ以上のクラスをロードするために利用される。そうして、このクラスローダは、1またはそれ以上のクラスへの参照を維持するようになる。そして、このアプリケーションのためのクラスローダは、その参照が解除されて到達不能になる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、コンピュータソフトウェアに関する。本発明は、特に、アプリケーションに関連付けられたクラスをロードするように適応されたクラスローダを実装するための方法および装置に関する。
【背景技術】
【0002】
デジタルテレビ革命は、テレビ放送の歴史における最も重要な出来事の1つである。デジタルテレビの到来によって、人工衛星、ケーブル、そして地上局のテレビチャンネルを介して高速のデータ転送を行なうことが可能になった。デジタルテレビは、ビデオやオーディオの品質を大きく向上させるだけでなく、より多くのチャンネルを提供することもできる。最も重要なのは、デジタルテレビによって、真に対話式のテレビの時代がもたらされる点である。例えば、デジタルレシーバによって、単純な対話式のクイズ番組からインターネット放送、そしてテレビコンテンツとWebコンテンツとの混合等に及ぶ様々な優れたサービスを提供できるであろう。デジタルテレビの市場が広がるにつれて、コンテンツの開発に携わる業者は、電子番組ガイド、ビデオオンデマンド、エンハンスド・ブロードキャスティング等の次世代の対話式テレビサービスを構築するための、多機能且つ高コスト有効性且つ高信頼性のソフトウェアプラットフォームを求めるようになってきた。
【0003】
Java(登録商標)は、ポータブル言語として設計された最も主要なオブジェクト指向言語である。Javaプログラムは、記述とコンパイルとを同時に行なうことができ、JAVA(商標)プラットフォームをサポートする任意の互換デバイス上で実行することができる。例えば、Java(登録商標)は、あらゆる主要なWebブラウザに組み込まれている。したがって、Java(登録商標)は、どのWeb対応コンピュータ上においても、そのコンピュータのWebブラウザを介して実行することができる。このように、Java(登録商標)は、次世代のセットトップボックスおよびデジタルテレビのためのソフトウェアプラットフォームとして大きく期待されている。
【0004】
オブジェクト指向のプログラミングでは、オブジェクトによってランタイムデータが表される。各オブジェクトは、オブジェクトの特性を決定するクラスを通して定義される。すなわち、オブジェクトは、あるクラスをもとに形成される個々のインスタンスである。Javaアプリケーションを実行する際には、先ず、関連のクラスがメモリにロードされる。次いで、これらのクラスのインスタンスが、プログラムの流れにしたがって作成される。ほとんどのオブジェクト指向言語の場合は、作成されたオブジェクトが不要になった際に、それらのオブジェクトを全てプログラマ自身が破棄する必要がある。しかしながら、Java仮想マシンを実装すると、このプロセスが自動化され、使用可能メモリを増やすためのガーベッジコレクションが実行される。このように、Javaランタイム環境(JRE:Java runtime environment)によって、もう参照されないオブジェクトが削除または「ガーベッジコレクト」される。
【発明の概要】
【発明が解決しようとする課題】
【0005】
ガーベッジコレクションでは、もう参照されないクラスのインスタンスは回収されるが、それらに関連するクラスはメモリから除去されない。さらに、Java(登録商標)は動的言語であるため、クラスのロードは普通一般に実施される。しかしながら、現時点においては、もう不要なクラスをアンロードするためのメカニズムが組み込まれていない。このため、最終的には、Javaプラットフォームに多数のクラスが格納される結果になる。
【0006】
デスクトップ環境の場合はメモリの制限が比較的緩いので、クラスをアンロードする必要はない。さらに、ブラウザをオフにすれば(または閉じれば)、クラスはメモリから消去される。しかしながら、組み込みシステムの環境、特にデジタルテレビの分野では、スペースは貴重なリソースである。さらに、デジタルテレビの環境では、複数のアプリケーションを実行することが普通になる。例えば、テレビの視聴者がチャンネルを変えると、各関連のサービスにおいて、複数のクラスを有した新しいアプリケーションをロードする必要が生じる。このため、サイズの限られたメモリが消費し尽くされるまで、ロードされたクラスへのメモリの割り当てが続けられる。メモリが消費されてしまうと、これ以上アプリケーションを実行することが不可能になる。したがって、メモリの利用をモニタリングして、アプリケーションで不要になったクラスを除去することが望ましい。エラー時にテレビをリブート(再起動)することは望ましくないので、これは特に重要である。
【0007】
以上から、メモリにおけるクラスの格納を管理するための、より良い方法が必要とされていることがわかる。
【課題を解決するための手段】
【0008】
本発明は、不要になったクラスをメモリから動的にアンロードすることを可能にする。これは、ある程度は、各アプリケーションに関連付けられた個々のクラスローダを使用することによって達成される。こうすると、デジタルテレビでのメモリの消費を管理し、限られたメモリリソースをより効率活用することが可能になる。
【0009】
本発明の1態様にしたがうと、アプリケーションマネージャは、アプリケーションのためのクラスローダを構築するように適合される。例えば、デジタルテレビレシーバを通してロードされるアプリケーションに関連付けられたクラスをロードするために、専門のクラスローダを構築(インスタンス化)しても良い。したがって、このクラスローダは、アプリケーションに関連付けられた1またはそれ以上のクラスをロードするために利用される。
【0010】
本発明の別の1態様にしたがうと、アプリケーションマネージャは、アプリケーションの実行をモニタリングおよび管理するように適合され、そしてアプリケーションの実行が終了した際またはアプリケーションの実行が終結された(例えば信号によって)際に、作成されたクラスローダへの参照を解除するように適合される。したがって、アプリケーションが終結したことがアプリケーションマネージャによって決定されると、それらのクラスはもう不要になるのでアンロードされる。これは、ある程度は、そのアプリケーションのためのクラスローダへの参照を解除して到達不能にすることによって達成される。このクラスローダは、実行環境にロードしたクラスへの参照を維持している最後のローダであるので、これらのクラスを参照するインスタンスがランタイム環境内にほかに存在しない場合は、このクラスローダへの参照を解除することによって、これらのクラスへの到達を不能にすることができる。したがって、ガーベッジコレクションによってこれらのクラスが有効にアンロードされる。
【0011】
本発明のさらに別の1態様にしたがうと、本発明は、Javaプラットフォーム上に実装される。Javaプラットフォームは、対話式サービス用の新しいクラスにとって理想的な開発プラットフォームおよび配置プラットフォームを提供する。Javaプログラミング言語の使用によって、コンテンツ開発者が、アプリケーションの外見(ルック・アンド・フィール)に関して高い制御性および柔軟性を付与されるので、最も動的で強力な対話式テレビを視聴者に体験させることが可能になる。ガーベッジコレクションのプロセスは、メモリ割り当ておよびメモリ管理の負担を、プログラマからプラットフォームへと移すために活用される。また、Javaプログラミング言語で記述された対話式のテレビアプリケーションによって、多種多様なテレビレシーバの全体に渡ってセキュリティ・拡張性・可搬性が提供されるので、コンテンツ開発者は、自分の対話式アプリケーションを市場に売り出す時間と費用を削減することできる。
【0012】
本発明は、個々のクラスローダを利用して、各アプリケーションに関連付けられたクラスをロードしたりアンロードしたりする。ガーベッジコレクションのプロセスは、関連のクラスがもう不要であると決定された場合に適切なクラスローダへの参照を解除することによって、使用可能なメモリの量を最大化させる。これは、メモリに限界があるデジタルテレビレシーバ等のシステムにおいて特に重要である。
【図面の簡単な説明】
【0013】
【図1】本発明が実装されるシステムを示したブロック図である。
【図2】クラスのロード中における本発明の1実施形態を示したブロック図である。
【図3】アプリケーションの実行中における本発明の1実施形態を示したブロック図である。
【図4】アプリケーションの実行の完了時における本発明の1実施形態を示したブロック図である。
【図5】ガーベッジコレクションが1ラウンド完了した後の本発明の1実施形態を示した図である。
【図6】デジタルTVレシーバ上でアプリケーションを実行する方法を、本発明の1実施形態にしたがって示したフローチャートである。
【図7】図6に示されるアプリケーションの実行時にアプリケーションマネージャを実装してクラスをアンロードする方法を、本発明の1実施形態にしたがって示したフローチャートである。
【図8】本発明の実装に適した代表的な汎用コンピュータシステムを示したブロック図である。
【発明を実施するための形態】
【0014】
添付の図面に関連して行なう以下の説明から、本発明のさらなる利点が明らかになる。
【0015】
以下の説明では、本発明の完全な理解を促すために、多くの詳細構成が具体的に示されている。しかしながら、本発明がこれらの具体的な詳細なしに実現できることは、当業者にとって明らかである。また、本発明を不必要に不明瞭化しないように、周知のプロセス動作の説明は省略してある。
【0016】
ここでは、クラスの動的なアンロードを可能にする発明を開示する。特に、各クラスを、関連のクラスの定義を含んだクラスオブジェクトによって表しても良い。したがって、本明細書では、「クラス」および「クラスオブジェクト」という用語を互いに取り替え可能な意味で使用するものとする。
【0017】
デジタルテレビおよびデジタルテレビレシーバに関連して本発明を説明する。図1は、代表的なデジタルテレビレシーバを示したブロック図である。図に示すように、アンテナ102を通して信号が受信され、チューナモジュール104によって調整されると、MPEG2トランスポートストリーム106が生成される。すると、デマルチプレクサ108において、ビデオストリーム112と、オーディオストリーム114と、データストリーム116とを含んだ暗号化されたMPEGストリーム110が生成される。これら3種類のストリームは、次いで、暫定的なアクセスサブシステム118において処理される。例えば、暫定的なアクセスサブシステム118では、解読情報122(例えば解読アルゴリズム)はもちろんキー管理情報120を利用しても良い。暫定的なアクセスサブシステム118では、いずれも解読されたビデオストリーム124と、オーディオストリーム125と、データ126とを含む解読されたMPEGストリーム123が生成される。次いで、デコーダ128によって、解読されたMPEGストリーム123が処理され、復号されたビデオデータはフレームバッファ130に、そして復号されたオーディオデータはスピーカ132に伝送される。
【0018】
Java仮想マシン(JVM)は、図1のようなデジタルテレビレシーバで受信される情報を処理することによって本発明を実現することが可能な1プラットフォームである。特に、データ126が処理される際には、多数のクラスからなるJavaアプリケーションが含まれる可能性がある。したがって、クラスを動的にロードおよびアンロードすることによって、メモリに限界があるデジタルテレビまたはデジタルテレビレシーバ(またはセットトップボックス)におけるメモリの消費を最小限に抑えることが望まれる。
【0019】
本発明は、各アプリケーションの個々のクラスローダをインスタンス化することによって、各アプリケーションに関してクラスをロードしたりアンロードしたりすることを可能にする。図2は、本発明の1実施形態を示したブロック図である。図に示すように、プラットフォーム上におけるアプリケーションの実行およびクラスのロードを管理する目的で、アプリケーションマネージャ202が提供される。アプリケーションマネージャ202を実装する方法に関しては、図7を参照にしながら後ほど詳述する。より詳しく言うと、クラスのロードの管理は、一部には、各アプリケーションのために個々のクラスローダを構築することによってなされる。したがって、アプリケーションマネージャ202は、第1のアプリケーション(APP1)に関連付けられたクラスをロードするように適合された第1のクラスローダ204をインスタンス化する。同様に、アプリケーションマネージャ202は、第2のアプリケーション(APP2)に関連付けられたクラスをロードするように適合された第2のクラスローダ206をインスタンス化する。アプリケーションマネージャ202およびクラスローダ204,206は、メモリ208に格納されている。次いで、クラスローダ204,206は、それぞれのアプリケーションのためにクラスをロードする。より詳しく言うと、図に示すように、第1のアプリケーションクラスローダ204は、第1のアプリケーションに関連付けられた第1のクラスセット210をロードし、第2のアプリケーションクラスローダ206は、第2のアプリケーションに関連付けられた第2のクラスセット212をロードする。こうして、第1および第2のアプリケーションクラスセット210,212が、実行環境214(例えばJVM)にロードされる。ロードされたクラスは、各アプリケーションの実行中にアクセスすることが可能である。
【0020】
図3は、クラスのロードプロセスの完了時における、本発明の1実施形態を示したブロック図である。図3は、例えば、JVMによる第1および第2のアプリケーションの実行に関連している。図に示すように、アプリケーションマネージャ202は、第1のアプリケーションクラスローダ204および第2のアプリケーションクラスローダ206の両方へのリンク(例えば「参照」)を維持している。また、第1のアプリケーションクラスローダ204は、第1のアプリケーションクラスセット302へのリンク(例えば「参照」)を維持している。同様に、第2のアプリケーションクラスローダ206は、第2のアプリケーションクラスセット304へのリンク(例えば「参照」)を維持している。例えば、各リンクをポインタの使用によって実現しても良い。アプリケーションマネージャ202は、各アプリケーションの実行中は、全てのクラスローダ204,206に対して参照を継続している。また、クラスローダ204,206は、各アプリケーションの実行中は、アプリケーションクラス302,304をそれぞれ参照している。ある実装において、第1および第2のアプリケーションクラスセットは、メモリ(例えばメモリ200)にあるJVMスタックに格納されている。メモリは、例えばランダムアクセスメモリ(RAM)で良い。
【0021】
あるアプリケーションの実行が終了した際またはそのアプリケーションが完了前にストップされた際は、アプリケーションマネージャ202は、適切なクラスローダへの参照を解除する。図4は、第2のアプリケーションの実行が完了した後に続く本発明の1実施形態を示したブロック図である。第2のアプリケーションの実行が終了した際または時期尚早にストップされた際は、アプリケーションマネージャ202は、第2のアプリケーションローダ206への参照を解除する。すなわち、アプリケーションマネージャ202は、図中に402で示されるように、第2のアプリケーションローダへのリンクを排除する。例えば、第2のアプリケーションローダ206に対するもとの参照変数を、空(ヌル)に設定して良い。例えば、第2のアプリケーションローダ206に対する参照変数を、ヌルに設定して良い。第2のクラスローダ206への参照が解除されると、第2のクラスローダ206は、メモリ内において到達不能なオブジェクトになる。上述したように、あるオブジェクト(例えばクラスのインスタンス)またはクラスに対する参照がない場合、そのオブジェクトまたはクラスは「到達不能」であるとされて、ガーベッジコレクトされる。第2のアプリケーションクラスのセットおよびそれらに関連付けられたインスタンスへの最後の参照である第2のクラスローダ206が到達不能であると、関連のクラス304(例えばクラスオブジェクト)およびこれらのクラス304の全インスタンス(例えばオブジェクト)もやはりその時点で到達不能になるので、ガーベッジコレクション406によって、それらのクラスおよびインスタンスが除去される。したがって、参照が解除されたクラスローダ206によって参照されたクラスがガーベッジコレクトされ、それらに割り当てられていたメモリが使用可能なメモリプールに戻される。「到達不能性」およびガーベッジコレクションを含むJVMに関するさらなる詳細に関しては、Lindholm(リンドホルム)、Yellin(イェリン)による「The Java Virtual Machine Specification, Second Edition(Java仮想マシン仕様、第2版)」(ISBN 0-201-43294-3)に記載されており、本文献を、引用として本明細書に組み込むものとする。
【0022】
ガーベッジコレクションが完了すると、メモリ内にはもう到達不能なクラスおよびオブジェクトは存在しなくなる。図5に示すように、図4のシステムにおいてガーベッジコレクションが実施されると、到達不能なクラスローダ、到達不能なクラス、そして関連のインスタンスがメモリから削除される。その結果、第1のアプリケーションローダ204および第1のクラスのセット304のみが残る。したがって、本発明は、メモリリソースを動的に開放するのに有用であるので、限りあるメモリリソース(例えばデジタルテレビレシーバのメモリ等)をより良く活用することが可能になる。
【0023】
図6は、デジタルTVレシーバを通して伝送されるアプリケーションを実行する方法を、本発明の1実施形態にしたがって示したフローチャートである。このプロセスはブロック602から開始し、ブロック604においてデジタルテレビレシーバがオンになる。続いて、ブロック606において、Java(登録商標)環境がスタートされる。次いで、ブロック608においてアプリケーションマネージャが作成され、ブロック610において実行される。
【0024】
図1に示すようなデジタルテレビレシーバは、様々なデジタルテレビサービルを受信することができる。これらのサービスは、多数のチャンネルを受信することだけでなく、対話式テレビからビデオ・オン・デマンド、そして特殊なプログラミングに至るまで多岐にわたる。ブロック612において、あるサービスがユーザによって選択されると、ブロック614において、その選択されたサービスに関連したアプリケーションがデジタルテレビレシーバを通して受信される。例えば、ユーザがディズニーサービスを選択した場合は、表示の品質を向上させる目的でディズニーアプリケーションが受信される可能性がある。
【0025】
アプリケーションマネージャは、アプリケーションの実行をモニタリングおよび管理する役割を担っている。例えば、ブロック616において、アプリケーションマネージャは、アプリケーションをロードおよび実行するように信号通知される。ブロック618において、アプリケーションをスタートさせるスタート信号が(例えばデジタルテレビレシーバを通して)受信されると、アプリケーションマネージャは、ブロック620においてそのアプリケーションをスタートさせるように信号通知される。アプリケーションが、ブロック622においてストップ信号が(例えばデジタルテレビレシーバを通して)受信されるまで実行された後、アプリケーションマネージャは、ブロック624においてそのアプリケーションをストップさせるように信号通知される。このプロセスは、ブロック626において終了する。
【0026】
アプリケーションマネージャは、ロードされたクラスのうちアプリケーションで不要とされたクラスをアンロードするように、様々な形で実装することが可能である。図7は、図6に示されるアプリケーションの実行時にアプリケーションマネージャを実装してクラスをアンロードする方法を、本発明の1実施形態にしたがって示したフローチャートである。このプロセスはブロック702から開始し、ブロック704においてアプリケーションマネージャが適切な初期化を実施する。また、アプリケーションマネージャは、1またはそれ以上のアプリケーションの実行を管理する役割を担っている。このため、アプリケーションマネージャは、図6に示すように、ブロック614および616に進むのに先立って、アプリケーションマネージャが(例えばブロードキャストデータストリームから受信された)アプリケーションをロードする、スタートする、またはストップすることを示す信号の受信(例えばテレビレシーバを通して受信する)待ちをする。したがって、アプリケーションマネージャは、ブロック706において、このような信号の受信待ちをしている。ブロック708において、アプリケーションをロードすることを示す信号が受信されると、アプリケーションマネージャは、アプリケーション710のためのクラスローダを構築する。上述したように、このクラスローダは、アプリケーションに関連付けられた1またはそれ以上のクラスをロードするように設計されている。ブロック712においてスタート信号が受信されると、アプリケーションマネージャは、ブロック714において適切なクラスローダを利用し、アプリケーションに関連付けられたアプリケーションクラスをロードする。例えば、アプリケーションクラスを、アプリケーションのセキュリティ制約にしたがってロードしても良い。このため、クラスローダは、適切なセキュリティチェックを実施して、アプリケーションをロードできるか否かを決定することができる。次いで、アプリケーションマネージャは、ブロック716においてアプリケーションの実行を開始し、ブロック718において、アプリケーションが終了するまたはアプリケーションが完了前に終結されるまで待機する。アプリケーションマネージャは、アプリケーションの実行が終結されたことを示す信号またはメッセージを、そのアプリケーションまたは他のプロセスから受信することによって、そのアプリケーションの終結または完了を認識する。
【0027】
アプリケーションマネージャが、ブロック720に示すように、アプリケーションの実行を完了前にストップさせるストップ信号を受信した場合、そのアプリケーションはブロック722において破棄される(例えば削除される)。そして、ブロック724において、破棄されたアプリケーションに関連したクリーンアップが実施される。次いで、ブロック726において、そのアプリケーションのためのクラスローダへの参照が解除される。
【0028】
ブロック728においてアプリケーションの実行が完了すると、そのアプリケーションは、アプリケーションのクリーンアップを開始する信号を、(例えば、アプリケーションまたはブロードキャスト環境からレシーバを通して)アプリケーションマネージャに送信する。例えば、そのアプリケーションに関連するあらゆるファイルが削除され、同じく関連するあらゆるスレッドが除去される。また、各アプリケーションへの参照等の、ブックキーピングに使用されるあらゆる不要なデータを削除しても良い。次いで、プロセスは、ブロック724に進んでアプリケーションのクリーンアップを行ない、ブロック726においてそのアプリケーションのためのクラスローダへの参照を解除する。つまり、クラスローダへのポインタ(例えばアプリケーションマネージャに関連付けられた参照変数)をヌルに設定し、クラスローダとアプリケーションマネージャとの間のリンクを除去することによって、参照の解除を達成して良い。別の例として、クラスローダを到達不能としてマークしても良い。このクラスローダは、実行環境にロードされたクラスへの参照を最終的に維持しているので、このクラスローダへの参照を解除すれば、これらのクラスは到達不能になる。したがって、ガーベッジコレクションが実施することによって、これらのクラスを有効にアンロードすることができる。
【0029】
ガーベッジコレクションは、参照が解除されたクラスローダに関連付けられたクラスをアンロードする目的で様々な形で実施して良い。例えば、ガーベッジコレクションを、2つの別々のパスに分けて実施しても良い。先ず第1のパスにおいて、ガーベッジコレクションは、到達不能なあらゆるオブジェクトおよびクラスを検索する。このとき、クラスローダおよびそのクラスローダによってロードされたクラスが到達不能であることが決定される。このとき、到達不能なクラスに関連付けられたクラスを到達不能としてマークしても良い。クラスローダが到達不能になると、参照が解除されたそのクラスローダに割り当てられたメモリが、ガーベッジコレクションによって解放される。第2のパスでは、前のパスにおいて到達不能であるとマークされたクラスローダ(既に存在しない)がロードしたクラスの検索が行なわれ、メモリから除去される。
【0030】
本発明は、任意の適切なコンピュータシステムに実装して良い。図8は、本発明を実装するのに適した代表的な汎用コンピュータシステム1002を示した図である。コンピュータシステムは、任意の適切な形態をとって良い。コンピュータシステムは、例えば、デジタルテレビレシーバまたはセットトップボックスに組み込んでも良い。
【0031】
コンピュータシステム1030、またはさらに特定してCPU1032は、当業者に理解される限りにおいて、仮想マシンをサポートするように構成されて良い。コンピュータシステム1002は、一次記憶デバイス1006(通例、読み出し専用メモリすなわちROM)と一次記憶デバイス1008(通例、ランダムアクセスメモリすなわちRAM)を含むメモリデバイスに接続された任意の数のプロセッサ1004(中央処理装置すなわちCPUとも呼ばれる)を備えている。当業者に周知のように、ROMは、CPU1004にデータおよび命令を一方向的に転送するよう機能し、RAMは通例、データおよび命令を二方向的に転送するのに用いられる。両方の一次記憶デバイス1006および1008は、任意の適切なコンピュータ読み取り可能媒体を含んでいて良い。CPU1004は、一般に、任意の数のプロセッサを含んでいて良い。
【0032】
二次記憶媒体1010は、通例はマスメモリデバイスであり、二方向的にCPU1004に接続され、データ記憶容量を補っている。マスメモリデバイス1010は、コンピュータコード、データなどを含むプログラムを格納するのに用いることが可能なコンピュータ読み取り可能な媒体である。通例、マスメモリデバイス1010は、一般に一次記憶デバイス1006および1008よりも低速なハードディスクなどの記憶媒体である。
【0033】
また、CPU1004は、ビデオモニタ、トラックボール、マウス、キーボード、マイクロフォン、タッチセンシティブディスプレイ、トランスデューサカードリーダ、磁気もしくは紙テープリーダ、タブレット、スタイラス、音声もしくは手書き文字認識装置、もしくは、もちろん他のコンピュータのようなその他のよく知られた入力デバイス、を含むがそれらに限定されない1つ以上の入出力デバイス1012に接続されても良い。最後に、CPU1004は、1014に大まかに示されているネットワーク接続を用いて、コンピュータや、例えばインターネットネットワークもしくはイントラネットネットワークなどの通信ネットワークに随意的に接続されても良い。このようなネットワーク接続により、CPU1004は、上述した方法の段階を実行している間に、ネットワークから情報を受信したりネットワークに情報を出力したりすることができると予期される。このような情報は、CPU1004を用いて実行される命令のシーケンスであることが多く、例えば搬送波で運ばれるコンピュータデータ信号の形で、ネットワークから受信したりネットワークに出力したりして良い。
【0034】
本発明は、不要であると決定されたクラスのアンロードを可能にする。アプリケーションごとに個別のクラスローダを使用することによって、クラスのロードおよび不要になった(例えば、アプリケーションが終了したまたは終結された場合など)クラスのアンドロードが効果的に行なわれる。さらに、カスタマイズされたクラスローダを使用することによって、セキュリティレベルが向上されるので、無許可のアプリケーションのロードおよび実行が回避される。
【0035】
本明細書では、本発明の例示的な実施形態および用途を説明しているが、本発明の概念、範囲、および趣旨の範囲内で多くの変更を加えることが可能であり、これらの変更は、本出願を熟読した当業者にとって明らかである。例えば、本明細書では、デジタルテレビのコンテキストにおいてクラスのアンロードを可能にするものとして本発明を説明している。しかしながら、本発明は、他のコンテキストでクラスをロードしたりアンロードしたりするのに使用することも可能である。さらに、本明細書では、Javaプラットフォーム上に実装するものとして本発明を説明しているが、オブジェクト指向言語が使用される他の様々なプラットフォームまたはコンテキストにおいて本発明を実装しても良い。このため、「到達不能性」とは、一般に、「参照が解除」されたエンティティが有する使用不可性を指して良い。さらに、上述したプロセスブロックは、単に例示的なものである。したがって、クラスのロードやアンロードを、別のプロセスブロックを使用して行なっても良い。したがって、上述した実施形態は、例示を目的としたものであって限定的ではなく、本発明は、本明細書で取り上げた項目に限定されず、添付した特許請求の範囲の範囲および均等物の範囲内で変更することが可能である。
【0036】
以上の実施例に関し、更に、以下の項目を開示する。
【0037】
(1) アプリケーションに関連付けられたクラスをロードしたりアンロードしたりする方法であって、
前記アプリケーションに関連付けられたクラスをロードするように適合された、前記アプリケーションのためのクラスローダを構築する処理と、
前記クラスローダを利用して、前記アプリケーションに関連付けられた1またはそれ以上のクラスをロードすることによって、前記クラスローダが、前記1またはそれ以上のクラスへの参照を維持するようにする処理と、
前記アプリケーションのための前記クラスローダへの参照を解除することによって、前記クラスローダへの到達を不能にする処理と
を備える方法。
【0038】
(2) (1)記載の方法であって、
前記クラスローダへの参照の解除は、前記クラスローダへ到達を不能としたことを示すマークを付することを含む方法。
【0039】
(3) (1)記載の方法であって、
前記参照の解除は、前記クラスローダへの参照を空(ヌル)に設定することを含む方法。
【0040】
(4) (1)記載の方法であって、
前記クラスローダへの参照の解除は、前記1またはそれ以上のクラスがもう不要になった際に実施される方法。
【0041】
(5) (1)記載の方法であって、
前記アプリケーションはJavaプログラムである方法。
【0042】
(6) (1)記載の方法であって、さらに、
前記アプリケーションを実行する処理を備え、
前記クラスローダへの参照の解除は、前記アプリケーションの実行が終結された際に実施される方法。
【0043】
(7) (1)記載の方法であって、さらに、
前記アプリケーションを破棄する処理を備え、
前記アプリケーションのための前記クラスローダへの参照の解除は、前記アプリケーションが破棄された際に実施される方法。
【0044】
(8) (1)記載の方法であって、さらに、
ガーベッジコレクションを実施し、前記参照が解除されたクラスローダによって参照された前記1またはそれ以上のクラスを削除する処理を備える方法。
【0045】
(9) (1)記載の方法であって、さらに、
前記参照が解除されたクラスローダへ到達を不能としたことを示すマークを付する処理を備える方法。
【0046】
(10) (1)記載の方法であって、さらに、
前記参照が解除されたクラスローダによって参照された前記1またはそれ以上のクラスへ到達を不能としたことを示すマークを付する処理を備える方法。
【0047】
(11) (8)記載の方法であって、
ガーベッジコレクションを実施し、前記参照が解除されたクラスローダによって参照された前記1またはそれ以上のクラスを削除する処理は、
前記クラスローダは到達不能であることを決定する処理と、
前記クラスローダが自身に関連付けられたクラスを1またはそれ以上有することを確認する処理と、
前記1またはそれ以上のクラスへ到達を不能としたことを示すマークを付する処理とを備える方法。
【0048】
(12) (11)記載の方法であって、さらに、
前記クラスローダに関連付けられたメモリを解放する処理と、
前記1またはそれ以上のクラスに関連付けられたメモリを解放する処理と
を備える方法。
【0049】
(13) (1)記載の方法であって、さらに、
到達不能な全てのオブジェクトおよびクラスを検索する処理と、
前記到達不能なオブジェクトおよびクラスを前記関連のメモリ位置から削除する処理と
を備える方法。
【0050】
(14) (1)記載の方法であって、さらに、
前記参照が解除されたクラスローダと関連するクラスとによって消費されるメモリを解放する処理を備える方法。
【0051】
(15) (14)記載の方法であって、
前記参照が解除されたクラスローダと関連のクラスとによって消費されるメモリを解放する処理は、
前記クラスローダへ到達を不能としたことを示すマークを付する処理と、
到達不能なオブジェクトをメモリから検索する処理と、
前記到達不能なクラスローダを関連のメモリ位置から削除する処理と、
前記到達不能なクラスローダが1またはそれ以上の関連のクラスを有することを確認する処理と、
前記1またはそれ以上の関連のクラスへ到達を不能としたことを示すマークを付する処理と、
到達不能なクラスをメモリから検索する処理と、
前記1またはそれ以上の関連のクラスを関連のメモリ位置から削除する処理と
を備える方法。
【0052】
(16) (15)記載の方法であって、
前記到達不能なクラスローダを関連のメモリ位置から削除する処理は第1のパスにおいて実施され、前記1またはそれ以上の関連のクラスを関連のメモリ位置から削除する処理は第2のパスにおいて実施される方法。
【0053】
(17) 多数のアプリケーションに関連付けられたクラスをロードしたりアンロードしたりする方法であって、
複数のアプリケーションのそれぞれに1つづつクラスローダを構築することによって、複数のクラスローダのそれぞれが、前記複数のアプリケーションの1つに関連付けられたクラスをロードするように適合されるようにする処理と、
前記複数のクラスローダのうち1またはそれ以上のクラスローダを利用することによって、前記対応するアプリケーションに関連付けられた1またはそれ以上のクラスをロードし、前記1またはそれ以上のクラスローダのそれぞれが、前記対応するアプリケーションに関連付けられた前記クラスへの参照を維持するようにする処理と、
前記対応するアプリケーションがその処理を完了した際に、前記複数のクラスローダのうち1またはそれ以上のクラスローダへの到達を不能にする処理と
を備える方法。
【0054】
(18) (17)記載の方法であって、
前記複数のクラスローダのうち1またはそれ以上のクラスローダへの到達を不能にする処理は、前記複数のクラスローダのうち前記1またはそれ以上のクラスローダへの参照を解除することを含む方法。
【0055】
(19) (17)記載の方法であって、さらに、
ガーベッジコレクションを実施し、前記到達不能なクラスローダによって参照されたクラスを削除する処理を備える方法。
【0056】
(20) アプリケーションに関連付けられたクラスをロードしたりアンロードしたりする方法であって、
アプリケーションがロードされることを示すロード信号を受信する処理と、
前記アプリケーションに関連付けられたクラスをロードするように適合された、前記アプリケーションのためのクラスローダを構築する処理と、
前記アプリケーションがスタートされることを示すスタート信号を受信する処理と、
前記クラスローダを利用して、前記アプリケーションに関連付けられた1またはそれ以上のクラスをロードすることによって、前記クラスローダが、前記1またはそれ以上のクラスへの参照を維持するようにする処理と、
前記クラスローダへの参照を解除することによって、前記アプリケーションのための前記クラスローダへの到達を不能にする処理と
を備える方法。
【0057】
(21) (20)記載の方法であって、
前記クラスローダの構築は、前記ロード信号の受信に応じて実施され、前記クラスローダを利用した、前記アプリケーションに関連付けられた1またはそれ以上のクラスのロードは、前記スタート信号の受信に応じて実施される方法。
【0058】
(22) (20)記載の方法であって、さらに、
前記アプリケーションがストップされることを示すストップ信号を受信する処理を備える方法。
【0059】
(23) (22)記載の方法であって、
前記クラスローダへの参照の解除は、前記ストップ信号が受信された際に実施される方法。
【0060】
(24) (20)記載の方法であって、
前記クラスローダへの参照の解除は、前記アプリケーションの実行が終了した際か、または前記クラスローダの構築を担うアプリケーションマネージャによって前記アプリケーションの実行が終結された際に実施される方法。
【0061】
(25) 1またはそれ以上のアプリケーションに関連付けられたクラスをロードする方法であって、
(a)アプリケーションのためのクラスローダを構築するように適合され、そして前記構築されたクラスローダを前記アプリケーションが終了した際または前記アプリケーションの実行が終結された際にその参照を解除するように適合されたアプリケーションマネージャを作成する処理であって、前記クラスローダは、前記アプリケーションに関連付けられたクラスをロードするように適合されている処理と、
(b)アプリケーションを受信する処理と、
(c)前記アプリケーションマネージャを利用し、前記受信されたアプリケーションのためのクラスローダを構築する処理と、
(d)前記クラスローダを利用して、前記アプリケーションに関連付けられた1またはそれ以上のクラスをロードすることによって、前記クラスローダが前記1またはそれ以上のクラスへの参照を維持するようにする処理と
を備える方法。
【0062】
(26) (25)記載の方法であって、さらに、
前記アプリケーションマネージャを利用して、前記アプリケーションのための前記クラスローダへの参照を解除することによって、前記クラスローダへの到達を不能にする処理を備える方法。
【0063】
(27) (25)記載の方法であって、さらに、
受信された各アプリケーションに対して処理(b)、(c)、および(d)を繰り返すことを備える方法。
【0064】
(28) (27)記載の方法であって、さらに、
アプリケーションの実行が終了した際またはアプリケーションの実行が終結された際に、そのアプリケーションに関連付けられたクラスローダへの参照を解除する処理を備える方法。
【0065】
(29) 1またはそれ以上のアプリケーションに関連付けられたクラスをロードしたりアンロードしたりするためのシステムであって、
複数のアプリケーションの1つに関連付けられたクラスをロードするようにそれぞれが適合されている複数のクラスローダと、
前記複数のクラスローダの1つを利用して、前記複数のアプリケーションの1つに関連付けられたクラスをロードするように適合され、そして所定の条件に応じて、前記複数のクラスローダの1つへの参照を解除するように適合されたアプリケーションマネージャと
を備えるシステム。
【0066】
(30) 1またはそれ以上のアプリケーションに関連付けられたクラスをロードするためのシステムであって、
メモリと、
メモリと連動して、アプリケーションのためのクラスローダを構築するように適合されたアプリケーションマネージャを実装するプロセッサと
を備え、
前記クラスローダは、前記アプリケーションに関連付けられたクラスをロードすうように適合され、前記アプリケーションマネージャは、前記アプリケーションが終了した際または前記アプリケーションマネージャによって前記アプリケーションの実行が終結された際に、前記構築されたクラスローダへの参照を解除するように作動するシステム。
【0067】
(31) (30)記載のシステムであって、さらに、
第1のアプリケーションに関連付けられたクラスをロードするように適合された第1のクラスローダを備えるシステム。
【0068】
(32) (31)記載のシステムであって、
前記アプリケーションマネージャは前記第1のクラスローダにリンクされているシステム。
【0069】
(33) (31)記載のシステムであって、さらに、
前記第1のアプリケーションに関連付けられた第1のクラスセットを格納するメモリを備え、
前記第1のクラスローダは前記第1のクラスセットにリンクされているシステム。
【0070】
(34) (30)記載のシステムであって、
前記システムはデジタルテレビであるシステム。
【0071】
(35) (30)記載のシステムであって、
前記システムはデジタルテレビレシーバであるシステム。
【0072】
(36) 1またはそれ以上のアプリケーションに関連付けられたクラスをロードしたりアンロードしたりするためのデジタルテレビレシーバであって、
複数のアプリケーションの1つに関連付けられたクラスをロードするようにそれぞれが適合されている複数のクラスローダと、
前記複数のクラスローダの1つを利用して、前記複数のアプリケーションの1つに関連付けられたクラスをロードするように適合され、そして所定の条件に応じて、前記複数のクラスローダの1つへの参照を解除するように適合されたアプリケーションマネージャと
を備えるシステム。
【0073】
(37) デジタルテレビにおいて、1またはそれ以上のアプリケーションに関連付けられたクラスをロードするためのシステムであって、
メモリと、
メモリと連動して、アプリケーションのためのクラスローダを構築するように適合されたアプリケーションマネージャを実装するプロセッサと
を備え、
前記クラスローダは、前記アプリケーションに関連付けられたクラスをロードすうように適合され、前記アプリケーションマネージャは、前記アプリケーションが終了した際または前記アプリケーションマネージャによって前記アプリケーションの実行が終結された際に、前記構築されたクラスローダへの参照を解除するように作動するシステム。
【0074】
(38) アプリケーションに関連付けられたクラスをロードしたりアンロードしたりするようにプロセッサを作動させるように適合されたコンピュータプログラム製品であって、
コンピュータ読み取り可能な命令を格納するためのコンピュータ読み取り可能な媒体を備え、
前記コンピュータ読み取り可能な命令は、
前記アプリケーションに関連付けられたクラスをロードするように適合された、前記アプリケーションのためのクラスローダを構築する命令と、
前記クラスローダを利用して、前記アプリケーションに関連付けられた1またはそれ以上のクラスをロードすることによって、前記クラスローダが、前記1またはそれ以上のクラスへの参照を維持するようにする命令と、
前記アプリケーションのための前記クラスローダへの参照を解除することによって、前記クラスローダへの到達を不能にする命令と
を備えるコンピュータプログラム製品。
【0075】
(39) 1またはそれ以上のアプリケーションに関連付けられたクラスをロードするようにプロセッサを作動させるように適合されたコンピュータプログラム製品であって、
コンピュータ読み取り可能な命令を格納するためのコンピュータ読み取り可能な媒体を備え、
前記コンピュータ読み取り可能な命令は、
アプリケーションのためのクラスローダを構築するように適合され、そして前記構築されたクラスローダを前記アプリケーションが終了した際または前記アプリケーションの実行が終結された際にその参照を解除するように適合されたアプリケーションマネージャを作成する命令であって、前記クラスローダは、前記アプリケーションに関連付けられたクラスをロードするように適合されている命令と、
アプリケーションを受信する命令と、
前記アプリケーションマネージャを利用し、前記受信されたアプリケーションのためのクラスローダを構築する命令と、
前記クラスローダを利用して、前記アプリケーションに関連付けられた1またはそれ以上のクラスをロードすることによって、前記クラスローダが、前記1またはそれ以上のクラスへの参照を維持するようにする命令と、
前記アプリケーションのための前記クラスローダへの参照を解除することによって、前記クラスローダへの到達を不能にする命令と
を備えるコンピュータプログラム製品。
【符号の説明】
【0076】
102・・・アンテナ
104・・・チューナモジュール
106・・・MPEG2トランスポートストリーム
108・・・デマルチプレクサ
110・・・暗号化されたMPEGストリーム
112・・・ビデオストリーム
114・・・オーディオストリーム
116・・・データストリーム
118・・・暫定的なアクセスサブシステム
120・・・キー管理情報
122・・・解読情報
123・・・解読されたMPEGストリーム
124・・・ビデオストリーム
125・・・オーディオストリーム
126・・・データ
128・・・デコーダ
130・・・フレームバッファ
132・・・スピーカ
202・・・アプリケーションマネージャ
204・・・第1のクラスローダ
206・・・第2のクラスローダ
208・・・メモリ
210・・・第1のクラスセット
212・・・第2のクラスセット
214・・・実行環境
302・・・第1のアプリケーションクラスセット
304・・・第2のアプリケーションクラスセット
406・・・ガーベッジコレクション
1002・・・汎用コンピュータシステム
1004・・・プロセッサ
1006・・・一次記憶デバイス
1008・・・一次記憶デバイス
1010・・・二次記憶媒体
1012・・・入出力デバイス
1014・・・ネットワーク接続

【特許請求の範囲】
【請求項1】
アプリケーションマネージャがクラスをロードしたりアンロードしたりする方法であって、
第1のアプリケーションに関連付けられたクラスをロードするように適合された、前記第1のアプリケーションのための第1のクラスローダを構築する処理と、
第2のアプリケーションに関連付けられたクラスをロードするように適合された、前記第2のアプリケーションのための第2のクラスローダを構築する処理と、
前記第1のクラスローダを利用して、前記第1のアプリケーションに関連付けられた1またはそれ以上のクラスをロードすることによって、前記クラスローダが、前記第1のアプリケーションに関連付けられた前記1またはそれ以上のクラスへの参照を維持する処理と、
前記第2のクラスローダを利用して、前記第2のアプリケーションに関連付けられた1またはそれ以上のクラスをロードすることによって、前記クラスローダが、前記第2のアプリケーションに関連付けられた前記1またはそれ以上のクラスへの参照を維持する処理と、
前記第1のアプリケーションの実行が終了または中断したとき、前記第1のアプリケーションのための前記第1のクラスローダへの参照を解除することによって、前記第1のクラスローダへの到達および前記第1のクラスローダによって参照された前記1またはそれ以上のクラスへの到達を不能とし、その結果、前記第1のクラスローダによって参照された前記1またはそれ以上のクラスについて、ガーベッジコレクションの間にアンロード可能にする処理と、
前記第2のアプリケーションの実行が終了または中断したとき、前記第2のアプリケーションのための前記第2のクラスローダへの参照を解除することによって、前記第2のクラスローダへの到達および前記第2のクラスローダによって参照された前記1またはそれ以上のクラスへの到達を不能とし、その結果、前記第2のクラスローダによって参照された前記1またはそれ以上のクラスについて、ガーベッジコレクションの間にアンロード可能にする処理と
を備える方法。
【請求項2】
請求項1記載の方法であって、
前記第1のクラスローダへの参照の解除は、前記第1のクラスローダへ到達を不能としたことを示すマークを付する処理を含み、
前記第2のクラスローダへの参照の解除は、前記第2のクラスローダへ到達を不能としたことを示すマークを付する処理を含む方法。
【請求項3】
請求項1記載の方法であって、
前記参照の解除は、対応するクラスローダへの参照を空(ヌル)に設定することを含む方法。
【請求項4】
請求項1記載の方法であって、
前記第1および第2のアプリケーションはそれぞれJavaプログラムである方法。
【請求項5】
請求項1記載の方法であって、さらに、
前記第1または第2のアプリケーションを破棄する処理を備え、
前記第1または第2のアプリケーションのためのクラスローダへの参照の解除は、前記第1または第2のアプリケーションが破棄されたときに実行される方法。
【請求項6】
請求項1記載の方法であって、さらに、
ガーベッジコレクションを実施し、前記参照が解除されたクラスローダによって参照された前記1またはそれ以上のクラスを削除する処理を備える方法。
【請求項7】
請求項1記載の方法であって、さらに、
前記参照が解除されたクラスローダへ到達を不能としたことを示すマークを付する処理を備える方法。
【請求項8】
請求項1記載の方法であって、さらに、
前記参照が解除されたクラスローダによって参照された前記1またはそれ以上のクラスへ到達を不能としたことを示すマークを付する処理を備える方法。
【請求項9】
請求項6記載の方法であって、
ガーベッジコレクションを実施し、前記参照が解除されたクラスローダによって参照された前記1またはそれ以上のクラスを削除する処理は、
前記クラスローダは到達不能であることを決定する処理と、
前記到達不能なクラスローダが自身に関連付けられた1またはそれ以上のクラスを有することを確認する処理と、
前記1またはそれ以上のクラスへ到達を不能としたことを示すマークを付する処理と
を備える方法。
【請求項10】
請求項9記載の方法であって、さらに、
前記クラスローダに関連付けられたメモリを解放する処理と、
前記1またはそれ以上のクラスに関連付けられたメモリを解放する処理と
を備える方法。
【請求項11】
請求項1記載の方法であって、さらに、
到達不能な全てのオブジェクトおよびクラスを検索する処理と、
前記到達不能なオブジェクトおよびクラスを関連のメモリ位置から削除する処理と
を備え、
前記オブジェクトのそれぞれは、クラスのインスタンスである方法。
【請求項12】
請求項1記載の方法であって、さらに、
前記参照が解除されたクラスローダと関連するクラスとによって消費されるメモリを解放する処理を備える方法。
【請求項13】
請求項12記載の方法であって、
前記参照が解除されたクラスローダと関連のクラスとによって消費されるメモリを解放する処理は、
前記クラスローダへ到達を不能としたことを示すマークを付する処理と、
前記到達不能なクラスローダを関連のメモリ位置から削除する処理と、
前記到達不能なクラスローダが1またはそれ以上の関連のクラスを有することを確認する処理と、
前記1またはそれ以上の関連のクラスへ到達を不能としたことを示すマークを付する処理と、
到達不能なクラスをメモリから検索する処理と、
前記1またはそれ以上の関連のクラスを関連のメモリ位置から削除する処理と
を備える方法。
【請求項14】
請求項13記載の方法であって、
前記到達不能なクラスローダを関連のメモリ位置から削除する処理は第1のパスにおいて実施され、前記1またはそれ以上の関連のクラスを関連のメモリ位置から削除する処理は第2のパスにおいて実施される方法。
【請求項15】
複数のアプリケーションに関連付けられたクラスをロードしたりアンロードしたりする方法であって、
複数のアプリケーションのそれぞれに1つずつクラスローダを構築することによって、複数のクラスローダのそれぞれが、前記複数のアプリケーションの1つに関連付けられたクラスをロードするように適合されるようにする処理と、
前記複数のクラスローダのうち1またはそれ以上のクラスローダを利用して、対応するアプリケーションに関連付けられた1またはそれ以上のクラスをロードすることによって、前記1またはそれ以上のクラスローダのそれぞれが、前記対応するアプリケーションに関連付けられた前記クラスへの参照を維持するようにする処理と、
前記対応するアプリケーションがその処理を完了した際に、前記複数のクラスローダのうち前記1またはそれ以上のクラスローダへの到達および前記複数のクラスローダのそれぞれによって参照されたクラスへの到達を不能とし、その結果、前記複数のクラスローダのそれぞれによって参照された前記クラスについて、ガーベッジコレクションの間にアンロード可能にする処理と
を備える方法。
【請求項16】
請求項15記載の方法であって、
前記複数のクラスローダのうち前記1またはそれ以上のクラスローダへの到達を不能にする処理は、前記複数のクラスローダのうち前記1またはそれ以上のクラスローダへの参照を解除することを含む方法。
【請求項17】
請求項15記載の方法であって、さらに、
ガーベッジコレクションを実施し、前記到達不能なクラスローダによって参照されたクラスを削除する処理を備える方法。
【請求項18】
アプリケーションマネージャにおいてアプリケーションに関連付けられたクラスをロードしたりアンロードしたりする方法であって、
(a)アプリケーションがロードされることを示すロード信号を受信する処理と、
(b)前記アプリケーションに関連付けられたクラスをロードするように適合された、前記アプリケーションのためのクラスローダを構築する処理と、
(c)前記アプリケーションがスタートされることを示すスタート信号を受信する処理と、
(d)前記クラスローダを利用して、前記アプリケーションに関連付けられた1またはそれ以上のクラスをロードすることによって、前記クラスローダが、前記1またはそれ以上のクラスへの参照を維持するようにする処理と、
(e)前記アプリケーションの実行が終了または中断したとき、前記アプリケーションのための前記クラスローダへの参照を解除することによって、前記クラスローダへの到達および前記1またはそれ以上のクラスへの到達を不能とし、その結果、前記アプリケーションに関連付けられた前記1またはそれ以上のクラスについて、ガーベッジコレクションの間にアンロード可能にする処理と、
(f)複数のアプリケーションに対して処理(a)、(b)、(c)、(d)および(e)を繰り返すことによって、複数のクラスローダが構築され、前記複数のアプリケーションに関連付けられたクラスをロードしたりアンロードしたりするために利用されるようにする処理と
を備える方法。
【請求項19】
請求項18記載の方法であって、
前記クラスローダの構築は、前記ロード信号の受信に応じて実施され、前記クラスローダを利用した、前記アプリケーションに関連付けられた1またはそれ以上のクラスのロードは、前記スタート信号の受信に応じて実施される方法。
【請求項20】
請求項18記載の方法であって、さらに、
前記アプリケーションがストップされることを示すストップ信号を受信する処理を備える方法。
【請求項21】
請求項20記載の方法であって、
前記クラスローダへの参照の解除は、前記ストップ信号が受信された際に実施される方法。
【請求項22】
請求項18記載の方法であって、
前記クラスローダへの参照の解除は、前記アプリケーションの実行が完了した際か、または前記クラスローダの構築を担うアプリケーションマネージャによって前記アプリケーションの実行が中断された際に実施される方法。
【請求項23】
1またはそれ以上のアプリケーションに関連付けられたクラスをロードする方法であって、
(a)対応するアプリケーションに関連付けられたクラスをロードするように適合された、アプリケーションごとに個別のクラスローダを構築し、前記アプリケーションのうち対応するアプリケーションの実行が終了または中断したとき、前記構築されたクラスローダへの参照を解除するように適合されたアプリケーションマネージャを構築する処理と、
(b)アプリケーションを受信する処理と、
(c)前記アプリケーションマネージャを利用して、前記受信されたアプリケーションのためのクラスローダを構築する処理と、
(d)前記クラスローダを利用して、前記受信されたアプリケーションに関連付けられた1またはそれ以上のクラスをロードすることによって、前記クラスローダが、前記1またはそれ以上のクラスへの参照を維持する処理と、
(e)前記アプリケーションマネージャを利用して、前記受信されたアプリケーションの実行が終了または中断したとき、前記クラスローダへの参照を解除する処理と
を備える方法。
【請求項24】
請求項23記載の方法であって、さらに、
前記アプリケーションマネージャを利用して、前記アプリケーションのための前記クラスローダへの参照を解除することによって、前記クラスローダへの到達を不能とする処理を備える方法。
【請求項25】
請求項23記載の方法であって、さらに、
受信されたアプリケーションごとに処理(b)、(c)および(d)を繰り返す処理を備える方法。
【請求項26】
請求項25記載の方法であって、さらに、
アプリケーションの実行が終了または中断したとき、前記アプリケーションに関連付けられたクラスローダへの参照を解除し、その結果、前記クラスローダおよび関連付けられたクラスについて、ガーベッジコレクションの間にアンロード可能にする処理を備える方法。
【請求項27】
1またはそれ以上のアプリケーションに関連付けられたクラスをロードしたりアンロードしたりするためのシステムであって、
複数のアプリケーションの1つに関連付けられたクラスをロードするようにそれぞれが適合されている複数のクラスローダと、
前記複数のクラスローダの1つを利用して、前記複数のアプリケーションの1つに関連付けられたクラスをロードするように適合され、所定の条件に応じて、前記複数のクラスローダの1つへの参照を解除し、その結果、前記複数のクラスローダのそれぞれに関連付けられたクラスについて、ガーベッジコレクションの間にアンロード可能にするように適合されたアプリケーションマネージャと
を備えるシステム。
【請求項28】
1またはそれ以上のアプリケーションに関連付けられたクラスをロードするためのシステムであって、
メモリと、
メモリと連動して、複数のアプリケーションのそれぞれに1つずつ個別のクラスローダを構築するように適合されたアプリケーションマネージャを実装するプロセッサと
を備え、
各クラスローダは、対応するアプリケーションに関連付けられたクラスをロードするように適合され、前記アプリケーションマネージャは、前記対応するアプリケーションの実行が終了したとき、または前記アプリケーションマネージャによって前記対応するアプリケーションの実行が中断されたとき、前記構築されたクラスローダへの参照を解除するように作動するシステム。
【請求項29】
請求項28記載のシステムであって、さらに、
第1のアプリケーションに関連付けられたクラスをロードするように適合された第1のクラスローダを備えるシステム。
【請求項30】
請求項29記載のシステムであって、
前記アプリケーションマネージャは前記第1のクラスローダにリンクされているシステム。
【請求項31】
請求項29記載のシステムであって、さらに、
前記第1のアプリケーションに関連付けられた第1のクラスセットを格納するメモリを備え、
前記第1のクラスローダは前記第1のクラスセットにリンクされているシステム。
【請求項32】
請求項28記載のシステムであって、
前記システムはデジタルテレビであるシステム。
【請求項33】
請求項28記載のシステムであって、
前記システムはデジタルテレビレシーバであるシステム。
【請求項34】
1またはそれ以上のアプリケーションに関連付けられたクラスをロードしたりアンロードしたりするためのデジタルテレビレシーバであって、
複数のアプリケーションの1つに関連付けられたクラスをロードするようにそれぞれが適合されている複数のクラスローダと、
前記複数のクラスローダの1つを利用して、前記複数のアプリケーションの1つに関連付けられたクラスをロードするように適合され、所定の条件に応じて、前記複数のクラスローダの1つへの参照を解除し、その結果、前記複数のクラスローダのそれぞれに関連付けられたクラスについて、ガーベッジコレクションの間にアンロード可能にするように適合されたアプリケーションマネージャと
を備えるデジタルテレビレシーバ。
【請求項35】
デジタルテレビにおいて、1またはそれ以上のアプリケーションに関連付けられたクラスをロードするためのシステムであって、
メモリと、
メモリと連動して、複数のアプリケーションのそれぞれに1つずつ個別のクラスローダを構築するように適合されたアプリケーションマネージャを実装するプロセッサと
を備え、
各クラスローダは、前記複数のアプリケーションのうち対応するアプリケーションに関連付けられたクラスをロードするように適合され、前記アプリケーションマネージャは、前記対応するアプリケーションの実行が終了したとき、または前記アプリケーションマネージャによって前記対応するアプリケーションの実行が中断されたとき、前記構築されたクラスローダへの参照を解除するように作動するシステム。
【請求項36】
アプリケーションに関連付けられたクラスをロードしたりアンロードしたりするようにプロセッサを作動させるように適合されたコンピュータプログラムであって、
コンピュータ読み取り可能な命令を格納するためのコンピュータ読み取り可能な媒体を備え、
前記コンピュータ読み取り可能な命令は、
対応するアプリケーションに関連付けられたクラスをロードするようにそれぞれが適合された、複数のアプリケーションのそれぞれに1つずつ個別のクラスローダを構築する命令と、
前記複数のアプリケーションの1つのためのクラスローダを利用して、対応するアプリケーションに関連付けられたクラスをロードすることによって、前記クラスローダが、前記1またはそれ以上のクラスへの参照を維持するようにする命令と、
前記複数のアプリケーションの1つのためのクラスローダへの参照を解除することによって、前記クラスローダへの到達を不能にし、その結果、前記複数のクラスローダのそれぞれに関連付けられたクラスについて、ガーベッジコレクションの間にアンロード可能にする命令と
を備えるコンピュータプログラム。
【請求項37】
1またはそれ以上のアプリケーションに関連付けられたクラスをロードするようにプロセッサを作動させるように適合されたコンピュータプログラムであって、
コンピュータ読み取り可能な命令を格納するためのコンピュータ読み取り可能な媒体を備え、
前記コンピュータ読み取り可能な命令は、
アプリケーションごとに個別のクラスローダを構築し、対応するアプリケーションの実行が終了または中断したとき、前記構築されたクラスローダへの参照を解除するように適合されたアプリケーションマネージャを構築する命令であって、前記クラスローダは、前記対応するアプリケーションに関連付けられたクラスをロードするように適合されている命令と、
アプリケーションを受信する命令と、
前記アプリケーションマネージャを利用し、前記受信されたアプリケーションのためのクラスローダを構築する命令と、
前記クラスローダを利用して、前記受信されたアプリケーションに関連付けられた1またはそれ以上のクラスをロードすることによって、前記クラスローダが、前記1またはそれ以上のクラスへの参照を維持するようにする命令と、
前記受信されたアプリケーションのための前記クラスローダへの参照を解除することによって、前記クラスローダへの到達を不能にし、その結果、前記複数のクラスローダのそれぞれに関連付けられたクラスについて、ガーベッジコレクションの間にアンロード可能にする命令と
を備えるコンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2011−233171(P2011−233171A)
【公開日】平成23年11月17日(2011.11.17)
【国際特許分類】
【出願番号】特願2011−174651(P2011−174651)
【出願日】平成23年8月10日(2011.8.10)
【分割の表示】特願2001−510084(P2001−510084)の分割
【原出願日】平成12年7月13日(2000.7.13)
【出願人】(597004720)オラクル・アメリカ・インコーポレイテッド (23)
【Fターム(参考)】