(57)【要約】【課題】個々のクラスローダを実装するための方法および装置を提供することを目的とする。【解決手段】アプリケーションに関連付けられたクラスをロードしたりアンロードしたりするための方法および装置を開示する。アプリケーションに関連付けられたクラスをロードするように適合されたクラスローダが構築される。このクラスローダは、アプリケーションに関連付けられた１またはそれ以上のクラスをロードするために利用される。そうして、このクラスローダは、１またはそれ以上のクラスへの参照を維持するようになる。そして、このアプリケーションのためのクラスローダは、その参照が解除されて到達不能になる。【選択図】図４
2014059906.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションマネージャがクラスをロードしたりアンロードしたりする方法であって、
第１のアプリケーションに関連付けられたクラスをロードするように適合された、前記第１のアプリケーションのための第１のクラスローダを構築する処理と、
第２のアプリケーションに関連付けられたクラスをロードするように適合された、前記第２のアプリケーションのための第２のクラスローダを構築する処理と、
前記第１のクラスローダを利用して、前記第１のアプリケーションに関連付けられた１またはそれ以上のクラスをロードすることによって、前記クラスローダが、前記第１のアプリケーションに関連付けられた前記１またはそれ以上のクラスへの参照を維持する処理と、
前記第２のクラスローダを利用して、前記第２のアプリケーションに関連付けられた１またはそれ以上のクラスをロードすることによって、前記クラスローダが、前記第２のアプリケーションに関連付けられた前記１またはそれ以上のクラスへの参照を維持する処理と、
前記第１のアプリケーションの実行が終了または中断したとき、前記第１のアプリケーションのための前記第１のクラスローダへの参照を解除することによって、前記第１のクラスローダへの到達および前記第１のクラスローダによって参照された前記１またはそれ以上のクラスへの到達を不能とし、その結果、前記第１のクラスローダによって参照された前記１またはそれ以上のクラスについて、ガーベッジコレクションの間にアンロード可能にする処理と、
前記第２のアプリケーションの実行が終了または中断したとき、前記第２のアプリケーションのための前記第２のクラスローダへの参照を解除することによって、前記第２のクラスローダへの到達および前記第２のクラスローダによって参照された前記１またはそれ以上のクラスへの到達を不能とし、その結果、前記第２のクラスローダによって参照された前記１またはそれ以上のクラスについて、ガーベッジコレクションの間にアンロード可能にする処理と
を備える方法。
【請求項２】
請求項１記載の方法であって、
前記第１のクラスローダへの参照の解除は、前記第１のクラスローダへ到達を不能としたことを示すマークを付する処理を含み、
前記第２のクラスローダへの参照の解除は、前記第２のクラスローダへ到達を不能としたことを示すマークを付する処理を含む方法。
【請求項３】
請求項１記載の方法であって、
前記参照の解除は、対応するクラスローダへの参照を空（ヌル）に設定することを含む方法。
【請求項４】
請求項１記載の方法であって、
前記第１および第２のアプリケーションはそれぞれＪａｖａプログラムである方法。
【請求項５】
請求項１記載の方法であって、さらに、
前記第１または第２のアプリケーションを破棄する処理を備え、
前記第１または第２のアプリケーションのためのクラスローダへの参照の解除は、前記第１または第２のアプリケーションが破棄されたときに実行される方法。
【請求項６】
請求項１記載の方法であって、さらに、
ガーベッジコレクションを実施し、前記参照が解除されたクラスローダによって参照された前記１またはそれ以上のクラスを削除する処理を備える方法。
【請求項７】
請求項１記載の方法であって、さらに、
前記参照が解除されたクラスローダへ到達を不能としたことを示すマークを付する処理を備える方法。
【請求項８】
請求項１記載の方法であって、さらに、
前記参照が解除されたクラスローダによって参照された前記１またはそれ以上のクラスへ到達を不能としたことを示すマークを付する処理を備える方法。
【請求項９】
請求項６記載の方法であって、
ガーベッジコレクションを実施し、前記参照が解除されたクラスローダによって参照された前記１またはそれ以上のクラスを削除する処理は、
前記クラスローダは到達不能であることを決定する処理と、
前記到達不能なクラスローダが自身に関連付けられた１またはそれ以上のクラスを有することを確認する処理と、
前記１またはそれ以上のクラスへ到達を不能としたことを示すマークを付する処理と
を備える方法。
【請求項１０】
請求項９記載の方法であって、さらに、
前記クラスローダに関連付けられたメモリを解放する処理と、
前記１またはそれ以上のクラスに関連付けられたメモリを解放する処理と
を備える方法。
【請求項１１】
請求項１記載の方法であって、さらに、
到達不能な全てのオブジェクトおよびクラスを検索する処理と、
前記到達不能なオブジェクトおよびクラスを関連のメモリ位置から削除する処理と
を備え、
前記オブジェクトのそれぞれは、クラスのインスタンスである方法。
【請求項１２】
請求項１記載の方法であって、さらに、
前記参照が解除されたクラスローダと関連するクラスとによって消費されるメモリを解放する処理を備える方法。
【請求項１３】
請求項１２記載の方法であって、
前記参照が解除されたクラスローダと関連のクラスとによって消費されるメモリを解放する処理は、
前記クラスローダへ到達を不能としたことを示すマークを付する処理と、
前記到達不能なクラスローダを関連のメモリ位置から削除する処理と、
前記到達不能なクラスローダが１またはそれ以上の関連のクラスを有することを確認する処理と、
前記１またはそれ以上の関連のクラスへ到達を不能としたことを示すマークを付する処理と、
到達不能なクラスをメモリから検索する処理と、
前記１またはそれ以上の関連のクラスを関連のメモリ位置から削除する処理と
を備える方法。
【請求項１４】
請求項１３記載の方法であって、
前記到達不能なクラスローダを関連のメモリ位置から削除する処理は第１のパスにおいて実施され、前記１またはそれ以上の関連のクラスを関連のメモリ位置から削除する処理は第２のパスにおいて実施される方法。
【請求項１５】
複数のアプリケーションに関連付けられたクラスをロードしたりアンロードしたりする方法であって、
複数のアプリケーションのそれぞれに１つずつクラスローダを構築することによって、複数のクラスローダのそれぞれが、前記複数のアプリケーションの１つに関連付けられたクラスをロードするように適合されるようにする処理と、
前記複数のクラスローダのうち１またはそれ以上のクラスローダを利用して、対応するアプリケーションに関連付けられた１またはそれ以上のクラスをロードすることによって、前記１またはそれ以上のクラスローダのそれぞれが、前記対応するアプリケーションに関連付けられた前記クラスへの参照を維持するようにする処理と、
前記対応するアプリケーションがその処理を完了した際に、前記複数のクラスローダのうち前記１またはそれ以上のクラスローダへの到達および前記複数のクラスローダのそれぞれによって参照されたクラスへの到達を不能とし、その結果、前記複数のクラスローダのそれぞれによって参照された前記クラスについて、ガーベッジコレクションの間にアンロード可能にする処理と
を備える方法。
【請求項１６】
請求項１５記載の方法であって、
前記複数のクラスローダのうち前記１またはそれ以上のクラスローダへの到達を不能にする処理は、前記複数のクラスローダのうち前記１またはそれ以上のクラスローダへの参照を解除することを含む方法。
【請求項１７】
請求項１５記載の方法であって、さらに、
ガーベッジコレクションを実施し、前記到達不能なクラスローダによって参照されたクラスを削除する処理を備える方法。
【請求項１８】
アプリケーションマネージャにおいてアプリケーションに関連付けられたクラスをロードしたりアンロードしたりする方法であって、
（ａ）アプリケーションがロードされることを示すロード信号を受信する処理と、
（ｂ）前記アプリケーションに関連付けられたクラスをロードするように適合された、前記アプリケーションのためのクラスローダを構築する処理と、
（ｃ）前記アプリケーションがスタートされることを示すスタート信号を受信する処理と、
（ｄ）前記クラスローダを利用して、前記アプリケーションに関連付けられた１またはそれ以上のクラスをロードすることによって、前記クラスローダが、前記１またはそれ以上のクラスへの参照を維持するようにする処理と、
（ｅ）前記アプリケーションの実行が終了または中断したとき、前記アプリケーションのための前記クラスローダへの参照を解除することによって、前記クラスローダへの到達および前記１またはそれ以上のクラスへの到達を不能とし、その結果、前記アプリケーションに関連付けられた前記１またはそれ以上のクラスについて、ガーベッジコレクションの間にアンロード可能にする処理と、
（ｆ）複数のアプリケーションに対して処理（ａ）、（ｂ）、（ｃ）、（ｄ）および（ｅ）を繰り返すことによって、複数のクラスローダが構築され、前記複数のアプリケーションに関連付けられたクラスをロードしたりアンロードしたりするために利用されるようにする処理と
を備える方法。
【請求項１９】
請求項１８記載の方法であって、
前記クラスローダの構築は、前記ロード信号の受信に応じて実施され、前記クラスローダを利用した、前記アプリケーションに関連付けられた１またはそれ以上のクラスのロードは、前記スタート信号の受信に応じて実施される方法。
【請求項２０】
請求項１８記載の方法であって、さらに、
前記アプリケーションがストップされることを示すストップ信号を受信する処理を備える方法。
【請求項２１】
請求項２０記載の方法であって、
前記クラスローダへの参照の解除は、前記ストップ信号が受信された際に実施される方法。
【請求項２２】
請求項１８記載の方法であって、
前記クラスローダへの参照の解除は、前記アプリケーションの実行が完了した際か、または前記クラスローダの構築を担うアプリケーションマネージャによって前記アプリケーションの実行が中断された際に実施される方法。
【請求項２３】
１またはそれ以上のアプリケーションに関連付けられたクラスをロードする方法であって、
（ａ）対応するアプリケーションに関連付けられたクラスをロードするように適合された、アプリケーションごとに個別のクラスローダを構築し、前記アプリケーションのうち対応するアプリケーションの実行が終了または中断したとき、前記構築されたクラスローダへの参照を解除するように適合されたアプリケーションマネージャを構築する処理と、
（ｂ）アプリケーションを受信する処理と、
（ｃ）前記アプリケーションマネージャを利用して、前記受信されたアプリケーションのためのクラスローダを構築する処理と、
（ｄ）前記クラスローダを利用して、前記受信されたアプリケーションに関連付けられた１またはそれ以上のクラスをロードすることによって、前記クラスローダが、前記１またはそれ以上のクラスへの参照を維持する処理と、
（ｅ）前記アプリケーションマネージャを利用して、前記受信されたアプリケーションの実行が終了または中断したとき、前記クラスローダへの参照を解除する処理と
を備える方法。
【請求項２４】
請求項２３記載の方法であって、さらに、
前記アプリケーションマネージャを利用して、前記アプリケーションのための前記クラスローダへの参照を解除することによって、前記クラスローダへの到達を不能とする処理を備える方法。
【請求項２５】
請求項２３記載の方法であって、さらに、
受信されたアプリケーションごとに処理（ｂ）、（ｃ）および（ｄ）を繰り返す処理を備える方法。
【請求項２６】
請求項２５記載の方法であって、さらに、
アプリケーションの実行が終了または中断したとき、前記アプリケーションに関連付けられたクラスローダへの参照を解除し、その結果、前記クラスローダおよび関連付けられたクラスについて、ガーベッジコレクションの間にアンロード可能にする処理を備える方法。
【請求項２７】
１またはそれ以上のアプリケーションに関連付けられたクラスをロードしたりアンロードしたりするためのシステムであって、
複数のアプリケーションの１つに関連付けられたクラスをロードするようにそれぞれが適合されている複数のクラスローダと、
前記複数のクラスローダの１つを利用して、前記複数のアプリケーションの１つに関連付けられたクラスをロードするように適合され、所定の条件に応じて、前記複数のクラスローダの１つへの参照を解除し、その結果、前記複数のクラスローダのそれぞれに関連付けられたクラスについて、ガーベッジコレクションの間にアンロード可能にするように適合されたアプリケーションマネージャと
を備えるシステム。
【請求項２８】
１またはそれ以上のアプリケーションに関連付けられたクラスをロードするためのシステムであって、
メモリと、
メモリと連動して、複数のアプリケーションのそれぞれに１つずつ個別のクラスローダを構築するように適合されたアプリケーションマネージャを実装するプロセッサと
を備え、
各クラスローダは、対応するアプリケーションに関連付けられたクラスをロードするように適合され、前記アプリケーションマネージャは、前記対応するアプリケーションの実行が終了したとき、または前記アプリケーションマネージャによって前記対応するアプリケーションの実行が中断されたとき、前記構築されたクラスローダへの参照を解除するように作動するシステム。
【請求項２９】
請求項２８記載のシステムであって、さらに、
第１のアプリケーションに関連付けられたクラスをロードするように適合された第１のクラスローダを備えるシステム。
【請求項３０】
請求項２９記載のシステムであって、
前記アプリケーションマネージャは前記第１のクラスローダにリンクされているシステム。
【請求項３１】
請求項２９記載のシステムであって、さらに、
前記第１のアプリケーションに関連付けられた第１のクラスセットを格納するメモリを備え、
前記第１のクラスローダは前記第１のクラスセットにリンクされているシステム。
【請求項３２】
請求項２８記載のシステムであって、
前記システムはデジタルテレビであるシステム。
【請求項３３】
請求項２８記載のシステムであって、
前記システムはデジタルテレビレシーバであるシステム。
【請求項３４】
１またはそれ以上のアプリケーションに関連付けられたクラスをロードしたりアンロードしたりするためのデジタルテレビレシーバであって、
複数のアプリケーションの１つに関連付けられたクラスをロードするようにそれぞれが適合されている複数のクラスローダと、
前記複数のクラスローダの１つを利用して、前記複数のアプリケーションの１つに関連付けられたクラスをロードするように適合され、所定の条件に応じて、前記複数のクラスローダの１つへの参照を解除し、その結果、前記複数のクラスローダのそれぞれに関連付けられたクラスについて、ガーベッジコレクションの間にアンロード可能にするように適合されたアプリケーションマネージャと
を備えるデジタルテレビレシーバ。
【請求項３５】
デジタルテレビにおいて、１またはそれ以上のアプリケーションに関連付けられたクラスをロードするためのシステムであって、
メモリと、
メモリと連動して、複数のアプリケーションのそれぞれに１つずつ個別のクラスローダを構築するように適合されたアプリケーションマネージャを実装するプロセッサと
を備え、
各クラスローダは、前記複数のアプリケーションのうち対応するアプリケーションに関連付けられたクラスをロードするように適合され、前記アプリケーションマネージャは、前記対応するアプリケーションの実行が終了したとき、または前記アプリケーションマネージャによって前記対応するアプリケーションの実行が中断されたとき、前記構築されたクラスローダへの参照を解除するように作動するシステム。
【請求項３６】
アプリケーションに関連付けられたクラスをロードしたりアンロードしたりするようにプロセッサを作動させるように適合されたコンピュータプログラムであって、
コンピュータ読み取り可能な命令を格納するためのコンピュータ読み取り可能な媒体を備え、
前記コンピュータ読み取り可能な命令は、
対応するアプリケーションに関連付けられたクラスをロードするようにそれぞれが適合された、複数のアプリケーションのそれぞれに１つずつ個別のクラスローダを構築する命令と、
前記複数のアプリケーションの１つのためのクラスローダを利用して、対応するアプリケーションに関連付けられたクラスをロードすることによって、前記クラスローダが、前記１またはそれ以上のクラスへの参照を維持するようにする命令と、
前記複数のアプリケーションの１つのためのクラスローダへの参照を解除することによって、前記クラスローダへの到達を不能にし、その結果、前記複数のクラスローダのそれぞれに関連付けられたクラスについて、ガーベッジコレクションの間にアンロード可能にする命令と
を備えるコンピュータプログラム。
【請求項３７】
１またはそれ以上のアプリケーションに関連付けられたクラスをロードするようにプロセッサを作動させるように適合されたコンピュータプログラムであって、
コンピュータ読み取り可能な命令を格納するためのコンピュータ読み取り可能な媒体を備え、
前記コンピュータ読み取り可能な命令は、
アプリケーションごとに個別のクラスローダを構築し、対応するアプリケーションの実行が終了または中断したとき、前記構築されたクラスローダへの参照を解除するように適合されたアプリケーションマネージャを構築する命令であって、前記クラスローダは、前記対応するアプリケーションに関連付けられたクラスをロードするように適合されている命令と、
アプリケーションを受信する命令と、
前記アプリケーションマネージャを利用し、前記受信されたアプリケーションのためのクラスローダを構築する命令と、
前記クラスローダを利用して、前記受信されたアプリケーションに関連付けられた１またはそれ以上のクラスをロードすることによって、前記クラスローダが、前記１またはそれ以上のクラスへの参照を維持するようにする命令と、
前記受信されたアプリケーションのための前記クラスローダへの参照を解除することによって、前記クラスローダへの到達を不能にし、その結果、前記複数のクラスローダのそれぞれに関連付けられたクラスについて、ガーベッジコレクションの間にアンロード可能にする命令と
を備えるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータソフトウェアに関する。本発明は、特に、アプリケーションに関連付けられたクラスをロードするように適応されたクラスローダを実装するための方法および装置に関する。
【背景技術】
【０００２】
デジタルテレビ革命は、テレビ放送の歴史における最も重要な出来事の１つである。デジタルテレビの到来によって、人工衛星、ケーブル、そして地上局のテレビチャンネルを介して高速のデータ転送を行なうことが可能になった。デジタルテレビは、ビデオやオーディオの品質を大きく向上させるだけでなく、より多くのチャンネルを提供することもできる。最も重要なのは、デジタルテレビによって、真に対話式のテレビの時代がもたらされる点である。例えば、デジタルレシーバによって、単純な対話式のクイズ番組からインターネット放送、そしてテレビコンテンツとＷｅｂコンテンツとの混合等に及ぶ様々な優れたサービスを提供できるであろう。デジタルテレビの市場が広がるにつれて、コンテンツの開発に携わる業者は、電子番組ガイド、ビデオオンデマンド、エンハンスド・ブロードキャスティング等の次世代の対話式テレビサービスを構築するための、多機能且つ高コスト有効性且つ高信頼性のソフトウェアプラットフォームを求めるようになってきた。
【０００３】
Ｊａｖａ（登録商標）は、ポータブル言語として設計された最も主要なオブジェクト指向言語である。Ｊａｖａプログラムは、記述とコンパイルとを同時に行なうことができ、ＪＡＶＡ（商標）プラットフォームをサポートする任意の互換デバイス上で実行することができる。例えば、Ｊａｖａ（登録商標）は、あらゆる主要なＷｅｂブラウザに組み込まれている。したがって、Ｊａｖａ（登録商標）は、どのＷｅｂ対応コンピュータ上においても、そのコンピュータのＷｅｂブラウザを介して実行することができる。このように、Ｊａｖａ（登録商標）は、次世代のセットトップボックスおよびデジタルテレビのためのソフトウェアプラットフォームとして大きく期待されている。
【０００４】
オブジェクト指向のプログラミングでは、オブジェクトによってランタイムデータが表される。各オブジェクトは、オブジェクトの特性を決定するクラスを通して定義される。すなわち、オブジェクトは、あるクラスをもとに形成される個々のインスタンスである。Ｊａｖａアプリケーションを実行する際には、先ず、関連のクラスがメモリにロードされる。次いで、これらのクラスのインスタンスが、プログラムの流れにしたがって作成される。ほとんどのオブジェクト指向言語の場合は、作成されたオブジェクトが不要になった際に、それらのオブジェクトを全てプログラマ自身が破棄する必要がある。しかしながら、Ｊａｖａ仮想マシンを実装すると、このプロセスが自動化され、使用可能メモリを増やすためのガーベッジコレクションが実行される。このように、Ｊａｖａランタイム環境（ＪＲＥ：Java  runtime  environment）によって、もう参照されないオブジェクトが削除または「ガーベッジコレクト」される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ガーベッジコレクションでは、もう参照されないクラスのインスタンスは回収されるが、それらに関連するクラスはメモリから除去されない。さらに、Ｊａｖａ（登録商標）は動的言語であるため、クラスのロードは普通一般に実施される。しかしながら、現時点においては、もう不要なクラスをアンロードするためのメカニズムが組み込まれていない。このため、最終的には、Ｊａｖａプラットフォームに多数のクラスが格納される結果になる。
【０００６】
デスクトップ環境の場合はメモリの制限が比較的緩いので、クラスをアンロードする必要はない。さらに、ブラウザをオフにすれば（または閉じれば）、クラスはメモリから消去される。しかしながら、組み込みシステムの環境、特にデジタルテレビの分野では、スペースは貴重なリソースである。さらに、デジタルテレビの環境では、複数のアプリケーションを実行することが普通になる。例えば、テレビの視聴者がチャンネルを変えると、各関連のサービスにおいて、複数のクラスを有した新しいアプリケーションをロードする必要が生じる。このため、サイズの限られたメモリが消費し尽くされるまで、ロードされたクラスへのメモリの割り当てが続けられる。メモリが消費されてしまうと、これ以上アプリケーションを実行することが不可能になる。したがって、メモリの利用をモニタリングして、アプリケーションで不要になったクラスを除去することが望ましい。エラー時にテレビをリブート（再起動）することは望ましくないので、これは特に重要である。
【０００７】
以上から、メモリにおけるクラスの格納を管理するための、より良い方法が必要とされていることがわかる。
【課題を解決するための手段】
【０００８】
本発明は、不要になったクラスをメモリから動的にアンロードすることを可能にする。これは、ある程度は、各アプリケーションに関連付けられた個々のクラスローダを使用することによって達成される。こうすると、デジタルテレビでのメモリの消費を管理し、限られたメモリリソースをより効率活用することが可能になる。
【０００９】
本発明の１態様にしたがうと、アプリケーションマネージャは、アプリケーションのためのクラスローダを構築するように適合される。例えば、デジタルテレビレシーバを通してロードされるアプリケーションに関連付けられたクラスをロードするために、専門のクラスローダを構築（インスタンス化）しても良い。したがって、このクラスローダは、アプリケーションに関連付けられた１またはそれ以上のクラスをロードするために利用される。
【００１０】
本発明の別の１態様にしたがうと、アプリケーションマネージャは、アプリケーションの実行をモニタリングおよび管理するように適合され、そしてアプリケーションの実行が終了した際またはアプリケーションの実行が終結された（例えば信号によって）際に、作成されたクラスローダへの参照を解除するように適合される。したがって、アプリケーションが終結したことがアプリケーションマネージャによって決定されると、それらのクラスはもう不要になるのでアンロードされる。これは、ある程度は、そのアプリケーションのためのクラスローダへの参照を解除して到達不能にすることによって達成される。このクラスローダは、実行環境にロードしたクラスへの参照を維持している最後のローダであるので、これらのクラスを参照するインスタンスがランタイム環境内にほかに存在しない場合は、このクラスローダへの参照を解除することによって、これらのクラスへの到達を不能にすることができる。したがって、ガーベッジコレクションによってこれらのクラスが有効にアンロードされる。
【００１１】
本発明のさらに別の１態様にしたがうと、本発明は、Ｊａｖａプラットフォーム上に実装される。Ｊａｖａプラットフォームは、対話式サービス用の新しいクラスにとって理想的な開発プラットフォームおよび配置プラットフォームを提供する。Ｊａｖａプログラミング言語の使用によって、コンテンツ開発者が、アプリケーションの外見（ルック・アンド・フィール）に関して高い制御性および柔軟性を付与されるので、最も動的で強力な対話式テレビを視聴者に体験させることが可能になる。ガーベッジコレクションのプロセスは、メモリ割り当ておよびメモリ管理の負担を、プログラマからプラットフォームへと移すために活用される。また、Ｊａｖａプログラミング言語で記述された対話式のテレビアプリケーションによって、多種多様なテレビレシーバの全体に渡ってセキュリティ・拡張性・可搬性が提供されるので、コンテンツ開発者は、自分の対話式アプリケーションを市場に売り出す時間と費用を削減することできる。
【００１２】
本発明は、個々のクラスローダを利用して、各アプリケーションに関連付けられたクラスをロードしたりアンロードしたりする。ガーベッジコレクションのプロセスは、関連のクラスがもう不要であると決定された場合に適切なクラスローダへの参照を解除することによって、使用可能なメモリの量を最大化させる。これは、メモリに限界があるデジタルテレビレシーバ等のシステムにおいて特に重要である。
【図面の簡単な説明】
【００１３】
【図１】本発明が実装されるシステムを示したブロック図である。
【図２】クラスのロード中における本発明の１実施形態を示したブロック図である。
【図３】アプリケーションの実行中における本発明の１実施形態を示したブロック図である。
【図４】アプリケーションの実行の完了時における本発明の１実施形態を示したブロック図である。
【図５】ガーベッジコレクションが１ラウンド完了した後の本発明の１実施形態を示した図である。
【図６】デジタルＴＶレシーバ上でアプリケーションを実行する方法を、本発明の１実施形態にしたがって示したフローチャートである。
【図７】図６に示されるアプリケーションの実行時にアプリケーションマネージャを実装してクラスをアンロードする方法を、本発明の１実施形態にしたがって示したフローチャートである。
【図８】本発明の実装に適した代表的な汎用コンピュータシステムを示したブロック図である。
【発明を実施するための形態】
【００１４】
添付の図面に関連して行なう以下の説明から、本発明のさらなる利点が明らかになる。
【００１５】
以下の説明では、本発明の完全な理解を促すために、多くの詳細構成が具体的に示されている。しかしながら、本発明がこれらの具体的な詳細なしに実現できることは、当業者にとって明らかである。また、本発明を不必要に不明瞭化しないように、周知のプロセス動作の説明は省略してある。
【００１６】
ここでは、クラスの動的なアンロードを可能にする発明を開示する。特に、各クラスを、関連のクラスの定義を含んだクラスオブジェクトによって表しても良い。したがって、本明細書では、「クラス」および「クラスオブジェクト」という用語を互いに取り替え可能な意味で使用するものとする。
【００１７】
デジタルテレビおよびデジタルテレビレシーバに関連して本発明を説明する。図１は、代表的なデジタルテレビレシーバを示したブロック図である。図に示すように、アンテナ１０２を通して信号が受信され、チューナモジュール１０４によって調整されると、ＭＰＥＧ２トランスポートストリーム１０６が生成される。すると、デマルチプレクサ１０８において、ビデオストリーム１１２と、オーディオストリーム１１４と、データストリーム１１６とを含んだ暗号化されたＭＰＥＧストリーム１１０が生成される。これら３種類のストリームは、次いで、暫定的なアクセスサブシステム１１８において処理される。例えば、暫定的なアクセスサブシステム１１８では、解読情報１２２（例えば解読アルゴリズム）はもちろんキー管理情報１２０を利用しても良い。暫定的なアクセスサブシステム１１８では、いずれも解読されたビデオストリーム１２４と、オーディオストリーム１２５と、データ１２６とを含む解読されたＭＰＥＧストリーム１２３が生成される。次いで、デコーダ１２８によって、解読されたＭＰＥＧストリーム１２３が処理され、復号されたビデオデータはフレームバッファ１３０に、そして復号されたオーディオデータはスピーカ１３２に伝送される。
【００１８】
Ｊａｖａ仮想マシン（ＪＶＭ）は、図１のようなデジタルテレビレシーバで受信される情報を処理することによって本発明を実現することが可能な１プラットフォームである。特に、データ１２６が処理される際には、多数のクラスからなるＪａｖａアプリケーションが含まれる可能性がある。したがって、クラスを動的にロードおよびアンロードすることによって、メモリに限界があるデジタルテレビまたはデジタルテレビレシーバ（またはセットトップボックス）におけるメモリの消費を最小限に抑えることが望まれる。
【００１９】
本発明は、各アプリケーションの個々のクラスローダをインスタンス化することによって、各アプリケーションに関してクラスをロードしたりアンロードしたりすることを可能にする。図２は、本発明の１実施形態を示したブロック図である。図に示すように、プラットフォーム上におけるアプリケーションの実行およびクラスのロードを管理する目的で、アプリケーションマネージャ２０２が提供される。アプリケーションマネージャ２０２を実装する方法に関しては、図７を参照にしながら後ほど詳述する。より詳しく言うと、クラスのロードの管理は、一部には、各アプリケーションのために個々のクラスローダを構築することによってなされる。したがって、アプリケーションマネージャ２０２は、第１のアプリケーション（ＡＰＰ１）に関連付けられたクラスをロードするように適合された第１のクラスローダ２０４をインスタンス化する。同様に、アプリケーションマネージャ２０２は、第２のアプリケーション（ＡＰＰ２）に関連付けられたクラスをロードするように適合された第２のクラスローダ２０６をインスタンス化する。アプリケーションマネージャ２０２およびクラスローダ２０４，２０６は、メモリ２０８に格納されている。次いで、クラスローダ２０４，２０６は、それぞれのアプリケーションのためにクラスをロードする。より詳しく言うと、図に示すように、第１のアプリケーションクラスローダ２０４は、第１のアプリケーションに関連付けられた第１のクラスセット２１０をロードし、第２のアプリケーションクラスローダ２０６は、第２のアプリケーションに関連付けられた第２のクラスセット２１２をロードする。こうして、第１および第２のアプリケーションクラスセット２１０，２１２が、実行環境２１４（例えばＪＶＭ）にロードされる。ロードされたクラスは、各アプリケーションの実行中にアクセスすることが可能である。
【００２０】
図３は、クラスのロードプロセスの完了時における、本発明の１実施形態を示したブロック図である。図３は、例えば、ＪＶＭによる第１および第２のアプリケーションの実行に関連している。図に示すように、アプリケーションマネージャ２０２は、第１のアプリケーションクラスローダ２０４および第２のアプリケーションクラスローダ２０６の両方へのリンク（例えば「参照」）を維持している。また、第１のアプリケーションクラスローダ２０４は、第１のアプリケーションクラスセット３０２へのリンク（例えば「参照」）を維持している。同様に、第２のアプリケーションクラスローダ２０６は、第２のアプリケーションクラスセット３０４へのリンク（例えば「参照」）を維持している。例えば、各リンクをポインタの使用によって実現しても良い。アプリケーションマネージャ２０２は、各アプリケーションの実行中は、全てのクラスローダ２０４，２０６に対して参照を継続している。また、クラスローダ２０４，２０６は、各アプリケーションの実行中は、アプリケーションクラス３０２，３０４をそれぞれ参照している。ある実装において、第１および第２のアプリケーションクラスセットは、メモリ（例えばメモリ２００）にあるＪＶＭスタックに格納されている。メモリは、例えばランダムアクセスメモリ（ＲＡＭ）で良い。
【００２１】
あるアプリケーションの実行が終了した際またはそのアプリケーションが完了前にストップされた際は、アプリケーションマネージャ２０２は、適切なクラスローダへの参照を解除する。図４は、第２のアプリケーションの実行が完了した後に続く本発明の１実施形態を示したブロック図である。第２のアプリケーションの実行が終了した際または時期尚早にストップされた際は、アプリケーションマネージャ２０２は、第２のアプリケーションローダ２０６への参照を解除する。すなわち、アプリケーションマネージャ２０２は、図中に４０２で示されるように、第２のアプリケーションローダへのリンクを排除する。例えば、第２のアプリケーションローダ２０６に対するもとの参照変数を、空（ヌル）に設定して良い。例えば、第２のアプリケーションローダ２０６に対する参照変数を、ヌルに設定して良い。第２のクラスローダ２０６への参照が解除されると、第２のクラスローダ２０６は、メモリ内において到達不能なオブジェクトになる。上述したように、あるオブジェクト（例えばクラスのインスタンス）またはクラスに対する参照がない場合、そのオブジェクトまたはクラスは「到達不能」であるとされて、ガーベッジコレクトされる。第２のアプリケーションクラスのセットおよびそれらに関連付けられたインスタンスへの最後の参照である第２のクラスローダ２０６が到達不能であると、関連のクラス３０４（例えばクラスオブジェクト）およびこれらのクラス３０４の全インスタンス（例えばオブジェクト）もやはりその時点で到達不能になるので、ガーベッジコレクション４０６によって、それらのクラスおよびインスタンスが除去される。したがって、参照が解除されたクラスローダ２０６によって参照されたクラスがガーベッジコレクトされ、それらに割り当てられていたメモリが使用可能なメモリプールに戻される。「到達不能性」およびガーベッジコレクションを含むＪＶＭに関するさらなる詳細に関しては、Lindholm（リンドホルム）、Yellin（イェリン）による「The  Java  Virtual  Machine  Specification,  Second  Edition（Ｊａｖａ仮想マシン仕様、第２版）」（ISBN  0-201-43294-3）に記載されており、本文献を、引用として本明細書に組み込むものとする。
【００２２】
ガーベッジコレクションが完了すると、メモリ内にはもう到達不能なクラスおよびオブジェクトは存在しなくなる。図５に示すように、図４のシステムにおいてガーベッジコレクションが実施されると、到達不能なクラスローダ、到達不能なクラス、そして関連のインスタンスがメモリから削除される。その結果、第１のアプリケーションローダ２０４および第１のクラスのセット３０４のみが残る。したがって、本発明は、メモリリソースを動的に開放するのに有用であるので、限りあるメモリリソース（例えばデジタルテレビレシーバのメモリ等）をより良く活用することが可能になる。
【００２３】
図６は、デジタルＴＶレシーバを通して伝送されるアプリケーションを実行する方法を、本発明の１実施形態にしたがって示したフローチャートである。このプロセスはブロック６０２から開始し、ブロック６０４においてデジタルテレビレシーバがオンになる。続いて、ブロック６０６において、Ｊａｖａ（登録商標）環境がスタートされる。次いで、ブロック６０８においてアプリケーションマネージャが作成され、ブロック６１０において実行される。
【００２４】
図１に示すようなデジタルテレビレシーバは、様々なデジタルテレビサービルを受信することができる。これらのサービスは、多数のチャンネルを受信することだけでなく、対話式テレビからビデオ・オン・デマンド、そして特殊なプログラミングに至るまで多岐にわたる。ブロック６１２において、あるサービスがユーザによって選択されると、ブロック６１４において、その選択されたサービスに関連したアプリケーションがデジタルテレビレシーバを通して受信される。例えば、ユーザがディズニーサービスを選択した場合は、表示の品質を向上させる目的でディズニーアプリケーションが受信される可能性がある。
【００２５】
アプリケーションマネージャは、アプリケーションの実行をモニタリングおよび管理する役割を担っている。例えば、ブロック６１６において、アプリケーションマネージャは、アプリケーションをロードおよび実行するように信号通知される。ブロック６１８において、アプリケーションをスタートさせるスタート信号が（例えばデジタルテレビレシーバを通して）受信されると、アプリケーションマネージャは、ブロック６２０においてそのアプリケーションをスタートさせるように信号通知される。アプリケーションが、ブロック６２２においてストップ信号が（例えばデジタルテレビレシーバを通して）受信されるまで実行された後、アプリケーションマネージャは、ブロック６２４においてそのアプリケーションをストップさせるように信号通知される。このプロセスは、ブロック６２６において終了する。
【００２６】
アプリケーションマネージャは、ロードされたクラスのうちアプリケーションで不要とされたクラスをアンロードするように、様々な形で実装することが可能である。図７は、図６に示されるアプリケーションの実行時にアプリケーションマネージャを実装してクラスをアンロードする方法を、本発明の１実施形態にしたがって示したフローチャートである。このプロセスはブロック７０２から開始し、ブロック７０４においてアプリケーションマネージャが適切な初期化を実施する。また、アプリケーションマネージャは、１またはそれ以上のアプリケーションの実行を管理する役割を担っている。このため、アプリケーションマネージャは、図６に示すように、ブロック６１４および６１６に進むのに先立って、アプリケーションマネージャが（例えばブロードキャストデータストリームから受信された）アプリケーションをロードする、スタートする、またはストップすることを示す信号の受信（例えばテレビレシーバを通して受信する）待ちをする。したがって、アプリケーションマネージャは、ブロック７０６において、このような信号の受信待ちをしている。ブロック７０８において、アプリケーションをロードすることを示す信号が受信されると、アプリケーションマネージャは、アプリケーション７１０のためのクラスローダを構築する。上述したように、このクラスローダは、アプリケーションに関連付けられた１またはそれ以上のクラスをロードするように設計されている。ブロック７１２においてスタート信号が受信されると、アプリケーションマネージャは、ブロック７１４において適切なクラスローダを利用し、アプリケーションに関連付けられたアプリケーションクラスをロードする。例えば、アプリケーションクラスを、アプリケーションのセキュリティ制約にしたがってロードしても良い。このため、クラスローダは、適切なセキュリティチェックを実施して、アプリケーションをロードできるか否かを決定することができる。次いで、アプリケーションマネージャは、ブロック７１６においてアプリケーションの実行を開始し、ブロック７１８において、アプリケーションが終了するまたはアプリケーションが完了前に終結されるまで待機する。アプリケーションマネージャは、アプリケーションの実行が終結されたことを示す信号またはメッセージを、そのアプリケーションまたは他のプロセスから受信することによって、そのアプリケーションの終結または完了を認識する。
【００２７】
アプリケーションマネージャが、ブロック７２０に示すように、アプリケーションの実行を完了前にストップさせるストップ信号を受信した場合、そのアプリケーションはブロック７２２において破棄される（例えば削除される）。そして、ブロック７２４において、破棄されたアプリケーションに関連したクリーンアップが実施される。次いで、ブロック７２６において、そのアプリケーションのためのクラスローダへの参照が解除される。
【００２８】
ブロック７２８においてアプリケーションの実行が完了すると、そのアプリケーションは、アプリケーションのクリーンアップを開始する信号を、（例えば、アプリケーションまたはブロードキャスト環境からレシーバを通して）アプリケーションマネージャに送信する。例えば、そのアプリケーションに関連するあらゆるファイルが削除され、同じく関連するあらゆるスレッドが除去される。また、各アプリケーションへの参照等の、ブックキーピングに使用されるあらゆる不要なデータを削除しても良い。次いで、プロセスは、ブロック７２４に進んでアプリケーションのクリーンアップを行ない、ブロック７２６においてそのアプリケーションのためのクラスローダへの参照を解除する。つまり、クラスローダへのポインタ（例えばアプリケーションマネージャに関連付けられた参照変数）をヌルに設定し、クラスローダとアプリケーションマネージャとの間のリンクを除去することによって、参照の解除を達成して良い。別の例として、クラスローダを到達不能としてマークしても良い。このクラスローダは、実行環境にロードされたクラスへの参照を最終的に維持しているので、このクラスローダへの参照を解除すれば、これらのクラスは到達不能になる。したがって、ガーベッジコレクションが実施することによって、これらのクラスを有効にアンロードすることができる。
【００２９】
ガーベッジコレクションは、参照が解除されたクラスローダに関連付けられたクラスをアンロードする目的で様々な形で実施して良い。例えば、ガーベッジコレクションを、２つの別々のパスに分けて実施しても良い。先ず第１のパスにおいて、ガーベッジコレクションは、到達不能なあらゆるオブジェクトおよびクラスを検索する。このとき、クラスローダおよびそのクラスローダによってロードされたクラスが到達不能であることが決定される。このとき、到達不能なクラスに関連付けられたクラスを到達不能としてマークしても良い。クラスローダが到達不能になると、参照が解除されたそのクラスローダに割り当てられたメモリが、ガーベッジコレクションによって解放される。第２のパスでは、前のパスにおいて到達不能であるとマークされたクラスローダ（既に存在しない）がロードしたクラスの検索が行なわれ、メモリから除去される。
【００３０】
本発明は、任意の適切なコンピュータシステムに実装して良い。図８は、本発明を実装するのに適した代表的な汎用コンピュータシステム１００２を示した図である。コンピュータシステムは、任意の適切な形態をとって良い。コンピュータシステムは、例えば、デジタルテレビレシーバまたはセットトップボックスに組み込んでも良い。
【００３１】
コンピュータシステム１０３０、またはさらに特定してＣＰＵ１０３２は、当業者に理解される限りにおいて、仮想マシンをサポートするように構成されて良い。コンピュータシステム１００２は、一次記憶デバイス１００６（通例、読み出し専用メモリすなわちＲＯＭ）と一次記憶デバイス１００８（通例、ランダムアクセスメモリすなわちＲＡＭ）を含むメモリデバイスに接続された任意の数のプロセッサ１００４（中央処理装置すなわちＣＰＵとも呼ばれる）を備えている。当業者に周知のように、ＲＯＭは、ＣＰＵ１００４にデータおよび命令を一方向的に転送するよう機能し、ＲＡＭは通例、データおよび命令を二方向的に転送するのに用いられる。両方の一次記憶デバイス１００６および１００８は、任意の適切なコンピュータ読み取り可能媒体を含んでいて良い。ＣＰＵ１００４は、一般に、任意の数のプロセッサを含んでいて良い。
【００３２】
二次記憶媒体１０１０は、通例はマスメモリデバイスであり、二方向的にＣＰＵ１００４に接続され、データ記憶容量を補っている。マスメモリデバイス１０１０は、コンピュータコード、データなどを含むプログラムを格納するのに用いることが可能なコンピュータ読み取り可能な媒体である。通例、マスメモリデバイス１０１０は、一般に一次記憶デバイス１００６および１００８よりも低速なハードディスクなどの記憶媒体である。
【００３３】
また、ＣＰＵ１００４は、ビデオモニタ、トラックボール、マウス、キーボード、マイクロフォン、タッチセンシティブディスプレイ、トランスデューサカードリーダ、磁気もしくは紙テープリーダ、タブレット、スタイラス、音声もしくは手書き文字認識装置、もしくは、もちろん他のコンピュータのようなその他のよく知られた入力デバイス、を含むがそれらに限定されない１つ以上の入出力デバイス１０１２に接続されても良い。最後に、ＣＰＵ１００４は、１０１４に大まかに示されているネットワーク接続を用いて、コンピュータや、例えばインターネットネットワークもしくはイントラネットネットワークなどの通信ネットワークに随意的に接続されても良い。このようなネットワーク接続により、ＣＰＵ１００４は、上述した方法の段階を実行している間に、ネットワークから情報を受信したりネットワークに情報を出力したりすることができると予期される。このような情報は、ＣＰＵ１００４を用いて実行される命令のシーケンスであることが多く、例えば搬送波で運ばれるコンピュータデータ信号の形で、ネットワークから受信したりネットワークに出力したりして良い。
【００３４】
本発明は、不要であると決定されたクラスのアンロードを可能にする。アプリケーションごとに個別のクラスローダを使用することによって、クラスのロードおよび不要になった（例えば、アプリケーションが終了したまたは終結された場合など）クラスのアンドロードが効果的に行なわれる。さらに、カスタマイズされたクラスローダを使用することによって、セキュリティレベルが向上されるので、無許可のアプリケーションのロードおよび実行が回避される。
【００３５】
本明細書では、本発明の例示的な実施形態および用途を説明しているが、本発明の概念、範囲、および趣旨の範囲内で多くの変更を加えることが可能であり、これらの変更は、本出願を熟読した当業者にとって明らかである。例えば、本明細書では、デジタルテレビのコンテキストにおいてクラスのアンロードを可能にするものとして本発明を説明している。しかしながら、本発明は、他のコンテキストでクラスをロードしたりアンロードしたりするのに使用することも可能である。さらに、本明細書では、Ｊａｖａプラットフォーム上に実装するものとして本発明を説明しているが、オブジェクト指向言語が使用される他の様々なプラットフォームまたはコンテキストにおいて本発明を実装しても良い。このため、「到達不能性」とは、一般に、「参照が解除」されたエンティティが有する使用不可性を指して良い。さらに、上述したプロセスブロックは、単に例示的なものである。したがって、クラスのロードやアンロードを、別のプロセスブロックを使用して行なっても良い。したがって、上述した実施形態は、例示を目的としたものであって限定的ではなく、本発明は、本明細書で取り上げた項目に限定されず、添付した特許請求の範囲の範囲および均等物の範囲内で変更することが可能である。
【００３６】
以上の実施例に関し、更に、以下の項目を開示する。
【００３７】
（１）  アプリケーションに関連付けられたクラスをロードしたりアンロードしたりする方法であって、
前記アプリケーションに関連付けられたクラスをロードするように適合された、前記アプリケーションのためのクラスローダを構築する処理と、
前記クラスローダを利用して、前記アプリケーションに関連付けられた１またはそれ以上のクラスをロードすることによって、前記クラスローダが、前記１またはそれ以上のクラスへの参照を維持するようにする処理と、
前記アプリケーションのための前記クラスローダへの参照を解除することによって、前記クラスローダへの到達を不能にする処理と
を備える方法。
【００３８】
（２）  （１）記載の方法であって、
前記クラスローダへの参照の解除は、前記クラスローダへ到達を不能としたことを示すマークを付することを含む方法。
【００３９】
（３）  （１）記載の方法であって、
前記参照の解除は、前記クラスローダへの参照を空（ヌル）に設定することを含む方法。
【００４０】
（４）  （１）記載の方法であって、
前記クラスローダへの参照の解除は、前記１またはそれ以上のクラスがもう不要になった際に実施される方法。
【００４１】
（５）  （１）記載の方法であって、
前記アプリケーションはＪａｖａプログラムである方法。
【００４２】
（６）  （１）記載の方法であって、さらに、
前記アプリケーションを実行する処理を備え、
前記クラスローダへの参照の解除は、前記アプリケーションの実行が終結された際に実施される方法。
【００４３】
（７）  （１）記載の方法であって、さらに、
前記アプリケーションを破棄する処理を備え、
前記アプリケーションのための前記クラスローダへの参照の解除は、前記アプリケーションが破棄された際に実施される方法。
【００４４】
（８）  （１）記載の方法であって、さらに、
ガーベッジコレクションを実施し、前記参照が解除されたクラスローダによって参照された前記１またはそれ以上のクラスを削除する処理を備える方法。
【００４５】
（９）  （１）記載の方法であって、さらに、
前記参照が解除されたクラスローダへ到達を不能としたことを示すマークを付する処理を備える方法。
【００４６】
（１０）  （１）記載の方法であって、さらに、
前記参照が解除されたクラスローダによって参照された前記１またはそれ以上のクラスへ到達を不能としたことを示すマークを付する処理を備える方法。
【００４７】
（１１）  （８）記載の方法であって、
ガーベッジコレクションを実施し、前記参照が解除されたクラスローダによって参照された前記１またはそれ以上のクラスを削除する処理は、
前記クラスローダは到達不能であることを決定する処理と、
前記クラスローダが自身に関連付けられたクラスを１またはそれ以上有することを確認する処理と、
前記１またはそれ以上のクラスへ到達を不能としたことを示すマークを付する処理とを備える方法。
【００４８】
（１２）  （１１）記載の方法であって、さらに、
前記クラスローダに関連付けられたメモリを解放する処理と、
前記１またはそれ以上のクラスに関連付けられたメモリを解放する処理と
を備える方法。
【００４９】
（１３）  （１）記載の方法であって、さらに、
到達不能な全てのオブジェクトおよびクラスを検索する処理と、
前記到達不能なオブジェクトおよびクラスを前記関連のメモリ位置から削除する処理と
を備える方法。
【００５０】
（１４）  （１）記載の方法であって、さらに、
前記参照が解除されたクラスローダと関連するクラスとによって消費されるメモリを解放する処理を備える方法。
【００５１】
（１５）  （１４）記載の方法であって、
前記参照が解除されたクラスローダと関連のクラスとによって消費されるメモリを解放する処理は、
前記クラスローダへ到達を不能としたことを示すマークを付する処理と、
到達不能なオブジェクトをメモリから検索する処理と、
前記到達不能なクラスローダを関連のメモリ位置から削除する処理と、
前記到達不能なクラスローダが１またはそれ以上の関連のクラスを有することを確認する処理と、
前記１またはそれ以上の関連のクラスへ到達を不能としたことを示すマークを付する処理と、
到達不能なクラスをメモリから検索する処理と、
前記１またはそれ以上の関連のクラスを関連のメモリ位置から削除する処理と
を備える方法。
【００５２】
（１６）  （１５）記載の方法であって、
前記到達不能なクラスローダを関連のメモリ位置から削除する処理は第１のパスにおいて実施され、前記１またはそれ以上の関連のクラスを関連のメモリ位置から削除する処理は第２のパスにおいて実施される方法。
【００５３】
（１７）  多数のアプリケーションに関連付けられたクラスをロードしたりアンロードしたりする方法であって、
複数のアプリケーションのそれぞれに１つづつクラスローダを構築することによって、複数のクラスローダのそれぞれが、前記複数のアプリケーションの１つに関連付けられたクラスをロードするように適合されるようにする処理と、
前記複数のクラスローダのうち１またはそれ以上のクラスローダを利用することによって、前記対応するアプリケーションに関連付けられた１またはそれ以上のクラスをロードし、前記１またはそれ以上のクラスローダのそれぞれが、前記対応するアプリケーションに関連付けられた前記クラスへの参照を維持するようにする処理と、
前記対応するアプリケーションがその処理を完了した際に、前記複数のクラスローダのうち１またはそれ以上のクラスローダへの到達を不能にする処理と
を備える方法。
【００５４】
（１８）  （１７）記載の方法であって、
前記複数のクラスローダのうち１またはそれ以上のクラスローダへの到達を不能にする処理は、前記複数のクラスローダのうち前記１またはそれ以上のクラスローダへの参照を解除することを含む方法。
【００５５】
（１９）  （１７）記載の方法であって、さらに、
ガーベッジコレクションを実施し、前記到達不能なクラスローダによって参照されたクラスを削除する処理を備える方法。
【００５６】
（２０）  アプリケーションに関連付けられたクラスをロードしたりアンロードしたりする方法であって、
アプリケーションがロードされることを示すロード信号を受信する処理と、
前記アプリケーションに関連付けられたクラスをロードするように適合された、前記アプリケーションのためのクラスローダを構築する処理と、
前記アプリケーションがスタートされることを示すスタート信号を受信する処理と、
前記クラスローダを利用して、前記アプリケーションに関連付けられた１またはそれ以上のクラスをロードすることによって、前記クラスローダが、前記１またはそれ以上のクラスへの参照を維持するようにする処理と、
前記クラスローダへの参照を解除することによって、前記アプリケーションのための前記クラスローダへの到達を不能にする処理と
を備える方法。
【００５７】
（２１）  （２０）記載の方法であって、
前記クラスローダの構築は、前記ロード信号の受信に応じて実施され、前記クラスローダを利用した、前記アプリケーションに関連付けられた１またはそれ以上のクラスのロードは、前記スタート信号の受信に応じて実施される方法。
【００５８】
（２２）  （２０）記載の方法であって、さらに、
前記アプリケーションがストップされることを示すストップ信号を受信する処理を備える方法。
【００５９】
（２３）  （２２）記載の方法であって、
前記クラスローダへの参照の解除は、前記ストップ信号が受信された際に実施される方法。
【００６０】
（２４）  （２０）記載の方法であって、
前記クラスローダへの参照の解除は、前記アプリケーションの実行が終了した際か、または前記クラスローダの構築を担うアプリケーションマネージャによって前記アプリケーションの実行が終結された際に実施される方法。
【００６１】
（２５）  １またはそれ以上のアプリケーションに関連付けられたクラスをロードする方法であって、
（ａ）アプリケーションのためのクラスローダを構築するように適合され、そして前記構築されたクラスローダを前記アプリケーションが終了した際または前記アプリケーションの実行が終結された際にその参照を解除するように適合されたアプリケーションマネージャを作成する処理であって、前記クラスローダは、前記アプリケーションに関連付けられたクラスをロードするように適合されている処理と、
（ｂ）アプリケーションを受信する処理と、
（ｃ）前記アプリケーションマネージャを利用し、前記受信されたアプリケーションのためのクラスローダを構築する処理と、
（ｄ）前記クラスローダを利用して、前記アプリケーションに関連付けられた１またはそれ以上のクラスをロードすることによって、前記クラスローダが前記１またはそれ以上のクラスへの参照を維持するようにする処理と
を備える方法。
【００６２】
（２６）  （２５）記載の方法であって、さらに、
前記アプリケーションマネージャを利用して、前記アプリケーションのための前記クラスローダへの参照を解除することによって、前記クラスローダへの到達を不能にする処理を備える方法。
【００６３】
（２７）  （２５）記載の方法であって、さらに、
受信された各アプリケーションに対して処理（ｂ）、（ｃ）、および（ｄ）を繰り返すことを備える方法。
【００６４】
（２８）  （２７）記載の方法であって、さらに、
アプリケーションの実行が終了した際またはアプリケーションの実行が終結された際に、そのアプリケーションに関連付けられたクラスローダへの参照を解除する処理を備える方法。
【００６５】
（２９）  １またはそれ以上のアプリケーションに関連付けられたクラスをロードしたりアンロードしたりするためのシステムであって、
複数のアプリケーションの１つに関連付けられたクラスをロードするようにそれぞれが適合されている複数のクラスローダと、
前記複数のクラスローダの１つを利用して、前記複数のアプリケーションの１つに関連付けられたクラスをロードするように適合され、そして所定の条件に応じて、前記複数のクラスローダの１つへの参照を解除するように適合されたアプリケーションマネージャと
を備えるシステム。
【００６６】
（３０）  １またはそれ以上のアプリケーションに関連付けられたクラスをロードするためのシステムであって、
メモリと、
メモリと連動して、アプリケーションのためのクラスローダを構築するように適合されたアプリケーションマネージャを実装するプロセッサと
を備え、
前記クラスローダは、前記アプリケーションに関連付けられたクラスをロードすうように適合され、前記アプリケーションマネージャは、前記アプリケーションが終了した際または前記アプリケーションマネージャによって前記アプリケーションの実行が終結された際に、前記構築されたクラスローダへの参照を解除するように作動するシステム。
【００６７】
（３１）  （３０）記載のシステムであって、さらに、
第１のアプリケーションに関連付けられたクラスをロードするように適合された第１のクラスローダを備えるシステム。
【００６８】
（３２）  （３１）記載のシステムであって、
前記アプリケーションマネージャは前記第１のクラスローダにリンクされているシステム。
【００６９】
（３３）  （３１）記載のシステムであって、さらに、
前記第１のアプリケーションに関連付けられた第１のクラスセットを格納するメモリを備え、
前記第１のクラスローダは前記第１のクラスセットにリンクされているシステム。
【００７０】
（３４）  （３０）記載のシステムであって、
前記システムはデジタルテレビであるシステム。
【００７１】
（３５）  （３０）記載のシステムであって、
前記システムはデジタルテレビレシーバであるシステム。
【００７２】
（３６）  １またはそれ以上のアプリケーションに関連付けられたクラスをロードしたりアンロードしたりするためのデジタルテレビレシーバであって、
複数のアプリケーションの１つに関連付けられたクラスをロードするようにそれぞれが適合されている複数のクラスローダと、
前記複数のクラスローダの１つを利用して、前記複数のアプリケーションの１つに関連付けられたクラスをロードするように適合され、そして所定の条件に応じて、前記複数のクラスローダの１つへの参照を解除するように適合されたアプリケーションマネージャと
を備えるシステム。
【００７３】
（３７）  デジタルテレビにおいて、１またはそれ以上のアプリケーションに関連付けられたクラスをロードするためのシステムであって、
メモリと、
メモリと連動して、アプリケーションのためのクラスローダを構築するように適合されたアプリケーションマネージャを実装するプロセッサと
を備え、
前記クラスローダは、前記アプリケーションに関連付けられたクラスをロードすうように適合され、前記アプリケーションマネージャは、前記アプリケーションが終了した際または前記アプリケーションマネージャによって前記アプリケーションの実行が終結された際に、前記構築されたクラスローダへの参照を解除するように作動するシステム。
【００７４】
（３８）  アプリケーションに関連付けられたクラスをロードしたりアンロードしたりするようにプロセッサを作動させるように適合されたコンピュータプログラム製品であって、
コンピュータ読み取り可能な命令を格納するためのコンピュータ読み取り可能な媒体を備え、
前記コンピュータ読み取り可能な命令は、
前記アプリケーションに関連付けられたクラスをロードするように適合された、前記アプリケーションのためのクラスローダを構築する命令と、
前記クラスローダを利用して、前記アプリケーションに関連付けられた１またはそれ以上のクラスをロードすることによって、前記クラスローダが、前記１またはそれ以上のクラスへの参照を維持するようにする命令と、
前記アプリケーションのための前記クラスローダへの参照を解除することによって、前記クラスローダへの到達を不能にする命令と
を備えるコンピュータプログラム製品。
【００７５】
（３９）  １またはそれ以上のアプリケーションに関連付けられたクラスをロードするようにプロセッサを作動させるように適合されたコンピュータプログラム製品であって、
コンピュータ読み取り可能な命令を格納するためのコンピュータ読み取り可能な媒体を備え、
前記コンピュータ読み取り可能な命令は、
アプリケーションのためのクラスローダを構築するように適合され、そして前記構築されたクラスローダを前記アプリケーションが終了した際または前記アプリケーションの実行が終結された際にその参照を解除するように適合されたアプリケーションマネージャを作成する命令であって、前記クラスローダは、前記アプリケーションに関連付けられたクラスをロードするように適合されている命令と、
アプリケーションを受信する命令と、
前記アプリケーションマネージャを利用し、前記受信されたアプリケーションのためのクラスローダを構築する命令と、
前記クラスローダを利用して、前記アプリケーションに関連付けられた１またはそれ以上のクラスをロードすることによって、前記クラスローダが、前記１またはそれ以上のクラスへの参照を維持するようにする命令と、
前記アプリケーションのための前記クラスローダへの参照を解除することによって、前記クラスローダへの到達を不能にする命令と
を備えるコンピュータプログラム製品。
【符号の説明】
【００７６】
１０２・・・アンテナ
１０４・・・チューナモジュール
１０６・・・ＭＰＥＧ２トランスポートストリーム
１０８・・・デマルチプレクサ
１１０・・・暗号化されたＭＰＥＧストリーム
１１２・・・ビデオストリーム
１１４・・・オーディオストリーム
１１６・・・データストリーム
１１８・・・暫定的なアクセスサブシステム
１２０・・・キー管理情報
１２２・・・解読情報
１２３・・・解読されたＭＰＥＧストリーム
１２４・・・ビデオストリーム
１２５・・・オーディオストリーム
１２６・・・データ
１２８・・・デコーダ
１３０・・・フレームバッファ
１３２・・・スピーカ
２０２・・・アプリケーションマネージャ
２０４・・・第１のクラスローダ
２０６・・・第２のクラスローダ
２０８・・・メモリ
２１０・・・第１のクラスセット
２１２・・・第２のクラスセット
２１４・・・実行環境
３０２・・・第１のアプリケーションクラスセット
３０４・・・第２のアプリケーションクラスセット
４０６・・・ガーベッジコレクション
１００２・・・汎用コンピュータシステム
１００４・・・プロセッサ
１００６・・・一次記憶デバイス
１００８・・・一次記憶デバイス
１０１０・・・二次記憶媒体
１０１２・・・入出力デバイス
１０１４・・・ネットワーク接続
【図１】
2014059906.tif 000003
【図２】
2014059906.tif 000004
【図３】
2014059906.tif 000005
【図４】
2014059906.tif 000006
【図５】
2014059906.tif 000007
【図６】
2014059906.tif 000008
【図７】
2014059906.tif 000009
【図８】
2014059906.tif 000010