(57)【特許請求の範囲】
【請求項１】
記憶媒体が有するメモリ領域のうち、アプリケーションの実行に使用するヒープ領域のサイズの変更要因となる、前記アプリケーションの追加または削除の発生を検出する検出手段と、
前記検出手段により、前記変更要因となる前記アプリケーションの追加または削除の発生が検出された場合に、前記ヒープ領域を使用して実行する前記アプリケーションの数に応じて、前記ヒープ領域のサイズを変更する変更手段と、
を備えたことを特徴とする画像形成装置。
【請求項２】
記憶媒体が有するメモリ領域のうち、アプリケーションの実行に使用するヒープ領域のサイズの変更要因となる、前記アプリケーションの追加または削除の発生を検出する検出手段と、
前記検出手段により、前記変更要因として前記アプリケーションの追加または削除の発生が検出された場合に、前記ヒープ領域を使用して実行する前記アプリケーションが有する機能のうち、有効な機能の数に応じて前記ヒープ領域のサイズを変更する変更手段と、
を備えたことを特徴とする画像形成装置。
【請求項３】
記憶媒体が有するメモリ領域のうち、アプリケーションの実行に使用され、前記各アプリケーションを実行するために必要なメモリ容量を示すアプリケーション定義ファイルが記憶されたヒープ領域のサイズの変更要因となる、前記アプリケーションの追加または削除の発生を検出する検出手段と、
前記アプリケーションの追加または削除を前記変更要因の発生として検出した場合に、実行する前記各アプリケーションの前記アプリケーション定義ファイルが示すメモリ容量の総数に応じて前記ヒープ領域のサイズを変更する変更手段と、
を備えたことを特徴とする画像形成装置。
【請求項４】
前記検出手段は、前記ヒープ領域の不足によるメモリ不足エラーを前記変更要因の発生として検出し、
前記変更手段は、前記メモリ不足エラーが前記変更要因の発生として検出された場合に、予め設定された基準サイズ毎に、前記ヒープ領域のサイズを変更することを特徴とする請求項１から３のいずれか一に記載の画像形成装置。
【請求項５】
前記ヒープ領域のサイズの変更後、前記ヒープ領域のガーベージコレクションまたはＳＷＡＰ処理に要する処理時間を基準にして、前記記憶媒体のメモリ領域の増設を促す通知を行う通知手段をさらに備えたことを特徴とする請求項１から４のいずれか一に記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置に関する。
【背景技術】
【０００２】
Ｊａｖａ（登録商標）を搭載したシステムでは、メモリ管理が２重管理となっている。一つは、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）によるメモリ管理である。ＯＳによるメモリ管理は、大きなプログラムに対して、使用頻度の高いもののみ実メモリに置き、使用頻度の低いものをスワップ処理によりＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などの補助記憶装置に退避させて、メモリを有効に利用している。したがって、ＯＳによるメモリ管理によれば、見かけ上、メモリが足りなくなることがない。
【０００３】
もう一つは、そのＯＳ上にあるＪａｖａ（登録商標）によるメモリ管理である。Ｊａｖａ（登録商標）によるメモリ管理は、Ｊａｖａ（登録商標）プログラムを実行するための利用空間であるヒープ領域において、プログラムの実行に使用しなくなった領域やプログラムの実行に使用されている領域の隙間の領域を回収して、他のプログラムが使用可能な領域を増やすといったガーベージコレクション（以下、ＧＣとする）という管理機構でメモリを有効に利用している（特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ＧＣによるメモリ管理では、ヒープ領域において、プログラムを実行するための領域が無い場合、メモリが枯渇して“Ｏｕｔ  Ｏｆ  Ｍｅｍｏｒｙ”というエラーが発生する。パーソナルコンピュータなど、メモリが豊富にある機器においては、Ｊａｖａ（登録商標）プログラムを実行するためのヒープ領域を大きく確保することができるが、画像形成装置などの組み込み機器においては、Ｊａｖａ（登録商標）プログラムを実行するためのメモリ資源が限られているため、Ｊａｖａ（登録商標）動作環境において複数のＪａｖａ（登録商標）プログラムを起動させた場合、メモリが足りなくなりエラーが発生し、Ｊａｖａ（登録商標）プログラムを利用することができない、という課題がある。
【０００５】
また、Ｊａｖａ（登録商標）動作環境において複数のＪａｖａ（登録商標）プログラムを起動するために、ヒープ領域を大きくする方法もあるが、ヒープ領域を大きくすればするほど、ＧＣに要する処理時間が長くなり、機器の性能に影響を与える、という課題がある。
【０００６】
さらに、メモリを増設するなど、組み込み機器の構成により、Ｊａｖａ（登録商標）プログラムの実行に最適なサイズにヒープ領域を増減する方法もあるが、Ｊａｖａ（登録商標）プログラムが実行中はヒープ領域のサイズを変更することができない、という課題がある。
【０００７】
本発明は、上記に鑑みてなされたものであって、メモリの有効性の維持およびＧＣによる機器の性能への影響を抑えることができる画像形成装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明は、記憶媒体が有するメモリ領域のうち、アプリケーションの実行に使用するヒープ領域のサイズの変更要因となる、アプリケーションの追加または削除の発生を検出する検出手段と、検出手段により、変更要因となる前記アプリケーションの追加または削除の発生が検出された場合に、ヒープ領域を使用して実行する前記アプリケーションの数に応じて、ヒープ領域のサイズを変更する変更手段と、を備えたことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、Ｊａｖａ（登録商標）動作環境において、組み込み機器の状態に応じて適切にヒープ領域を確保することができるので、メモリの有効性の維持およびＧＣによる機器の性能への影響を抑えることができる、という効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、本実施の形態にかかる複合機のハードウェア構成を示すブロック図である。
【図２】図２は、コントローラ部で実行されるソフトウェアプログラムの構成を示す機能ブロック図である。
【図３】図３は、ソフトウェアプログラムの各プログラムに割り当てられるＲＡＭ内のメモリ領域の配置を示す図である。
【図４】図４は、ヒープ領域内の状態を示す図である。
【図５】図５は、本実施の形態にかかる複合機が備える特長的な機能構成を示すブロック図である。
【図６】図６は、ヒープ領域のサイズを大きくした後のＲＡＭ内のメモリ領域の配置を示す図である。
【図７】図７は、ヒープ領域のサイズの変更による複合機の性能面への影響を説明するための図である。
【図８】図８は、ＲＡＭのメモリ領域を増設した場合のＲＡＭ内のメモリ領域の配置を示す図である。
【図９】図９は、ヒープ領域のサイズの算出に用いるアプリケーション定義ファイルを示す図である。
【図１０】図１０は、Ｊａｖａ（登録商標）アプリケーションの追加または削除が発生した場合のヒープ領域のサイズの変更処理の流れを示すフローチャートである。
【図１１】図１１は、メモリ不足エラーが発生した場合のヒープ領域のサイズの変更処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、この発明にかかる画像形成装置の最良な実施の形態を詳細に説明する。なお、本実施の形態では、本発明にかかる画像形成装置を、コピー（複写）やプリントが可能な複合機に適用した例について説明する。
【００１２】
図１は、本実施の形態にかかる複合機のハードウェア構成を示すブロック図である。本実施の形態にかかる複合機１は、コントローラ部１００、Ｉ／Ｆ群１０７、エンジン部１０８、操作部１０９、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１１０などを備えている。エンジン部１０８は、電子写真を出力するためのプリンタなどのエンジンを制御するものである。操作部１０９は、タッチパネルやハードキーを備え、ユーザインターフェースとして機能するものである。ＨＤＤ１１０は、各種のソフトウェアプログラム等を格納するものである。Ｉ／Ｆ群１０７は、コントローラ部１００とＨＤＤ１１０を接続するものであって、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ネットワーク、Ｓ−ＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）などである。
【００１３】
コントローラ部１００は、ソフトウェアプログラムが実行されるマザーボードであり、チップセット（Ｃｈｉｐｓｅｔ）１０２を介して、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０４、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）  Ａ１０５、ＡＳＩＣ  Ｂ１０６が接続されている。
【００１４】
ＲＯＭ１０４は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）などを記憶した読み出し専用のメモリである。ＣＰＵ１０１は、コントローラ部１００の主要部であって、ＨＤＤ１１０およびＲＯＭ１０４に記憶したソフトウェアプログラム２００（図２参照）を実行することにより各部を集中的に制御するものである。ＲＡＭ１０３は、ＣＰＵ１０１がソフトウェアプログラム２００（図２参照）を実行するためのメモリ領域を有する記憶媒体である。ＡＳＩＣ  Ａ１０５およびＡＳＩＣ  Ｂ１０６は、それぞれエンジン部１０８および操作部１０９との通信制御を行うものである。
【００１５】
図２は、コントローラ部で実行されるソフトウェアプログラムの構成を示す機能ブロック図である。コントローラ部１００（ＣＰＵ１０１）で実行されるソフトウェアプログラム２００には、複合機１が有する複数の機能を実現するため、マルチタスク系のＵＮＩＸ（登録商標）ベースのＯＳ２０１が含まれている。本実施の形態にかかる複合機１には、このＯＳ２０１によりＪＶＭ（Ｊａｖａ（登録商標）  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）２０２が組み込まれている。ＪＶＭ２０２上には、後述するＪａｖａ（登録商標）アプリケーションＡ２０４、Ｊａｖａ（登録商標）アプリケーションＢ２０５、Ｊａｖａ（登録商標）アプリケーションＣ２０６を起動するＪａｖａ（登録商標）制御処理プログラム２０３が存在する。なお、Ｊａｖａ（登録商標）制御処理プログラム２０３は、マルチＶＭと呼ばれ、ＪＶＭ２０２に含まれるケースもある。
【００１６】
Ｊａｖａ（登録商標）アプリケーション２１０（Ｊａｖａ（登録商標）アプリケーションＡ２０４、Ｊａｖａ（登録商標）アプリケーションＢ２０５、およびＪａｖａ（登録商標）アプリケーションＣ２０６）は、ＪＶＭ２０２上において、マルチスレッドにより複数の処理を並行して行うマルチ動作を実現している。このマルチ動作は、ＪＶＭ２０２により管理されているものとする。また、Ｊａｖａ（登録商標）アプリケーション２１０は、ソフトウェアプログラム２００の機能を拡張または縮小するために、追加または削除が実施されるプラグインである。
【００１７】
さらに、本実施の形態にかかる複合機１は、ＪＶＭ２０２以外にも、ハードウェアを制御したり、複合機１のリソースを制御・管理したりするためのネイティブ制御処理プログラム２０７が組み込まれている。ネイティブ制御処理プログラム２０７には、ネットワークとの通信を制御するネットワーク制御プログラムや画像データに画像処理を行う画像データ処理プログラムなどが含まれている。また、ネイティブ制御処理プログラム２０７には、本実施の形態にかかる複合機１が備える特長的な機能を実現するヒープメモリ管理コントローラ２０８が含まれている。なお、ネイティブ制御処理プログラム２０７およびＪａｖａ（登録商標）動作環境２１１（ＪＶＭ２０２、Ｊａｖａ（登録商標）制御処理プログラム２０３、Ｊａｖａ（登録商標）アプリケーション２１０）は、ＯＳ２０１からみて、マルチタスクにより複数の処理を並行して行うマルチ動作を実現している。
【００１８】
ここで、図３を用いて、ＣＰＵ１０１により実行されるソフトウェアプログラム２００の各プログラムに割り当てられるＲＡＭ１０３内のメモリ領域の配置について説明する。図３は、ソフトウェアプログラムの各プログラムに割り当てられるＲＡＭ内のメモリ領域の配置を示す図である。
【００１９】
ＲＡＭ１０３内のメモリ領域は、ネイティブ制御処理プログラム２０７（画像データ処理プログラム）が画像処理を行う画像データを扱う画像処理用領域３０５、ＯＳ２０１を実行するためのＯＳ制御領域３０１、ネイティブ制御処理プログラム２０７を実行するためのネイティブプログラム領域３０４、およびＪａｖａ（登録商標）に関連するプログラム（Ｊａｖａ（登録商標）動作環境２１１）を実行するためのＪａｖａ（登録商標）動作領域３０２を有している。
【００２０】
Ｊａｖａ（登録商標）動作領域３０２は、Ｊａｖａ（登録商標）アプリケーション２１０の実行に使用するヒープ領域３０３を有している。なお、ヒープ領域３０３は、ＪＶＭ２０２の管轄で管理されるものとする。
【００２１】
ここで、図４を用いて、ヒープ領域３０３内の状態について説明する。図４は、ヒープ領域内の状態を示す図である。Ｊａｖａ（登録商標）アプリケーションＡ２０４、Ｊａｖａ（登録商標）アプリケーションＢ２０５、およびＪａｖａ（登録商標）アプリケーションＣ２０６がＣＰＵ１０１により実行された場合、Ｊａｖａ（登録商標）動作領域３０２内のヒープ領域３０３には、Ｊａｖａ（登録商標）アプリケーション領域Ａ４０１、Ｊａｖａ（登録商標）アプリケーション領域Ｂ４０２、およびＪａｖａ（登録商標）アプリケーション領域Ｃ４０３が設けられる。なお、Ｊａｖａ（登録商標）アプリケーション領域Ａ４０１がＪａｖａ（登録商標）アプリケーションＡ２０４に対応し、Ｊａｖａ（登録商標）アプリケーション領域Ｂ４０２がＪａｖａ（登録商標）アプリケーションＢ２０５に対応し、Ｊａｖａ（登録商標）アプリケーション領域Ｃ４０３がＪａｖａ（登録商標）アプリケーションＣ２０６に対応するものとする。
【００２２】
Ｊａｖａ（登録商標）動作領域３０２内のヒープ領域３０３には、Ｊａｖａ（登録商標）アプリケーション領域Ａ４０１、Ｊａｖａ（登録商標）アプリケーション領域Ｂ４０２、およびＪａｖａ（登録商標）アプリケーション領域Ｃ４０３のサイズは、図４に示すように、アプリケーションごとに異なる。また、図４に示すヒープ領域３０３内には、これ以上Ｊａｖａ（登録商標）アプリケーション２１０を追加することができない。仮に、新たなＪａｖａ（登録商標）アプリケーション２１０を追加した場合、ＪＶＭ２０２が、ヒープ領域３０３の不足によるメモリ不足エラー（Ｏｕｔ  Ｏｆ  Ｍｅｍｏｒｙ）の発生を検知して、実行中のＪａｖａ（登録商標）アプリケーション２１０が全て停止する。
【００２３】
従来、ＪＶＭ２０２によりメモリ不足エラーの発生が検知された場合、現在実行中のＪａｖａ（登録商標）アプリケーションＡ２０４、Ｊａｖａ（登録商標）アプリケーションＢ２０５、およびＪａｖａ（登録商標）アプリケーションＣ２０６のいずれかを削除して、新たなＪａｖａ（登録商標）アプリケーション２１０を追加しなければならなかった。若しくは、ガーベージコレクション（ＧＣ）により、新たなＪａｖａ（登録商標）アプリケーション２１０が使用可能な領域を増やすことも可能なケースもある。これらは、ヒープ領域３０３のサイズが固定されている限り、回避することができない処理である。
【００２４】
そこで、本実施の形態では、ネイティブ制御処理プログラム２０７に含まれるヒープメモリ管理コントローラ２０８により実現されるヒープメモリ管理コントローラ部５００（図５参照）により、ヒープ領域３０３のサイズを可変にし、複合機１の状態によってヒープ領域３０３のサイズを変更する。
【００２５】
次に、図５を用いて、図２に示すソフトウェアプログラム２００（ヒープメモリ管理コントローラ２０８）がＣＰＵ１０１に実行させる機能のうち、本実施の形態にかかる複合機１が備える特長的な機能について説明する。図５は、本実施の形態にかかる複合機が備える特長的な機能構成を示すブロック図である。
【００２６】
図５に示すように、複合機１は、ヒープサイズ管理制御部５０１、ＪＶＭ起動・終了制御部５０２、Ｊａｖａ（登録商標）アプリ・中断・再開・中止制御部５０３、動作環境の退避・復帰制御部５０４などを含むヒープメモリ管理コントローラ部５００を備えている。なお、ヒープ領域３０３のサイズの変更は、実際上、Ｊａｖａ（登録商標）動作環境２１１の変更そのものであるため、ヒープメモリ管理コントローラ部５００は、ＪＶＭ２０２自体を制御することになる。
【００２７】
ＪＶＭ起動・終了制御部５０２は、ＪＶＭ２０２の動作（起動および終了）を制御するものである。Ｊａｖａ（登録商標）動作環境２１１においては、現状、ヒープ領域３０３のサイズはＪＶＭ２０２の起動時に設定しなければならない。そのため、本実施の形態では、ＪＶＭ２０２の動作の制御をＪＶＭ起動・終了制御部５０２の管理下に置く必要がある。
【００２８】
Ｊａｖａ（登録商標）アプリ中断・再開・中止制御部５０３は、ＪＶＭ２０２によりメモリ不足エラーの発生が検知された場合に、各Ｊａｖａ（登録商標）アプリケーション２１０に自己退避を指示したり、メモリ不足エラーの解消によりＪａｖａ（登録商標）動作環境が復帰した後に、各Ｊａｖａ（登録商標）アプリケーション２１０に自己復帰を指示したりするものである。
【００２９】
動作環境の退避・復帰制御部５０４は、メモリ不足エラーの発生が検知された場合に、ＪＶＭ２０２およびヒープメモリ管理コントローラ２０８の実行に使用されている領域のヒープ領域３０３からの退避、およびＪＶＭ２０２およびヒープメモリ管理コントローラ２０８の実行に使用する領域のヒープ領域３０３への復帰を行うものである。
【００３０】
ヒープサイズ管理制御部５０１（検出手段）は、ＪＶＭ２０２を介して、当該ＪＶＭ２０２により検知されるメモリ不足エラー、Ｊａｖａ（登録商標）アプリケーション２１０の追加または削除など、ヒープ領域３０３のサイズの変更要因の発生を検出するものである。
【００３１】
また、ヒープサイズ管理制御部５０１（変更手段）は、ヒープ領域３０３のサイズの変更要因が検出された場合に、ヒープ領域３０３のサイズを変更するものである。より具体的には、ヒープサイズ管理制御部５０１は、メモリ不足エラーをヒープ領域３０３のサイズの変更要因の発生として検出した場合、想定外のメモリの使用や一時的なメモリリーク状態が発生したケースが考えられるため、ヒープ領域３０３のサイズを大きくすることで、メモリ不足エラーを回避する。また、ヒープサイズ管理制御部５０１は、Ｊａｖａ（登録商標）アプリケーション２１０の追加または削除をヒープ領域３０３のサイズの変更要因の発生として検出した場合、この時点で、ヒープ領域３０３内においてＪａｖａ（登録商標）アプリケーション２１０を実行するために使用される領域が増加または減少することが分かるので、ヒープ領域３０３のサイズを拡張または縮小する。なお、ヒープサイズ管理制御部５０１は、ヒープ領域３０３のサイズの変更要因が検出された場合に、予め設定された基準サイズ毎に、ヒープ領域のサイズを変更するものとする。
【００３２】
図６は、ヒープ領域のサイズを大きくした後のＲＡＭ内のメモリ領域の配置を示す図である。ヒープサイズ管理制御部５０１は、ヒープ領域３０３のサイズの変更要因（例えば、メモリ不足エラー、Ｊａｖａ（登録商標）アプリケーション２１０の追加など）が発生した場合、図６に示すように、ネイティブプログラム領域３０４のメモリ領域を削減し、ヒープ領域３０３を符号６０１で示すメモリ領域分増加させる。そして、ヒープ領域３０３のサイズを大きくすることにより、メモリ不足エラーの回避およびＪａｖａ（登録商標）アプリケーション２１０の追加によるメモリ不足の回避を実現する。なお、ネイティブプログラム領域３０４はＯＳ２０１の管理下にあるため、ネイティブプログラム領域３０４内のメモリ領域の残量が少なくなった場合、ＯＳ２０１が、当該ＯＳ２０１が有する機能であるＳＷＡＰ処理（図７参照）を実行することにより、ネイティブプログラム領域３０４におけるメモリ不足を回避する。
【００３３】
このように、メモリ不足エラーやＪａｖａ（登録商標）アプリケーション２１０の追加によるメモリ不足の回避が実現されることにより、複合機１全体として、エラーが発生しなくなり、複合機１の機能的な問題の発生を無くすことができる。ただし、ヒープ領域３０３のサイズを大きくすることによりメモリ不足を回避した場合、ＳＷＡＰ処理の頻度によっては、複合機１の性能面に影響を及ぼすことになる。なお、複合機１への性能面の影響が、使用者が許容できる範囲内であれば、問題はない。
【００３４】
次に、図７を用いて、ヒープ領域３０３のサイズの変更による複合機１の性能面への影響について説明する。図７は、ヒープ領域のサイズの変更による複合機の性能面への影響を説明するための図である。
【００３５】
ヒープサイズ管理制御部５０１は、ヒープ領域３０３のサイズを変更した場合、ヒープ領域３０３においてＪａｖａ（登録商標）アプリケーション２１０の実行に使用されていない未使用領域を回収するガーベージコレクション（以下、ＧＣとする）を任意に発生させる。ヒープ領域３０３のＧＣに要する時間は、ＧＣ範囲７０１（ヒープ領域３０３）が大きくなればなるほど長くなる。そのため、ヒープ領域３０３のサイズを大きくした場合、ＧＣにより複合機１が停止する時間が発生して当該複合機１の性能を低下させてしまう。
【００３６】
さらに、削減したネイティブプログラム領域３０４は、上述したように、ＯＳ２０１の管理下にあるため、少ないメモリ領域でもＳＷＡＰ処理を実行することにより、ネイティブ制御処理プログラム２０７を実行することができる。しかしながら、ＳＷＡＰ処理は、補助記憶装置であるＨＤＤ１１０に一時的にネイティブプログラム領域３０４に記憶する内容を退避したり、ＨＤＤ１１０からネイティブプログラム領域３０４に内容を書き戻したりするため、その処理に時間がかかってしまい複合機１の性能を低下させてしまう。
【００３７】
なお、ヒープサイズ管理制御部５０１（通知手段）は、操作部１０９を介して、この性能の低下（例えば、ＧＣまたはＳＷＡＰ処理に要する処理時間）を基準にして、ＲＡＭ１０３のメモリ領域の増設を促す通知を行うものとする。例えば、ヒープサイズ管理制御部５０１は、ＧＣまたはＳＷＡＰ処理に要する処理時間により、複合機１のコピー性能が通常の８割以下になった場合に、ＲＡＭ１０３のメモリ領域の増設を促す通知を行う。または、ヒープサイズ管理制御部５０１は、Ｊａｖａ（登録商標）アプリケーション２１０の追加に伴ってヒープ領域３０３のサイズが多くなり、ＧＣに要する処理時間が所定のサイズのメモリ領域のＧＣに要する処理時間の２倍以上になった場合に、ＲＡＭ１０３のメモリ領域の増設を促す通知を行う。
【００３８】
次に、図８を用いて、ＲＡＭ１０３のメモリ領域を増設した場合のＲＡＭ１０３内のメモリ領域の配置について説明する。図８は、ＲＡＭのメモリ領域を増設した場合のＲＡＭ内のメモリ領域の配置を示す図である。メモリ領域増設前のＲＡＭ１０３内のメモリ領域の配置は、図６に示すメモリ領域の配置と同様、ネイティブプログラム領域３０４のメモリ領域を削減し、ヒープ領域３０３を符号６０１で示すメモリ領域分増加させたメモリ領域の配置となっている。一方、メモリ領域増設後のＲＡＭ１０３内のメモリ領域の配置は、削減したネイティブプログラム領域３０４のメモリ領域が元のサイズ（図３に示すネイティブプログラム領域３０４のサイズ）に戻り、ヒープ領域３０３のメモリ領域がメモリ領域の増設前と同じサイズに維持されている。なお、ＲＡＭ１０３のメモリ領域をさらに増設することにより、ネイティブプログラム領域３０４やヒープ領域３０３により多くの空き領域を持たせることも可能である。
【００３９】
次に、図９を用いて、ヒープ領域３０３のサイズの変更要因の発生が検出された場合に、変更するヒープ領域３０３のサイズを算出する方法の一例について説明する。図９は、ヒープ領域のサイズの算出に用いるアプリケーション定義ファイルを示す図である。
【００４０】
ヒープサイズ管理制御部５０１は、ヒープ領域３０３のサイズの変更要因の発生が検出された場合、まず、ヒープ領域３０３内に配置された各Ｊａｖａ（登録商標）アプリケーション領域９０１から、当該Ｊａｖａ（登録商標）アプリケーション領域９０１に対応するＪａｖａ（登録商標）アプリケーション２１０のプログラムサイズ、データサイズ、当該Ｊａｖａ（登録商標）アプリケーション２１０のプログラムを実行するために必要なメモリ容量（ヒープ使用量）など、当該Ｊａｖａ（登録商標）アプリケーション２１０に関する情報を含むアプリケーション定義ファイル９０２を読み出す。そして、ヒープサイズ管理制御部５０１は、読み出した各Ｊａｖａ（登録商標）アプリケーション２１０のアプリケーション定義ファイル９０２に従って、ヒープ領域３０３のサイズを算出する。
【００４１】
具体的には、ヒープサイズ管理制御部５０１は、ヒープ領域３０３を使用して実行するＪａｖａ（登録商標）アプリケーション２１０の数に応じてヒープ領域のサイズを変更する。例えば、１つのＪａｖａ（登録商標）アプリケーション２１０を実行するために使用するヒープ領域３０３内におけるメモリ領域の基準サイズを１０ＭＢと定義して、実行するＪａｖａ（登録商標）アプリケーション２１０の数分のヒープ領域３０３のサイズを算出する。したがって、３つのＪａｖａ（登録商標）アプリケーション２１０を実行する場合には、３０ＭＢのヒープ領域３０３にサイズを変更する。
【００４２】
また、ヒープサイズ管理制御部５０１は、ヒープ領域３０３を使用して実行するＪａｖａ（登録商標）アプリケーション２１０が有する機能のうち、有効な機能の数に応じてヒープ領域３０３のサイズを変更する。例えば、１つの有効な機能に実行するために使用するヒープ領域３０３内におけるメモリ領域の基準サイズを２ＭＢと定義して、実行中のＪａｖａ（登録商標）アプリケーション２１０が有する有効な機能分のヒープ領域３０３のサイズを算出する。したがって、３つのＪａｖａ（登録商標）アプリケーション２１０が有する有効な機能が、それぞれ「５」，「６」，「４」であった場合、３０ＭＢのヒープ領域３０３にサイズを変更する。
【００４３】
さらに、ヒープサイズ管理制御部５０１は、ヒープ領域３０３を使用して実行する各Ｊａｖａ（登録商標）アプリケーション２１０のアプリケーション定義ファイル９０２が示すメモリ容量の総数に応じてヒープ領域３０３のサイズを変更する。
【００４４】
なお、本実施の形態では、ヒープサイズ管理制御部５０１は、上述の算出方法により算出したサイズと、Ｊａｖａ（登録商標）動作環境２１１を実行するために必要なメモリ領域のサイズを合算した値を、変更するヒープ領域３０３のサイズとして算出するものとする。
【００４５】
次に、図１０を用いて、Ｊａｖａ（登録商標）アプリケーション２１０の追加または削除が発生した場合のヒープ領域３０３のサイズの変更処理の流れについて説明する。図１０は、Ｊａｖａ（登録商標）アプリケーションの追加または削除が発生した場合のヒープ領域のサイズの変更処理の流れを示すフローチャートである。
【００４６】
Ｊａｖａ（登録商標）アプリケーション２１０の追加または削除が実施されると（ステップＳ１００１）、ＪＶＭ２０２からヒープサイズ管理制御部５０１に対してヒープ領域３０３のサイズの変更を要求するサイズ変更通知が送信される。すると、ヒープサイズ管理制御部５０１が、Ｊａｖａ（登録商標）アプリケーション２１０の追加または削除をヒープ領域３０３のサイズの変更要因の発生として検出するとともに、Ｊａｖａ（登録商標）アプリ中断・再開・中止制御部５０３が、ＪＶＭ２０２を再起動させるために、現在実行中のＪａｖａ（登録商標）アプリケーション２１０を終了させる（ステップＳ１００２）。続いて、ＪＶＭ起動・終了制御部５０２は、ＪＶＭ２０２を終了させる（ステップＳ１００３）。
【００４７】
次に、ヒープサイズ管理制御部５０１は、上述したヒープ領域３０３のサイズの算出方法を用いて、変更するヒープ領域３０３のサイズを算出する（ステップＳ１００４）。なお、ヒープ領域３０３のサイズの算出方法は、予め任意の算出方法を選定しておくものとする。次いで、ヒープサイズ管理制御部５０１は、算出したヒープ領域３０３のサイズを、ＪＶＭ２０２の起動設定に再定義することにより、ヒープ領域３０３のサイズを変更する（ステップＳ１００５）。そして、ＪＶＭ起動・終了制御部５０２が、再定義されたＪＶＭ２０２の起動設定に基づいてＪＶＭ２０２を起動するとともに（ステップＳ１００６）、Ｊａｖａ（登録商標）アプリ中断・再開・中止制御部５０３がＪａｖａ（登録商標）アプリケーション２１０を起動する（ステップＳ１００７）。
【００４８】
次に、図１１を用いて、メモリ不足エラーが発生した場合のヒープ領域３０３のサイズの変更処理の流れについて説明する。図１１は、メモリ不足エラーが発生した場合のヒープ領域のサイズの変更処理の流れを示すフローチャートである。
【００４９】
ＪＶＭ２０２がメモリ不足エラーの発生を検知すると（ステップＳ１１０１）、ＪＶＭ２０２からヒープサイズ管理制御部５０１に対してヒープ領域３０３のサイズの変更を要求するサイズ変更通知が送信される。すると、ヒープサイズ管理制御部５０１が、メモリ不足エラーをヒープ領域３０３のサイズの変更要因の発生として検出するとともに、動作環境の退避・復帰制御部５０４が現在起動中のＪａｖａ（登録商標）アプリケーション２１０を退避させる（ステップＳ１１０２）。
【００５０】
ここで、現在起動中のＪａｖａ（登録商標）アプリケーション２１０を終了させないのは、既にヒープ領域３０３が足りない状態なので、当該現在起動中のＪａｖａ（登録商標）アプリケーション２１０をこれ以上動作させることができないからである。仮に、現在起動中のＪａｖａ（登録商標）アプリケーション２１０を終了させるために、当該現在起動中のＪａｖａ（登録商標）アプリケーション２１０を動作させた場合、さらに、メモリ不足エラーが発生する。そのため、本実施の形態では、Ｊａｖａ（登録商標）動作環境２１１以外（動作環境の退避・復帰制御部５０４）からＪａｖａ（登録商標）アプリケーション２１０の退避を制御する必要がある。
【００５１】
現在起動中のＪａｖａ（登録商標）アプリケーション２１０の退避が完了すると、ＪＶＭ起動・終了制御部５０２が、ＪＶＭ２０２を終了させる（ステップＳ１１０３）。次に、ヒープサイズ管理制御部５０１は、上述したヒープ領域３０３のサイズの算出方法を用いて、変更するヒープ領域３０３のサイズを算出する（ステップＳ１１０４）。なお、ヒープ領域３０３のサイズの算出方法は、予め任意の算出方法（アプリケーションの数に応じて算出するか、有効機能の数に応じて算出するか、メモリ容量に応じて算出するか、若しくは各アプリケーションが使用中のメモリ領域の何割分増加させるかなど）を選定しておくものとする。次いで、ヒープサイズ管理制御部５０１は、算出したヒープ領域３０３のサイズを、ＪＶＭ２０２の起動設定に再定義することにより、ヒープ領域３０３のサイズを変更する（ステップＳ１１０５）。そして、ＪＶＭ起動・終了制御部５０２が、再定義されたＪＶＭ２０２の起動設定に基づいてＪＶＭ２０２を起動するとともに（ステップＳ１１０６）、動作環境の退避・復帰制御部５０４がＪａｖａ（登録商標）アプリケーション２１０を復帰させる（ステップＳ１１０７）。
【００５２】
このように、本実施の形態にかかる複合機１によれば、メモリ不足エラーやＪａｖａ（登録商標）アプリケーション２１０の追加または削除など、ヒープ領域３０３のサイズの変更要因を検出した場合に、ヒープ領域３０３のサイズを変更することにより、Ｊａｖａ（登録商標）動作環境において、複合機１の状態に応じて適切にヒープ領域３０３を確保することができるので、メモリの有効性の維持およびＧＣによる複合機１の性能への影響を抑えることができる。
【００５３】
なお、上記実施の形態では、本発明の画像形成装置を、コピー機能、プリンタ機能、スキャナ機能およびファクシミリ機能のうち少なくとも２つの機能を有する複合機に適用した例を挙げて説明するが、複写機、プリンタ、スキャナ装置、ファクシミリ装置等の画像形成装置であればいずれにも適用することができる。
【符号の説明】
【００５４】
１  複合機
１０３  ＲＡＭ
２０４  Ｊａｖａ（登録商標）アプリケーションＡ
２０５  Ｊａｖａ（登録商標）アプリケーションＢ
２０６  Ｊａｖａ（登録商標）アプリケーションＣ
２１０  Ｊａｖａ（登録商標）アプリケーション
３０３  ヒープ領域
５０１  ヒープサイズ管理制御部
９０２  アプリケーション定義ファイル
【先行技術文献】
【特許文献】
【００５５】
【特許文献１】特許第４１７０９８８号公報
【図１】
0005446602.tif 000002
【図２】
0005446602.tif 000003
【図３】
0005446602.tif 000004
【図４】
0005446602.tif 000005
【図５】
0005446602.tif 000006
【図６】
0005446602.tif 000007
【図７】
0005446602.tif 000008
【図８】
0005446602.tif 000009
【図９】
0005446602.tif 000010
【図１０】
0005446602.tif 000011
【図１１】
0005446602.tif 000012