(57)【特許請求の範囲】
【請求項１】
複数のアプリケーションプログラムが動作する一つのプロセスのメモリ使用量を監視する監視手段と、
前記アプリケーションプログラムごとに監視対象とするかを示す情報に基づいて、監視対象とするアプリケーションプログラムを特定する特定手段と、
前記プロセスのメモリ使用量が第一の閾値を超えた場合に、前記特定手段によって特定されたアプリケーションプログラムのうちのいずれかのアプリケーションプログラムを停止させる制御手段と、
前記複数のアプリケーションプログラムのそれぞれに関して、当該情報処理装置が有する表示手段の使用の有無を示す情報を記憶する記憶手段とを有し、
前記制御手段は、前記情報に基づいて、停止対象とする前記アプリケーションプログラムを選択する情報処理装置。
【請求項２】
前記制御手段は、前記プロセスのメモリ使用量が第二の閾値を下回った場合に、いずれかの前記アプリケーションプログラムを起動させる請求項１記載の情報処理装置。
【請求項３】
前記複数のアプリケーションプログラムのそれぞれの優先度を記憶する記憶手段を有し、
前記制御手段は、前記優先度に基づいて、停止対象とする前記アプリケーションプログラムを選択する請求項１又は２記載の情報処理装置。
【請求項４】
前記複数のアプリケーションプログラムのそれぞれに関して、利用回数を記憶する記憶手段を有し、
前記制御手段は、前記利用回数に基づいて、停止対象とする前記アプリケーションプログラムを選択する請求項１乃至３いずれか一項記載の情報処理装置。
【請求項５】
複数のアプリケーションプログラムが動作する一つのプロセスのメモリ使用量を監視する監視手順と、
前記アプリケーションプログラムごとに監視対象とするかを示す情報に基づいて、監視対象とするアプリケーションプログラムを特定する特定手順と、
前記プロセスのメモリ使用量が第一の閾値を超えた場合に、前記特定手順において特定されたアプリケーションプログラムのうちのいずれかのアプリケーションプログラムを停止させる停止手順とをコンピュータが実行し、
前記停止手順は、前記複数のアプリケーションプログラムのそれぞれに関して記憶手段に記憶されている、前記コンピュータが有する表示手段の使用の有無を示す情報に基づいて、停止対象とする前記アプリケーションプログラムを選択する制御方法。
【請求項６】
前記プロセスのメモリ使用量が第二の閾値を下回った場合に、いずれかの前記アプリケーションプログラムを起動させる起動手順を前記コンピュータが実行する請求項５記載の制御方法。
【請求項７】
複数のアプリケーションプログラムが動作する一つのプロセスのメモリ使用量を監視する監視手順と、
前記アプリケーションプログラムごとに監視対象とするかを示す情報に基づいて、監視対象とするアプリケーションプログラムを特定する特定手順と、
前記プロセスのメモリ使用量が第一の閾値を超えた場合に、前記特定手順において特定されたアプリケーションプログラムのうちのいずれかのアプリケーションプログラムを停止させる制御手順とをコンピュータに実行させ、
前記制御手順は、前記複数のアプリケーションプログラムのそれぞれに関して記憶手段に記憶されている、前記コンピュータが有する表示手段の使用の有無を示す情報に基づいて、停止対象とする前記アプリケーションプログラムを選択する制御プログラム。
【請求項８】
前記プロセスのメモリ使用量が第二の閾値を下回った場合に、いずれかの前記アプリケーションプログラムを起動させる起動手順を前記コンピュータに実行させる請求項７記載の制御プログラム。
【請求項９】
請求項７又は８記載の制御プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、制御方法、制御プログラム、及び記録媒体に関し、特に複数のアプリケーションを制御する情報処理装置、制御方法、制御プログラム、及び記録媒体に関する。
【背景技術】
【０００２】
複合機等の様々な組み込み機器においては、限られたメモリ資源の中で複数のアプリケーションプログラム（以下、単に、「アプリケーション」という。）が動作している。このような組み込み機器におけるアプリケーションの実行形態としては、１プロセス上に１アプリが実行される「１プロセス１アプリ」が主流である。但し、１プロセス上に複数のアプリケーションが動作する「１プロセス複数アプリ」の形態も存在する（例えば、特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
「１プロセス複数アプリ」に関しては、複数のアプリケーションによってメモリ空間が共有される。したがって、いずれかのアプリケーションによるメモリ使用量の予想以上の増加等により、メモリ不足となった場合、その影響は、当該アプリケーションのみならず、他のアプリケーションにも波及する可能性がある。例えば、他のアプリケーションが動作不正又は動作不能となる可能性がある。
【０００４】
本発明は、上記の点に鑑みてなされたものであって、同一プロセス上で動作する複数のアプリケーションプログラムのメモリ使用量を適切に制御することのできる情報処理装置、制御方法、制御プログラム、及び記録媒体の提供を目的とする。
【課題を解決するための手段】
【０００５】
そこで上記課題を解決するため、本発明は、複数のアプリケーションプログラムが動作する一つのプロセスのメモリ使用量を監視する監視手段と、前記プロセスのメモリ使用量が第一の閾値を超えた場合に、いずれかの前記アプリケーションプログラムを停止させる制御手段とを有する。
【０００６】
このような情報処理装置では、同一プロセス上で動作する複数のアプリケーションプログラムのメモリ使用量を適切に制御することができる。
【発明の効果】
【０００７】
本発明によれば、同一プロセス上で動作する複数のアプリケーションプログラムのメモリ使用量を適切に制御することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。
【図２】本発明の実施の形態における画像形成装置のソフトウェア構成例を示す図である。
【図３】メモリ使用量に応じたＳＤＫアプリの制御処理の処理手順の一例を説明するためのシーケンス図である。
【図４】アプリ情報ファイルの記述内容の一例を示す図である。
【図５】制御情報ファイルの第一の例を示す図である。
【図６】制御情報ファイルの第二の例を示す図である。
【図７】制御情報ファイルの第三の例を示す図である。
【発明を実施するための形態】
【０００９】
以下、図面に基づいて本発明の実施の形態を説明する。本実施の形態では、画像形成装置を情報処理装置の一例として説明する。図１は、本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。同図において、画像形成装置１０は、コントローラ１１、スキャナ１２、プリンタ１３、モデム１４、操作パネル１５、ネットワークインタフェース１６、及びＳＤカードスロット１７等のハードウェアを有する。
【００１０】
コントローラ１１は、ＣＰＵ１１１、ＲＡＭ１１２、ＲＯＭ１１３、ＨＤＤ１１４、及びＮＶＲＡＭ１１５等を有する。ＲＯＭ１１３には、各種のプログラムやプログラムによって利用されるデータ等が記録されている。ＲＡＭ１１２は、プログラムをロードするための記憶領域や、ロードされたプログラムのワーク領域等として用いられる。ＣＰＵ１１１は、ＲＡＭ１１２にロードされたプログラムを処理することにより、各種の機能を実現する。ＨＤＤ１１４には、プログラムやプログラムが利用する各種のデータ等が記録される。ＮＶＲＡＭ１１５には、各種の設定情報等が記録される。
【００１１】
スキャナ１２は、原稿より画像データを読み取るためのハードウェア（画像読取手段）である。プリンタ１３は、印刷データを印刷用紙に印刷するためのハードウェア（印刷手段）である。モデム１４は、電話回線に接続するためのハードウェアであり、ＦＡＸ通信による画像データの送受信を実行するために用いられる。操作パネル１５は、ユーザからの入力の受け付けを行うためのボタン等の入力手段や、液晶パネル等の表示手段等を備えたハードウェアである。ネットワークインタフェース１６は、ＬＡＮ等のネットワーク（有線又は無線の別は問わない。）に接続するためのハードウェアである。ＳＤカードスロット１７は、ＳＤカード８０に記録されたプログラムを読み取るために利用される。すなわち、画像形成装置１０では、ＲＯＭ１１３に記録されたプログラムだけでなく、ＳＤカード８０に記録されたプログラムもＲＡＭ１１２にロードされ、実行されうる。なお、他の記録媒体（例えば、ＣＤ−ＲＯＭ又はＵＳＢ（Universal Serial Bus）メモリ等）によってＳＤカード８０が代替されてもよい。すなわち、ＳＤカード８０の位置付けに相当する記録媒体の種類は、所定のものに限定されない。この場合、ＳＤカードスロット１７は、記録媒体の種類に応じたハードウェアによって代替されればよい。
【００１２】
図２は、本発明の実施の形態における画像形成装置のソフトウェア構成例を示す図である。同図において、画像形成装置１０は、標準アプリ１５１、ＳＤＫアプリ１５２、ＳＤＫプラットフォーム１５３、ＶＭ（Virtual Machine）１５４、監視部１５５、制御対象選択部１５６、制御情報記憶部１５７、コントロールサービス１５８、及びＯＳ（Operating System）１５９等を有する。
【００１３】
標準アプリ１５１は、画像形成装置１０に標準的に（出荷時に予め）実装されているアプリケーションの集合である。同図では、スキャンアプリ１５１１、印刷アプリ１５１２、コピーアプリ１５１３、及びＦＡＸアプリ１５１４が例示されている。スキャンアプリ１５１１は、スキャンジョブを実行する。印刷アプリ１５１２は印刷ジョブを実行する。コピーアプリ１５１３は、コピージョブを実行する。ＦＡＸアプリ１５１４は、ＦＡＸの送信ジョブ又は受信ジョブを実行する。なお、各標準アプリ１５１は、それぞれ一つのプロセスとして起動される。
【００１４】
コントロールサービス１５８は、各種のハードウェアリソース等を制御するための機能を上位アプリケーション等に対して提供したり、画像形成装置１０の基盤的な機能等を実行したりするソフトウェアモジュール群である。
【００１５】
ＳＤＫアプリ１５２は、画像形成装置１０の出荷後において、画像形成装置１０の機能拡張等を図るためのプラグインとして追加的にインストールされるアプリケーションプログラムである。したがって、ＳＤＫアプリ１５２の機能は、所定のものに限定されない。例えば、各ＳＤＫアプリ１５２は、ＳＤカード８０から又はネットワークを介して画像形成装置１０にインストールされる。
【００１６】
ＳＤＫプラットフォーム１５３は、ＳＤＫアプリ１５２の実行環境及び共通機能を実現する。各ＳＤＫアプリ１５２は、ＳＤＫプラットフォーム１５３が提供するＡＰＩ（Application Program Interface）（以下、「ＳＤＫＡＰＩ」という。）を利用して開発される。例えば、ＳＤＫプラットフォーム１５３は、スキャン機能を利用させるためのＳＤＫＡＰＩ、印刷機能を利用させるためのＳＤＫＡＰＩ、コピー機能を利用させるためのＳＤＫＡＰＩ等をＳＤＫアプリ１５２に提供する。或るＳＤＫＡＰＩの呼び出しに応じ、ＳＤＫプラットフォーム１５３は、当該ＳＤＫＡＰＩに対応する要求をコントロールサービス１５８に入力し、画像形成装置１０に所定の処理を実行させる。
【００１７】
ＳＤＫＡＰＩは公開されており、サードベンダ等によってもＳＤＫアプリ１５２は開発されうる。また、ＳＤＫＡＰＩは、異機種間において平滑化されている。したがって、ＳＤＫアプリ１５２に関して、機種に応じて異なる実装が行われる必要性は低い。なお、ＳＤＫプラットフォーム１５３は、それ自体、画像形成装置１０にインストールされるアプリケーションの一種である。例えば、ＳＤＫプラットフォーム１５３は、ＳＤカード８０から又はネットワークを介して画像形成装置１０にインストールされる。
【００１８】
なお、本実施の形態では、便宜上、画像形成装置１０にインストール可能なプログラムとして、ＳＤＫアプリ１５２及びＳＤＫプラットフォーム１５３等が例示されているが、画像形成装置１０にインストール可能なプログラムは、ＳＤＫアプリ１５２及びＳＤＫプラットフォーム１５３等に限定されない。画像形成装置１０にインストール可能なプログラムには、画像形成装置１０に追加的にインストールされるプログラム全般が含まれうる。
【００１９】
同図において、ＳＤＫプラットフォーム１５３は、アプリ管理部１５３１及びアプリ情報記憶部１５３２等を含む。アプリ管理部１５３１は、ＳＤＫアプリ１５２のインストール及びアンインストールや、ＳＤＫアプリ１５２の起動制御及び停止制御等を実行する。アプリ情報記憶部１５３２は、ＳＤＫアプリ１５２の属性情報等が記述されたファイル（以下、「アプリ情報ファイル」という。）をＳＤＫアプリ１５２ごとに記憶する。例えば、各ＳＤＫアプリ１５２のインストールパッケージ（例えば、書庫ファイル）には、ＳＤＫアプリ１５２の実行形式ファイルと、アプリ情報ファイルとが含まれている。アプリ管理部１５３１は、ＳＤＫアプリ１５２のインストールの際に、当該ＳＤＫアプリ１５２のインストールパッケージに含まれているアプリ情報ファイルをアプリ情報記憶部１５３２に記録する。なお、アプリ情報記憶部１５３２は、例えば、ＨＤＤ１１４又はＮＶＲＡＭ１１５等と用いて実現可能である。
【００２０】
ＶＭ１５４は、例えば、Ｊａｖａ（登録商標）仮想マシンである。同図において、ＳＤＫアプリ１５２、ＳＤＫプラットフォーム１５３、監視部１５５、及び制御対象選択部１５６は、ＶＭ１５４上で動作するプログラムである。したがって、ＶＭ１５４がＪａｖａ（登録商標）仮想マシンである場合、ＶＭ１５４上で動作するプログラムは、Ｊａｖａ（登録商標）のプログラムである。
【００２１】
なお、ＶＭ１５４上のプログラム（破線Ｐによって囲まれた範囲）は、一つのプロセス内（又は一つのプロセス上）において動作する。以下、当該プロセスを「プロセスＰ」という。例えば、各ＳＤＫアプリ１５２は、プロセスＰ上においてそれぞれ一つのスレッドとして起動される。したがって、各ＳＤＫアプリ１５２は、ＯＳ１５９によってプロセスＰに割り当てられたメモリ資源等を共有する。すなわち、ＳＤＫアプリ１５２は、「１プロセス複数アプリ」の一例である。
【００２２】
監視部１５５は、プロセスＰに関するメモリ使用量（又はメモリ消費量ともいう。）を継続的に監視する。監視部１５５は、プロセスＰに関するメモリ使用量を予め設定された条件と比較し、当該条件が満たされた場合、その旨を制御対象選択部１５６に通知する。
【００２３】
制御対象選択部１５６は、監視部１５５からの通知に応じ、制御情報記憶部１５７が記憶する制御情報ファイルの記述内容（制御情報）に基づいて、起動制御又は停止制御の対象（制御対象）とするＳＤＫアプリ１５２を選択する。制御対象選択部１５６は、制御対象とされたＳＤＫアプリ１５２の起動又は停止をアプリ管理部１５３１に要求する。
【００２４】
制御情報記憶部１５７は、監視部１５５がプロセスＰに関するメモリ使用量と照合する上記条件や、制御対象選択部１５６が制御対象とするＳＤＫアプリ１５２を選択するための方針を示す情報等が記述された制御情報ファイルを記憶する。制御情報記憶部１５７は、例えば、ＨＤＤ１１４又はＮＶＲＡＭ１１５等と用いて実現可能である。
【００２５】
ＯＳ１５９は、いわゆるＯＳ（Operating System）である。
【００２６】
以下、画像形成装置１０が実行する処理手順について説明する。
【００２７】
図３は、メモリ使用量に応じたＳＤＫアプリの制御処理の処理手順の一例を説明するためのシーケンス図である。ステップＳ１０１〜Ｓ１０５は、例えば、画像形成装置１０の起動時において実行される。
【００２８】
ステップＳ１０１において、アプリ管理部１５３１は、画像形成装置１０にインストールされている各ＳＤＫアプリ１５２のアプリ情報ファイル（すなわち、アプリ情報記憶部１５３２が記憶するアプリ情報ファイル）の記述内容を、例えば、ＲＡＭ１１２に読み込む。
【００２９】
図４は、アプリ情報ファイルの記述内容の一例を示す図である。同図において、アプリ情報ファイルは、ＸＭＬ（eXtensible Markup Language）を用いて記述されている。但し、アプリ情報ファイルの形式は、ＣＳＶ（Comma Separated Values）等、他の形式であってもよい。なお、同図の行番号は、説明の便宜上付されたものである。
【００３０】
同図において、６行目から１０行目までは、当該アプリ情報ファイルが対象とするＳＤＫアプリ１５２（以下、「対象アプリ」という。）を識別するための情報である。例えば、７行目は、対象アプリの識別子（プロダクトＩＤ）を示す。
【００３１】
また、１２行目から１５行目までは、対象アプリを構成するファイルを示している。同図の例に係るＳＤＫアプリ１５２は、「ｄｅｍｏ．ｊａｒ」というファイル名のファイルによって構成されることが分かる。
【００３２】
１７行目から２３行目までは、対象アプリの動作条件に関する情報が含まれている。すなわち、１８行目は、対象アプリのメインクラスのクラス名（「ＤｅｍｏＡｐｐｌｉｃａｔｉｏｎ」）を示す。メインクラスとは、アプリ管理部１５３１から見て、操作対象とされるクラスをいう。すなわち、各ＳＤＫアプリ１５２のメインクラスは、アプリ管理部１５３１との間で約束されているインタフェース（メソッド等）を備える。アプリ管理部１５３１は、当該メソッド等を介して、各ＳＤＫアプリ１５２を制御する。
【００３３】
１９行目は、対象アプリの優先度を示す。本実施の形態において、優先度には、「ｈｉｇｈ（高）」、「ｍｉｄｄｌｅ（中）」、又は「ｌｏｗ（低）」が指定される。優先度は、制御対象とするＳＤＫアプリ１５２の選択等に用いられる。２０行目は、対象アプリを、プロセスＰのメモリ使用量に応じた制御対象の範囲に含めるか否かを示す。すなわち、「ａｕｔｏ−ａｐｐｌｉ−ｍａｎａｇｅ＝"ｔｒｕｅ"」である場合、対象アプリは、当該制御対象の範囲に含まれる。一方、「ａｕｔｏ−ａｐｐｌｉ−ｍａｎａｇｅ＝"ｆａｌｓｅ"」である場合、対象アプリは、当該制御対象の範囲に含まれない。なお、当該制御対象の範囲に含まれるか否かということは、プロセスＰのメモリ使用量に応じて、強制的又は自動的な停止又は起動の対象とされるか否かということを意味する。
【００３４】
２１行目は、対象アプリが必要とする最小限のメモリ量を示す。２２行目は、対象アプリが使用する最大のメモリ量を示す。同図の例において、対象アプリのメモリ使用量は、０．３ＭＢ以上、１．５ＭＢ以下であることが分かる。
【００３５】
続いて、アプリ管理部１５３１は、読み込んだアプリ情報ファイルの記述内容（以下、「アプリ情報」という。）を制御対象選択部１５６に通知する（Ｓ１０２）。当該通知では、アプリ情報の実体が転送されるのではなく、アプリ情報の読み込み先の記憶領域のアドレス値（ポインタ）が通知されてもよい。続いて、制御対象選択部１５６は、制御情報記憶部１５７より制御情報ファイルを読み込む（Ｓ１０３）。
【００３６】
図５は、制御情報ファイルの第一の例を示す図である。同図において、制御情報ファイルは、ＸＭＬを用いて記述されている。但し、制御情報ファイルの形式は、ＣＳＶ等、他の形式であってもよい。なお、行番号は、説明の便宜上付されたものである。
【００３７】
同図において、５行目は、制御対象の選択方針を示す。「ｍｅｍｏｒｙ−ｐｒｉｏｒｉｔｙ」は、優先度の高いＳＤＫアプリ１５２の起動状態が優先されることを示す。すなわち、優先度を基準として制御対象のＳＤＫアプリ１５２が選択されることを示す。６行目及び７行目は、起動又は停止等の制御条件（又はタイミング）を示す。すなわち、７行目は、プロセスＰのメモリ使用量が２８ＭＢ（上限の閾値）を超えた場合（超えたタイミングで）、５行目の選択方針によって選択されるＳＤＫアプリ１５２を強制的に停止させることを示す。６行目は、プロセスＰのメモリ使用量が２０ＭＢ（下限の閾値）を下回った場合（下回ったタイミングで）、停止中のＳＤＫアプリ１５２を起動させることを示す。したがって、同図では、プロセスＰのメモリ使用量が２８ＭＢを超えたこと、又はプロセスＰのメモリ使用量が２０ＭＢを下回ったことが、それぞれ制御条件となる。なお、上限の閾値及び下限の閾値は、プロセスＰのメモリ使用量の許容範囲に対して或る程度余裕の値であることが好ましい。具体的には、上限の閾値は、プロセスＰのメモリ使用量の許容範囲の上限−所定値であり、下限の閾値は、プロセスＰのメモリ使用量の許容範囲の上限＋所定値であることが好ましい。
【００３８】
なお、５行目の情報は、制御対象選択部１５６が利用し、６行目及び７行目の情報は、監視部１５５が利用する。
【００３９】
続いて、制御対象選択部１５６は、監視対象とするＳＤＫアプリ１５２の識別子と、制御情報ファイルより読み込まれた制御情報（図５）に含まれる制御条件とを、監視部１５５に通知する（Ｓ１０４）。監視対象とするＳＤＫアプリ１５２は、アプリ情報ファイルにおいて、２０行目（図４参照）の値が「ｔｒｕｅ」であるＳＤＫアプリ１５２ある。また、当該ＳＤＫアプリ１５２の識別子は、当該ＳＤＫアプリ１５２に係るアプリ情報ファイルの７行目より取得される。
【００４０】
続いて、制御対象選択部１５６は、監視部１５５に対して、プロセスＰのメモリ使用量の監視の開始を要求する（Ｓ１０５）。当該要求に応じ、監視部１５５は、プロセスＰに関して監視を開始する。なお、本実施の形態のように、監視部１５５がプロセスＰに含まれる場合、監視対象のプロセスは容易に特定可能である。但し、監視部１５５がプロセスＰに含まれない場合であっても、プロセスＰの識別情報が通知されれば、監視部１５５は、監視対象のプロセスを特定することができる。または、監視対象の各ＳＤＫアプリ１５２のメモリ使用量が監視され、その総和が制御条件と比較されてもよい。ＳＤＫアプリ１５２がＪａｖａ（登録商標）のプログラムである場合、Ｊａｖａ（登録商標）  Ｍａｎａｇｅｍｅｎｔ  Ｅｘｔｅｎｓｉｏｎｓ（ＪＭＸ）やＪａｖａ（登録商標）  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｔｏｏｌ  Ｉｎｔｅｒｆａｃｅ（ＪＶＭＴＩ）等の公知技術を利用することで、メモリ使用量を監視することができる。
【００４１】
監視の過程において、制御条件が満たされたことを検知すると、監視部１５５は、満たされた制御条件を制御対象選択部１５６に通知する（Ｓ１０６）。図５の例に基づけば、プロセスＰのメモリ使用量が上限の閾値を超えたこと、又はプロセスＰのメモリ使用量が下限の閾値を下回ったことが制御対象選択部１５６に通知される。
【００４２】
続いて、制御対象選択部１５６は、各ＳＤＫアプリ１５２のアプリ情報（図４）、制御情報（図５）、及び通知された制御条件（満たされた制御条件）等に基づいて、制御の形態（起動又は停止）と、制御対象とするＳＤＫアプリ１５２とを選択（又は判定）する（Ｓ１０７）。
【００４３】
具体的には、プロセスＰのメモリ使用量が上限の閾値を超えたことが通知された場合、制御対象選択部１５６は、起動状態のＳＤＫアプリ１５２のいずれかを停止すべきことを判断する。そこで、制御対象選択部１５６は、制御情報に示される選択方針に基づいて、監視対象であって、かつ、起動状態のＳＤＫアプリ１５２の中で、優先度が相対的に低いＳＤＫアプリ１５２を停止対象として選択する。各ＳＤＫアプリ１５２の優先度は、それぞれのアプリ情報を参照することにより特定することができる。また、各ＳＤＫアプリ１５２が起動状態であるか又は停止状態であるかは、アプリ管理部１５３１に問い合わせることにより判定可能である。アプリ管理部１５３１は、各ＳＤＫアプリ１５２の起動制御又は停止制御を行うため、各ＳＤＫアプリ１５２が起動状態であるか又は停止状態であるかを把握しているからである。なお、優先度に基づいて複数のＳＤＫアプリ１５２が選択された場合、例えば、最大のメモリ使用量又は最小のメモリ使用量が、当該複数のＳＤＫアプリ１５２の中で最大であるＳＤＫアプリ１５２に停止対象が限定されてもよい。当該ＳＤＫアプリ１５２が停止されれば、停止状態とされるＳＤＫアプリ１５２を最小限に抑えつつ、プロセスＰのメモリ使用量を効果的に低下させることができるからである。但し、優先度に基づいて選択された複数のＳＤＫアプリ１５２が停止対象とされてもよい。
【００４４】
一方、プロセスＰのメモリ使用量が下限の閾値を下回ったことが通知された場合、制御対象選択部１５６は、停止状態のＳＤＫアプリ１５２のいずれかを起動すべきことを判断する。そこで、制御対象選択部１５６は、監視対象であって、かつ、最小のメモリ使用量をプロセスＰの現在のメモリ使用量に加算しても上限の閾値を超えない停止状態のＳＤＫアプリ１５２の中で、優先度が相対的に高いＳＤＫアプリ１５２を起動対象として選択する。優先度に基づいて複数のＳＤＫアプリ１５２が選択された場合、例えば、最大のメモリ使用量又は最小のメモリ使用量が、当該複数のＳＤＫアプリ１５２の中で最小であるＳＤＫアプリ１５２に起動対象が限定されてもよい。当該ＳＤＫアプリ１５２が起動対象とされることにより、他のＳＤＫアプリ１５２が起動される場合に比べて、プロセスＰのメモリ使用量が上限の閾値を超える可能性を低下させることができるからである。
【００４５】
続いて、制御対象選択部１５６は、制御形態（起動又は停止）及び選択されたＳＤＫアプリ１５２の識別子を指定して、当該ＳＤＫアプリ１５２の起動又は停止をアプリ管理部１５３１に要求する（Ｓ１０８）。当該要求に応じ、アプリ管理部１５３１は、指定されたＳＤＫアプリ１５２を起動又は停止させる（Ｓ１０９）。ＳＤＫアプリ１５２が停止された場合、当該ＳＤＫアプリ１５２が使用していたメモリ領域は解放される。その結果、プロセスＰのメモリ使用量を低下させることができる。一方、ＳＤＫアプリ１５２が起動された場合、より多くのＳＤＫアプリ１５２を起動状態とすることができる。
【００４６】
上述したように、本実施の形態によれば、プロセスＰのメモリ使用量が上限の閾値を超えた場合、当該プロセスＰ上で動作するいずれかのＳＤＫアプリ１５２が停止される。したがって、同一のプロセスＰのメモリ使用量（すなわち、プロセスＰ上で動作する複数のＳＤＫアプリ１５２のメモリ使用量）を適切に制御することができる。
【００４７】
また、プロセスＰのメモリ使用量が下限の閾値を下回った場合、停止状態のＳＤＫアプリ１５２が起動される。この場合、起動状態のＳＤＫアプリ１５２を増加させることができ、ユーザにより多くのサービスを提供可能な状態を構築することができる。
【００４８】
なお、上記では、優先度に基づいて制御対象が選択される例について説明した。但し、他の基準に基づいて制御対象が選択されてもよい。
【００４９】
例えば、図６は、制御情報ファイルの第二の例を示す図である。同図に示される制御情報ファイルでは、５行目において、「ｍｅｍｏｒｙ−ｐａｎｅｌ−ｏｗｎｅｒ」が制御対象の選択方針として指定されている。これは、操作パネル１５のオーナ権限を有しているＳＤＫアプリ１５２の起動状態が優先されることを示す。操作パネル１５のオーナ権限とは、操作パネル１５を利用してユーザインタフェースを提供する権限をいう。当該権限を有するＳＤＫアプリ１５２は、ユーザからの指示入力や、ユーザへの情報提供等を操作パネル１５を介して行うことを示す。なお、操作パネル１５のオーナ権限を有さないＳＤＫアプリ１５２は、例えば、ネットワークを介して要求を受け付け、要求に応じた処理結果をネットワークを介して応答するようなサーバ型のアプリケーションである。
【００５０】
図６に示される制御情報ファイルが適用された場合、ステップＳ１０７において、制御対象選択部１５６は、停止対象を選択するときは、操作パネル１５のオーナ権限の無いＳＤＫアプリ１５２を優先的に選択する。また、制御対象選択部１５６は、起動対象を選択するときは、操作パネル１５のオーナ権限の有るＳＤＫアプリ１５２を優先的に選択する。
【００５１】
操作パネル１５のオーナ権限を有するＳＤＫアプリ１５２の起動状態が優先されることで、操作パネル１５を介して利用されるＳＤＫアプリ１５２の利用に関して利便性を向上させることができる。すなわち、アプリ管理部１５３１が操作パネル１５に表示させる、ＳＤＫアプリ１５２の制御用画面を介して、ユーザの手動によって、当該オーナ権限を有するＳＤＫアプリ１５２の起動指示が入力されるといった状況の発生を低減させることができる。
【００５２】
なお、操作パネル１５のオーナ権限の有無は、例えば、アプリ情報ファイルに記録されていればよい。
【００５３】
また、図７は、制御情報ファイルの第三の例を示す図である。同図に示される制御情報ファイルでは、５行目において、「ｍｅｍｏｒｙ−ｆｒｅｑｕｅｎｃｙ」が制御対象の選択方針として指定されている。これは、利用頻度の高い（利用回数の多い）ＳＤＫアプリ１５２の起動状態が優先されることを示す。
【００５４】
図７に示される制御情報ファイルが適用される場合、ステップＳ１０７において、制御対象選択部１５６は、停止対象を選択するときは、利用頻度が相対的に低いＳＤＫアプリ１５２を優先的に選択する。一方、制御対象選択部１５６は、起動対象を選択するときは、利用頻度が相対的に高いＳＤＫアプリ１５２を優先的に選択する。
【００５５】
利用頻度の高いＳＤＫアプリ１５２の起動状態が優先されることで、アプリ管理部１５３１が操作パネル１５に表示させる、ＳＤＫアプリ１５２の制御用画面を介して、ユーザの手動によって、ＳＤＫアプリ１５２の起動指示が入力されるといった状況の発生を低減させることができる。
【００５６】
なお、ＳＤＫアプリ１５２の利用頻度（又は利用回数）は、利用対象のＳＤＫアプリ１５２が選択された際に、アプリ管理部１５３１が、ＨＤＤ１１４又はＮＶＲＡＭ１１５等に記録すればよい。
【００５７】
また、優先度、操作パネル１５のオーナ権限、及び利用頻度等が組み合わされて制御対象が選択されてもよい。
【００５８】
更に、本実施の形態では、メモリ使用量を調整する例について説明したが、例えば、ＣＰＵ使用率等、他のハードウェア資源に関する使用状況に応じて、ＳＤＫアプリ１５２の起動又は停止が行われてもよい。
【００５９】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００６０】
１０          画像形成装置
１１          コントローラ
１２          スキャナ
１３          プリンタ
１４          モデム
１５          操作パネル
１６          ネットワークインタフェース
１７          ＳＤカードスロット
８０          ＳＤカード
１１１        ＣＰＵ
１１２        ＲＡＭ
１１３        ＲＯＭ
１１４        ＨＤＤ
１１５        ＮＶＲＡＭ
１５１        標準アプリ
１５２        ＳＤＫアプリ
１５３        ＳＤＫプラットフォーム
１５４        ＶＭ
１５５        監視部
１５６        制御対象選択部
１５７        及び制御情報記憶部
１５８        コントロールサービス
１５９        ＯＳ
１５１１      スキャンアプリ
１５１２      印刷アプリ
１５１３      コピーアプリ
１５１４      ＦＡＸアプリ
１５３１      アプリ管理部
１５３２      アプリ情報記憶部
【先行技術文献】
【特許文献】
【００６１】
【特許文献１】特開２００５−２６９４３９号公報
【図１】
0005708049.tif 000002
【図２】
0005708049.tif 000003
【図３】
0005708049.tif 000004
【図４】
0005708049.tif 000005
【図５】
0005708049.tif 000006
【図６】
0005708049.tif 000007
【図７】
0005708049.tif 000008