(57)【要約】【課題】ＧＣ機能の発生により有限なメモリ領域の利用が非効率化したり、開発者にメモリ管理の負担を強いたりすることなく、コピーやプリント等の画像形成装置の通常動作の生産性を高めることができる、画像形成装置、ガーベージコレクション機能の発生制御方法、プログラム、および記憶媒体を提供する。【解決手段】複合機１がＧＣ発生可能状態にあることが検出された場合に、ＧＣ機能を発生させることにより、複合機１の通常動作中にＧＣ機能が発生する確率を減らすことができるので、ＧＣ機能の発生により有限なメモリ領域の利用が非効率化したり、開発者にメモリ管理の負担を強いたりすることなく、コピーやプリント等の画像形成装置の通常動作の生産性を高めることができる。【選択図】図２
2011034305.tif 000002
【特許請求の範囲】
【請求項１】
記憶媒体が有するメモリ領域であって、自装置に通常動作を行わせるためのソフトウェアプログラムの実行に使用され、動的に確保および開放が可能なヒープ領域のうち、使用済み領域の開放および使用中領域の再配置を行うガーベージコレクション機能を発生させるガーベージコレクタ部と、
前記ガーベージコレクション機能の発生により前記ソフトウェアプログラムの実行が停止する時間よりも長い時間、前記通常動作が中断するＧＣ発生可能状態を検出する検出手段と、
前記ＧＣ発生可能状態を検出した場合に、前記ガーベージコレクタ部を制御して前記ガーベージコレクション機能を発生させる制御手段と、
を備えたことを特徴とする画像形成装置。
【請求項２】
前記通常動作を行うことができない異常状態を検出する検出手段をさらに備え、
前記制御手段は、さらに、前記異常状態を検出した場合に、前記ガーベージコレクタ部を制御して前記ガーベージコレクション機能を発生させることを特徴とする請求項１に記載の画像形成装置。
【請求項３】
待機中の前記通常動作があるか否かを判断する判断手段をさらに備え、
前記制御手段は、さらに、待機中の前記通常動作がないと判断した場合に、前記ガーベージコレクタ部を制御して前記ガーベージコレクション機能を発生させることを特徴とする請求項１または２に記載の画像形成装置。
【請求項４】
最後に前記ガーベージコレクション機能が発生してからの経過時間を計測する計測手段をさらに備え、
前記ガーベージコレクタ部は、さらに、計測された前記経過時間が所定の時間間隔に達する毎に、前記ガーベージコレクション機能を発生させ、
前記制御手段は、前記ガーベージコレクタを制御して前記ガーベージコレクション機能を発生させた際に、前記計測手段による前記経過時間の計測をリセットすることを特徴とする請求項１から３のいずれか一に記載の画像形成装置。
【請求項５】
前記制御手段は、前記計測手段により計測した前記経過時間が前記所定の時間間隔より短い所定時間に達していない場合、前記ガーベージコレクタ部による前記ガーベージコレクション機能の発生を中止することを特徴とする請求項４に記載の画像形成装置。
【請求項６】
画像形成装置で実行されるガーベージコレクション機能の発生制御方法であって、
前記画像形成装置は、ソフトウェアプログラムを記憶する記憶手段を備え、
ガーベージコレクタ部が、記憶媒体が有するメモリ領域であって、自装置に通常動作を行わせるためのソフトウェアプログラムの実行に使用され、動的に確保および開放が可能なヒープ領域のうち、使用済み領域の開放および使用中領域の再配置を行うガーベージコレクション機能を発生させる工程と、
検出手段が、前記ガーベージコレクション機能の発生により前記ソフトウェアプログラムの実行が停止する時間よりも長い時間、前記通常動作が中断するＧＣ発生可能状態を検出する工程と、
制御手段が、前記ＧＣ発生可能状態を検出した場合に、前記ガーベージコレクタ部を制御して前記ガーベージコレクション機能を発生させる工程と、
を含むことを特徴とするガーベージコレクション機能の発生制御方法。
【請求項７】
検出手段が、前記通常動作を行うことができない異常状態を検出する工程と、
前記制御手段が、前記異常状態を検出した場合に、前記ガーベージコレクタ部を制御して前記ガーベージコレクション機能を発生させる工程と、
をさらに含むことを特徴とする請求項６に記載のガーベージコレクション機能の発生制御方法。
【請求項８】
判断手段が、待機中の前記通常動作があるか否かを判断する工程と、
前記制御手段が、待機中の前記通常動作がないと判断した場合に、前記ガーベージコレクタ部を制御して前記ガーベージコレクション機能を発生させる工程と、
をさらに含むことを特徴とする請求項６または７に記載のガーベージコレクション機能の発生制御方法。
【請求項９】
計測手段が、最後に前記ガーベージコレクション機能が発生してからの経過時間を計測する工程と、
前記ガーベージコレクタ部が、計測された前記経過時間が前記所定の時間間隔に達する毎に、前記ガーベージコレクション機能を発生させる工程と、
前記制御手段が、前記ガーベージコレクタを制御して前記ガーベージコレクション機能を発生させた際に、前記計測手段による前記経過時間の計測をリセットする工程と、
をさらに含むことを特徴とする請求項６から８のいずれか一に記載のガーベージコレクション機能の発生制御方法。
【請求項１０】
前記制御手段が、前記計測手段により計測した前記経過時間が前記所定の時間間隔より短い所定時間に達していない場合、前記ガーベージコレクタ部による前記ガーベージコレクション機能の発生を中止する工程をさらに含むことを特徴とする請求項９に記載のガーベージコレクション機能の発生制御方法。
【請求項１１】
請求項６から１０のいずれか一に記載のガーベージコレクション機能の発生制御方法をコンピュータに実行させるためのプログラム。
【請求項１２】
請求項１１に記載のプログラムを記憶したコンピュータにより読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ管理としてガーベージコレクション機能を採用したプログラムによって動作する画像形成装置、ガーベージコレクション機能の発生制御方法、プログラム、および記憶媒体に関する。
【背景技術】
【０００２】
プログラムの実行時に使用する記憶媒体のメモリ領域は、大別すると以下の３つの領域に分けられる。
（１）プログラムの開始から終了までの間、コードや定数等の記憶用に割り当てられる領域
（２）プログラムの開始から終了までの間、大域データや静的データ等の記憶用に割り当てられる領域
（３）プログラムの実行に伴って割り当てられたり開放されたりする領域
さらに、（３）の領域は、局所変数の記憶用に割り当てられるスタック領域と動的データの記憶用に割り当てられるヒープ領域の２つの領域に分けられる。
【０００３】
ところで、ヒープ領域は、有限であるため、プログラムの実行に伴い、動的データの記憶用に割り当てられて消費されていくと、ヒープ領域中の未使用領域（動的データが記憶されていない領域）は減少する。そして、ヒープ領域中の未使用領域が不足すると、新たに発生した動的データを記憶させることができない事態に陥るため、ヒープ領域中の未使用領域が不足する前に、使用済み領域（不要な動的データが記憶された領域）を開放することにより、使用済み領域を未使用領域に変更しなければならない。
【０００４】
従来、複合機や複写機等の画像形成装置に組み込むソフトウェアプログラムの開発には、アセンブラ等の低級言語やＣ等の手続き型プログラミングなどの高級言語が用いられてきた。これらの言語を用いたソフトウェアプログラムの開発手法においては、ヒープ領域中の未使用領域の確保や使用済み領域の開放は開発者に委ねられているため、開発者はこれらのメモリ管理を考慮しながらソフトウェアプログラムを設計または実装する必要があった。この開発手法によれば、開発者の能力次第で、有限なヒープ領域を最大限に効率良く利用することができるが、開発者の設計ミスにより、使用済み領域の開放が行われないと、未使用領域が枯渇してしまったり、開放済みの領域にアクセスしようとしてプログラムの実行時にエラーを引き起こしたりというトラブルが付きまとっていた。
【０００５】
しかし、近年、複合機や複写機等の画像形成装置に組み込むソフトウェアプログラムの開発においても、ハードウェアの高性能化に伴い、Ｊａｖａ（登録商標）言語等の高級言語が使用される傾向にあり、これらのＪａｖａ（登録商標）言語等の高級言語の中には、動的データの記憶用に割り当てられる未使用領域の確保処理や使用済み領域の開放処理を自動化する言語処理系が組み込まれている言語もある。以下、Ｊａｖａ（登録商標）言語を例にして、未使用領域の確保処理や使用済み領域の開放処理を自動化する言語処理系について説明する。
【０００６】
ここで、Ｊａｖａ（登録商標）言語は、Ｊａｖａ（登録商標）仮想マシン（以下、Ｊａｖａ（登録商標）ＶＭとする）と呼ばれる仮想実行環境上にて動作する言語である。なお、Ｊａｖａ（登録商標）ＶＭ上では、複数のＪａｖａ（登録商標）プログラムがスレッドと呼ばれる単位で切り替えられて実行可能である。このＪａｖａ（登録商標）ＶＭでは、ヒープ領域中の未使用領域の確保処理および使用済み領域の開放処理が自動で行われるため、開発者はこれらのメモリ管理を意識せずにソフトウェアプログラムの開発が可能である。使用済み領域の開放処理は、ガーベージコレクション機能（以下、ＧＣ機能とする）と呼ばれ、Ｊａｖａ（登録商標）ＶＭにより確保している領域が少なくなったときに、Ｊａｖａ（登録商標）ＶＭによって自動的に実行される。ＧＣ機能は、使用済み領域の開放処理だけでなく、コンパクションと呼ばれ、動的データが記憶された使用中の領域を再配置して、使用中の領域を連続した領域にまとめる機能も実現している。より具体的には、ＧＣ機能のアルゴリズムとしては、まず、ヒープ領域中の各領域が、スタック領域などの他の領域から辿れるか否かを判断し、他の領域から辿れない領域を使用済み領域と判断する。その後、使用済み領域は開放され、使用中の領域は再配置される。
【０００７】
しかしながら、このようなＧＣ機能は、メモリ領域の再配置を伴うため、ＧＣ機能の実行中には同じＪａｖａ（登録商標）ＶＭ上の他のスレッドの動作は完全に一時中断されてしまう。そのため、画像形成装置におけるコピーやプリントなどのプログラムの実行中にＧＣ機能の実行が発生すると、ＧＣ機能のスレッドに処理が奪われてしまい、コピーやプリントなどの他のスレッドの動作が停止してしまい、結果としてプログラムのスループット（すなわち、コピーやプリントなどの動作）の生産性が低下する。また、ＧＣ機能の実行中は、同一Ｊａｖａ（登録商標）ＶＭ上の全ての動作が中断するため、ユーザからの要求の受け付けもできなくなるなど、リアルタイム応答性能も低下する。さらに、ＧＣ機能の実行が発生するタイミングは、開発者には予想することができず、ＧＣ機能の実行が発生するタイミングを制御するためには、Ｊａｖａ（登録商標）ＶＭ内のＧＣ機能の発生を制御するパラメータを調整するしかない。
【０００８】
そこで、ＧＣ機能のアルゴリズムを他のプログラムとの並行処理が可能なマルチスレッドにし、マルチスレッド下でＧＣ機能のスレッドを実行中も、他のプログラムのスレッドとの切り替えを可能にする技術が開示されている。このような他のプログラムとの並行処理が可能なＧＣ機能では、ＧＣ機能の実行による停止時間を短くし、リアルタイム応答性能を向上させる効果があるが、ＧＣ機能のアルゴリズムが複雑化し、さらにＧＣ機能の実行に要するトータルの実行時間が増大してＧＣ機能のスループットが低下してしまう、という問題がある。
【０００９】
また、ＧＣ機能のアルゴリズムをマルチスレッドにし、かつマルチＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）またはマルチコアコアＣＰＵを搭載した環境で、ＧＣ機能と他のプログラムを同時に実行する技術が開示されている。このＧＣ機能のアルゴリズムによれば、ＧＣ機能のうち、他のプログラムと同時に実行できる処理は、マルチスレッドにより他のプログラムと並行して実行し、他のプログラムと同時に実行できない処理はＧＣ機能のスレッドを複数立ち上げて複数のＣＰＵに割り当てることにより、ＧＣ機能の実行に要するトータルの実行時間を減らすことができる。さらには、ＧＣ機能のスループットやリアルタイム応答性能を向上させることができる。しかしながら、この技術でも、コピーやプリントなどのプログラムの実行中にＧＣ機能の実行が発生した場合には、コピーやプリントなどの動作の生産性の低下は避けられない。
【００１０】
そのため、ＧＣ機能のアルゴリズムを変更することで画像形成装置の性能の向上を図るのではなく、ＧＣ機能が発生するタイミングを制御することで画像形成装置の性能の向上を図る技術が開示されている（特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら上記特許文献１に記載の技術では、ＧＣ機能の発生を禁止した区間におけるヒープ領域内の未使用領域の枯渇を防ぐために、予備のヒープ領域として余分なメモリ領域を確保したり、ヒープ領域内の未使用領域が十分にあってもＧＣ機能を発生させたり、などの対策が必要であり、有限なメモリ領域の利用が非効率になるという、課題がある。これはメモリ領域の利用制限が厳しい組み込み型のソフトウェアプログラムの開発において、重大な課題である。また、ＧＣ機能の発生要求をヒープ領域が減少した際に限るかを、ソフトウェアプログラムの作成時に開発者がＧＣ機能の発生箇所およびＧＣ機能の禁止箇所を指定して行うことは、ＧＣ機能により自動化されたはずのメモリ管理を開発者が行わなければならなくなる、という課題もある。
【００１２】
本発明は、上記に鑑みてなされたものであって、ＧＣ機能の発生により有限なメモリ領域の利用が非効率化したり、開発者にメモリ管理の負担を強いたりすることなく、コピーやプリント等の画像形成装置の通常動作の生産性を高めることができる、画像形成装置、ガーベージコレクション機能の発生制御方法、プログラム、および記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上述した課題を解決し、目的を達成するために、本発明は、記憶媒体が有するメモリ領域であって、自装置に通常動作を行わせるためのソフトウェアプログラムの実行に使用され、動的に確保および開放が可能なヒープ領域のうち、使用済み領域の開放および使用中領域の再配置を行うガーベージコレクション機能を発生させるガーベージコレクタ部と、前記ガーベージコレクション機能の発生により前記ソフトウェアプログラムの実行が停止する時間よりも長い時間、前記通常動作が中断するＧＣ発生可能状態を検出する検出手段と、前記ＧＣ発生可能状態を検出した場合に、前記ガーベージコレクタ部を制御して前記ガーベージコレクション機能を発生させる制御手段と、を備えたことを特徴とする。
【００１４】
また、本発明は、画像形成装置で実行されるガーベージコレクション機能の発生制御方法であって、前記画像形成装置は、ソフトウェアプログラムを記憶する記憶手段を備え、ガーベージコレクタ部が、記憶媒体が有するメモリ領域であって、自装置に通常動作を行わせるためのソフトウェアプログラムの実行に使用され、動的に確保および開放が可能なヒープ領域のうち、使用済み領域の開放および使用中領域の再配置を行うガーベージコレクション機能を発生させる工程と、検出手段が、前記ガーベージコレクション機能の発生により前記ソフトウェアプログラムの実行が停止する時間よりも長い時間、前記通常動作が中断するＧＣ発生可能状態を検出する工程と、制御手段が、前記ＧＣ発生可能状態を検出した場合に、前記ガーベージコレクタ部を制御して前記ガーベージコレクション機能を発生させる工程と、を含むことを特徴とする。
【００１５】
また、本発明は、上述したガーベージコレクション機能の発生制御方法をコンピュータに実行させるプログラムである。
【００１６】
また、本発明は、上述したプログラムを記憶したコンピュータにより読み取り可能な記憶媒体である。
【発明の効果】
【００１７】
本発明によれば、通常動作中のＧＣ機能の発生確率を減らすことができるので、ＧＣ機能の発生により有限なメモリ領域の利用が非効率化したり、開発者にメモリ管理の負担を強いたりすることなく、コピーやプリント等の画像形成装置の通常動作の生産性を高めることができる、という効果を奏する。
【図面の簡単な説明】
【００１８】
【図１】図１は、第１実施の形態にかかる複合機のハードウェア構成を示すブロック図である。
【図２】図２は、コントローラ部で実行されるソフトウェアプログラムの機能ブロック図である。
【図３】図３は、第１実施の形態にかかる複合機の機能構成を示すブロック図である。
【図４】図４は、従来のガーベージコレクション機能の発生制御処理を示す説明図である。
【図５】図５は、第１実施の形態にかかるＧＣ機能の発生制御処理を示す説明図である。
【図６】図６は、第１実施の形態にかかるＧＣ機能の発生制御処理の流れを示すフローチャートである。
【図７】図７は、コントローラ部で実行されるソフトウェアプログラムの機能ブロック図である。
【図８】図８は、第２実施の形態にかかる複合機の機能構成を示すブロック図である。
【図９】図９は、第２実施の形態にかかるＧＣ機能の発生制御処理の流れを示すフローチャートである。
【図１０】図１０は、第３実施の形態にかかる複合機の機能構成を示すブロック図である。
【図１１】図１１は、第３実施の形態にかかるＧＣ機能の発生制御処理を示す説明図である。
【図１２】図１２は、第３実施の形態にかかるＧＣ機能の発生制御処理の流れを示すフローチャートである。
【図１３】図１３は、第４実施の形態にかかる複合機の機能構成を示すブロック図である。
【図１４】図１４は、従来のＧＣ機能の発生制御処理を示す説明図である。
【図１５】図１５は、第４実施の形態にかかるＧＣ機能の発生制御処理を示す説明図である。
【図１６】図１６は、第５実施の形態にかかるＧＣ機能の発生制御処理を示す説明図である。
【図１７】図１７は、第５実施の形態にかかる制御部の具体的な処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下に添付図面を参照して、この発明にかかる画像形成装置、ガーベージコレクション機能の発生制御方法、プログラム、および記憶媒体の最良な実施の形態を詳細に説明する。なお、本実施の形態では、本発明にかかる画像形成装置、ガーベージコレクション機能の発生制御方法、プログラム、および記憶媒体を、コピー（複写）やプリントが可能な複合機に適用した例について説明する。
【００２０】
（第１実施の形態）
図１は、第１実施の形態にかかる複合機のハードウェア構成を示すブロック図である。本実施の形態にかかる複合機１は、コントローラ部１００、Ｉ／Ｆ群１０７、エンジン部１０８、操作部１０９、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１１０などを備えている。エンジン部１０８は、電子写真を出力するためのエンジンを制御するものである。操作部１０９は、タッチパネルやハードキーを備え、ユーザインターフェースとして機能するものである。ＨＤＤ１１０は、各種のソフトウェアプログラム等を格納するものである。Ｉ／Ｆ群１０７は、コントローラ部１００とＨＤＤ１１０を接続するものであって、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ネットワーク、Ｓ−ＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）などである。
【００２１】
コントローラ部１００は、ソフトウェアプログラムが実行されるマザーボードであり、チップセット１０２を介して、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０４、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）  Ａ１０５、ＡＳＩＣ  Ｂ１０６が接続されている。
【００２２】
ＲＯＭ１０４は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）などを記憶した読み出し専用のメモリである。ＣＰＵ１０１は、コントローラ部１００の主要部であって、ＨＤＤ１１０およびＲＯＭ１０４に記憶したソフトウェアプログラム２（図２参照）を実行することにより各部を集中的に制御するものである。ＲＡＭ１０３は、ＣＰＵ１０１の作業エリアとして機能してバッファ等の役割を果たすメモリ領域を有する記憶媒体であって、複合機１にコピーやプリントなどの通常動作を行わせるためのプログラムであるコピープログラム２０７やプリントプログラム２０８（図２参照）の実行に使用され、動的に確保および開放が可能なヒープ領域を有するものである。ＡＳＩＣ  Ａ１０５およびＡＳＩＣ  Ｂ１０６は、それぞれエンジン部１０８および操作部１０９との通信制御を行うものである。
【００２３】
図２は、コントローラ部で実行されるソフトウェアプログラムの機能ブロック図である。コントローラ部１００（ＣＰＵ１０１）で実行されるソフトウェアプログラム２は、ＯＳ２００、ネイティブコードプログラム２０１、Ｊａｖａ（登録商標）ＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）２０４、Ｊａｖａ（登録商標）コードプログラム２０６などを備えている。
【００２４】
ＯＳ２００は、多くのソフトウェアプログラムから共通して利用される基本的な機能を提供し、コントローラ部１００全体を管理するソフトウェアである。そして、ＯＳ２００上では、ネイティブコードプログラム２０１、およびＪａｖａ（登録商標）プログラムを実行するためのＪａｖａ（登録商標）ＶＭ２０４が実行される。さらに、Ｊａｖａ（登録商標）ＶＭ２０４上では、コピーやプリントなどの動作を実行するためのプログラムを含むＪａｖａ（登録商標）コードプログラム２０６が実行される。
【００２５】
Ｊａｖａ（登録商標）コードプログラム２０６は、複合機１においてコピーやプリントなどの通常動作を行わせるためのプログラムであるコピープログラム２０７やプリントプログラム２０８、複合機１において実行されるジョブ管理を実行するジョブ管理プログラム２０９、Ｊａｖａ（登録商標）プログラムＡ２１０、その他、ＦＡＸや文書蓄積など複合機１が有する各種機能を実行するためのＪａｖａ（登録商標）のバイトコードプログラムを有している。
【００２６】
また、Ｊａｖａ（登録商標）ＶＭ２０４は、ガーベージコレクション機能（以下、ＧＣ機能とする）を持つガーベージコレクタ２０５を備えている。なお、ＧＣ機能の詳細について後述する。
【００２７】
さらに、ネイティブコードプログラム２０１は、複合機１の状態を監視するための機器状態監視プログラム２０３、およびガーベージコレクタ２０５によるＧＣ機能の発生を制御するためのＧＣ発生制御プログラム２０２を備えている。なお、機器状態監視プログラム２０３およびＧＣ発生制御プログラム２０２は、Ｊａｖａ（登録商標）ＶＭ２０４上で実行させることができるが、機器状態監視プログラム２０３およびＧＣ発生制御プログラム２０２がＧＣ機能の発生による影響を受けることがないように、ネイティブコードプログラム２０１として配置されるのが好ましい。
【００２８】
次に、図２に示すソフトウェアプログラムがＣＰＵ１０１に実行させる機能のうち、本実施の形態にかかる複合機１が備える特長的な機能について説明する。図３は、第１実施の形態にかかる複合機の機能構成を示すブロック図である。図３に示すように、複合機１は、ガーベージコレクタ部３０１、検出部３０２、制御部３０３などを備えている。
【００２９】
ガーベージコレクタ部３０１は、Ｊａｖａ（登録商標）ＶＭ２０４およびガーベージコレクタ２０５により実現され、ＲＡＭ１０３のヒープ領域のうち、不要な動的データが記憶されたメモリ領域など、コピープログラム２０７やプリントプログラム２０８などの実行に使用された使用済み領域の開放、およびコピープログラム２０７やプリントプログラム２０８の実行に使用中領域の再配置（つまり、連続したメモリ領域にまとめ）を行うＧＣ機能を発生させる。
【００３０】
検出部３０２は、機器状態監視プログラム２０３により実現され、コピーする原稿を複合機１にセットするために図示しないＡＤＦ（Ａｕｔｏ  Ｄｏｃｕｍｅｎｔ  Ｆｅｅｄｅｒ）をオープンにしている状態など、ＧＣ機能の発生によりコピープログラム２０７の実行が停止する時間よりも長い時間、複合機１の通常動作であるコピーが中断するＧＣ発生可能状態を検出するものである。なお、図示しないＡＤＦをオープンして原稿をセットするために要する時間は、短く見積もっても２，３秒であり、ＧＣ機能の発生によりコピープログラム２０７の実行が停止する時間よりも長いものとする。なお、本実施の形態では、複合機１がＧＣ発生可能状態にあるか否かを示す通知（以下、機器状態変化通知とする）が、エンジン部１０８からＡＳＩＣ  Ａ１０５を通じて、検出部３０２に知らされるものとする。
【００３１】
制御部３０３は、ＧＣ発生制御プログラム２０２により実現され、検出部３０２によりＧＣ発生可能状態が検出された場合に、ガーベージコレクタ部３０１を制御してＧＣ機能を発生させるものである。
【００３２】
ここで、図４および図５を用いて、従来のＧＣ機能の発生制御処理、および本実施の形態に係るＧＣ機能の発生制御処理について説明する。図４は、従来のガーベージコレクション機能の発生制御処理を示す説明図である。図５は、第１実施の形態にかかるＧＣ機能の発生制御処理を示す説明図である。
【００３３】
従来のＧＣ機能の発生制御処理では、図４に示すように、画像形成装置においてコピーが実行されている間に、ＧＣ機能を発生させる必要が生じた場合、コピーを中断してＧＣ機能を発生させ、ＧＣ機能が終了した後、中断していたコピーを再開していた。そのため、ＧＣ機能が発生している間は、ＧＣ機能のスレッドに処理を奪われてしまい、コピーが停止するため、コピーの生産性が低下していた。
【００３４】
一方、本実施の形態にかかるＧＣ機能の発生制御処理では、図５に示すように、複合機１がＧＣ発生可能状態にある間に、強制的にＧＣ機能を発生させる。そのため、コピーなどの複合機１の通常動作が中断されてＧＣ機能が発生することを防止できるので、複合機１の生産性を高めることができる。
【００３５】
次に、図６を用いて、本実施の形態にかかるＧＣ機能の発生制御処理の流れについて説明する。図６は、第１実施の形態にかかるＧＣ機能の発生制御処理の流れを示すフローチャートである。
【００３６】
まず、検出部３０２は、現在の複合機１の状態を示す機器状態変化通知を制御部３０３に通知する（ステップＳ６０１）。
【００３７】
制御部３０３は、検出部３０２からの機器状態変化通知を待っている（ステップＳ６０２）。そして、制御部３０３は、検出部３０２から機器状態変化通知を受けると、機器状態変化通知がＧＣ発生可能状態にあることを示しているか否かを判断する（ステップＳ６０３）。なお、機器状態変化通知がＧＣ発生可能状態でないことを示している場合（ステップＳ６０３：Ｎｏ）、ステップＳ５０２に戻り、次の機器状態変化通知を待つ。
【００３８】
一方、機器状態変化通知がＧＣ発生可能状態にあることを示している場合（ステップＳ６０３：Ｙｅｓ）、つまり、検出部３０２によりＧＣ発生可能状態が検出された場合に、制御部３０３は、ガーベージコレクタ部３０１に対してＧＣ機能の発生を要求する（ステップＳ６０４）。
【００３９】
ガーベージコレクタ部３０１は、制御部３０３からＧＣ機能の発生が要求されると、ＧＣ機能を発生させる（ステップＳ６０５）。なお、制御部３０３は、ＧＣ機能が終了した後、再びステップＳ６０２に戻り、次の機器状態変化通知を待つ。
【００４０】
このように、本実施の形態にかかる複合機１によれば、複合機１がＧＣ発生可能状態にあることが検出された場合に、ＧＣ機能を発生させることにより、複合機１の通常動作中にＧＣ機能が発生する確率を減らすことができるので、ＧＣ機能の発生により有限なメモリ領域の利用が非効率化したり、開発者にメモリ管理の負担を強いたりすることなく、コピーやプリント等の画像形成装置の通常動作の生産性を高めることができる。特に、本実施の形態のように、複合機１が備える図示しないＡＤＦがオープンしてコピーを行うというユーザのユースケースに対して、図示しないＡＤＦをオープンしてコピーが行われる直前をＧＣ発生可能状態として検出して、ＧＣ機能を発生させることにより、直後のコピーの最中にＧＣ機能が発生しないことが期待され、コピーの生産性の低下を防止することができる。
【００４１】
（第２実施の形態）
第１実施の形態では、図示しないＡＤＦがオープンした状態をＧＣ発生可能状態として検出して、ＧＣ機能を強制的に発生させていたが、ＧＣ機能が発生している間にプリントの要求が入った場合には、ＧＣ機能の発生によりプリントに対して即座に応答することができず、複合機１の応答性の低下や生産性の低下が起こる可能性がある。そこで、本実施の形態では、複合機１が異常状態にある場合に、ＧＣ機能を発生させる。なお、以下の説明では、第１実施の形態と同様の箇所については説明を省略し、異なる箇所について説明する。
【００４２】
図７は、コントローラ部で実行されるソフトウェアプログラムの機能ブロック図である。コントローラ部１００（ＣＰＵ１０１）で実行されるソフトウェアプログラム７００が備えるネイティブコードプログラム７０１は、機器状態監視プログラム２０３の代わりに、エラー監視プログラム７０２を備える点、およびＧＣ発生制御プログラム２０２とは処理が異なるＧＣ発生制御プログラム７０３を備える点において、第１実施の形態と異なる。
【００４３】
次に、図７に示すソフトウェアプログラムが実行させる機能のうち、本実施の形態にかかる複合機１が備える特長的な機能について説明する。図８は、第２実施の形態にかかる複合機の機能構成を示すブロック図である。図８に示すように、複合機１は、ガーベージコレクタ部３０１、検出部８０１、制御部８０２などを備えている。
【００４４】
検出部８０１は、エラー監視プログラム７０２により実現され、用紙切れやカバーオープンなど、複合機１の通常動作が行えないがコントローラ部１００に問題がない状態（以下、異常状態）を検出するものである。本実施の形態では、複合機１が異常状態にあるか否かを示す通知（以下、エラー発生通知とする）が、エンジン部１０８からＡＳＩＣ  Ａ１０５を通じて、検出部８０１に知らされるものとする。なお、検出部８０１は、エンジン部１０８からのエラー発生通知に加え、ＡＳＩＣ  Ｂ１０６を通じた操作部１０９からの通知や、コントローラボード内でのハードウェアの異常やソフトウェアの異常を異常状態として検出しても良い。
【００４５】
制御部８０２は、ＧＣ発生制御プログラム７０３により実現され、検出部８０１により異常状態が検出された場合に、ガーベージコレクタ部３０１を制御してＧＣ機能を発生させるものとする。
【００４６】
次に、図９を用いて、本実施の形態にかかるＧＣ機能の発生制御処理の流れについて説明する。図９は、第２実施の形態にかかるＧＣ機能の発生制御処理の流れを示すフローチャートである。
【００４７】
検出部８０１は、エラー発生通知を制御部８０２に通知する（ステップＳ９０１）。
【００４８】
制御部８０２は、検出部８０１からのエラー発生通知を待っている（ステップＳ９０２）。そして、制御部８０２は、検出部８０１からエラー発生通知を受けると、エラー発生通知がＧＣ機能を発生可能な異常状態にあることを示しているか否かを判断する（ステップＳ９０３）。なお、エラー発生通知が異常状態にないことを示している場合（ステップＳ９０３：Ｎｏ）、ステップＳ９０２に戻り、次にエラー発生通知を待つ。
【００４９】
一方、エラー発生通知が異常状態にあることを示している場合（ステップＳ９０３：Ｙｅｓ）、つまり、検出部８０１により異常状態が検出された場合に、制御部８０２は、ガーベージコレクタ部３０１に対してＧＣ機能の発生を要求する（ステップＳ９０４）。
【００５０】
ガーベージコレクタ部３０１は、制御部８０２からＧＣ機能の発生が要求されると、ＧＣ機能を発生させる（ステップＳ９０５）。なお、制御部８０２は、ＧＣ機能が終了した後、再びステップＳ９０２に戻り、次のエラー発生通知を待つ。
【００５１】
このように、本実施の形態にかかる複合機１によれば、複合機１が異常状態にあるときに、強制的にＧＣ機能を発生させることにより、複合機１の通常動作が発生しないときにＧＣ機能を発生させることができるので、ＧＣ機能の発生による応答性および複合機１の生産性の低下を防止することができる。
【００５２】
（第３実施の形態）
上述の実施の形態では、ＧＣ発生可能状態や異常状態など、複合機１の状態を元にして、ＧＣ機能を強制的に発生させていたが、ヒープ領域の空き状態に関しては全く感知せずに、ＧＣ機能を発生させているため、ＧＣ機能を発生させる必要がないときにＧＣ機能が発生してしまう可能性がある。そこで、本実施の形態では、複合機１の通常動作の終了後など、複合機１が待機状態にあるときに、ＧＣ機能を発生させる。なお、以下の説明では、上述の実施の形態と同様の箇所については説明を省略し、異なる箇所について説明する。
【００５３】
まず、図１０を用いて、本実施の形態にかかる複合機１が備える特長的な機能について説明する。図１０は、第３実施の形態にかかる複合機の機能構成を示すブロック図である。図１０に示すように、複合機１は、ガーベージコレクタ部３０１、検出部３０２（８０１）、制御部１００２、判断部１００１などを備えている。
【００５４】
判断部１００１は、ジョブ管理プログラム２０９により実現され、コピーやプリントなど複合機１の通常動作（ジョブ）を管理するものであって、ジョブが完了したとき（すなわち、通常動作が終了したとき）、待機中のジョブがあるか否かを判断するものである。そして、判断部１００１は、待機中のジョブがないと判断した場合に、制御部１００２に対して、直前の動作が終了し、現在、ジョブが残っていないことを通知する。
【００５５】
制御部１００２は、ＧＣ発生制御プログラム２０２（７０３）により実現され、制御部３０３（８０２）が行う処理に加え、判断部１００１により待機中のジョブがないと判断された場合に、ガーベージコレクタ部３０１を制御してＧＣ機能を発生させるものである。
【００５６】
図１１は、第３実施の形態にかかるＧＣ機能の発生制御処理を示す説明図である。制御部１００２は、図１１に示すように、判断部１００１によりジョブが残っていないことを通知された場合に（つまり、待機中のジョブがないと判断した場合に）、ガーベージコレクタ部３０１を制御してＧＣ機能を発生させる。なお、本実施の形態では、制御部１００２を介してガーベージコレクタ部３０１に対してＧＣ機能の発生が要求されるが、これに限定するものではなく、判断部１００１がガーベージコレクタ部３０１に対して直接ＧＣ機能の発生を要求しても良い。
【００５７】
次に、図１２を用いて、本実施の形態にかかるＧＣ機能の発生制御処理の流れについて説明する。図１２は、第３実施の形態にかかるＧＣ機能の発生制御処理の流れを示すフローチャートである。
【００５８】
まず、判断部１００１は、ジョブが完了した際に、待機中のジョブが残っているか否かを判断する（ステップＳ１２０１）。なお、判断部１００１は、待機中のジョブがなくなるまで、ジョブが完了する度に、待機中のジョブが残っているか否かを判断する（ステップＳ１２０１：Ｎｏ）。
【００５９】
判断部１００１は、待機中のジョブがないと判断した場合（ステップＳ１２０１：Ｙｅｓ）、制御部１００２に対して、ジョブが残っていないことを通知する（ステップＳ１２０２）。
【００６０】
制御部１００２は、判断部１００１からのジョブが残っていないことの通知を待っている（ステップＳ１２０３）。そして、制御部１００２は、判断部１００１からジョブが残っていないことが通知されると、ガーベージコレクタ部３０１に対してＧＣ機能の発生を要求する（ステップＳ１２０４）。
【００６１】
ガーベージコレクタ部３０１は、制御部１００２からＧＣ機能の発生が要求されると、ＧＣ機能を発生させる（ステップＳ１２０５）。なお、制御部１００２は、ＧＣ機能が終了した後、再びステップＳ１２０３に戻り、次の通知を待つ。
【００６２】
このように、本実施の形態にかかる複合機１によれば、待機中のジョブがないと判断した場合、つまり、直前のコピーやプリントなどの複合機１の通常動作によりヒープ領域が使用されたことが想定されるタイミングでＧＣ機能を強制的に発生させることにより、ＧＣ機能を発生させる必要性が高いときにＧＣ機能を発生させることができるので、ヒープ領域の空き領域の拡張を効率的に行うことができる。
【００６３】
（第４実施の形態）
本実施の形態は、ヒープ領域の保全のため、ヒープ領域の空き状態に関わらず定期的にＧＣ機能を発生させる機能が搭載されている例である。なお、上述の実施の形態と同様の箇所について説明を省略し、異なる箇所について説明する。
【００６４】
まず、図１３を用いて、本実施の形態にかかる複合機１が備える特長的な機能について説明する。図１３は、第４実施の形態にかかる複合機の機能構成を示すブロック図である。図１３に示すように、複合機１は、ガーベージコレクタ部１３０１、検出部３０２（８０１）、制御部１３０２、判断部１００１、計測部１３０３などを備えている。
【００６５】
計測部１３０３は、Ｊａｖａ（登録商標）ＶＭ２０４およびガーベージコレクタ２０５により実現され、最後にＧＣ機能が発生してからの経過時間ｎを計測するタイマーである。なお、所定の時間間隔Ｎは、複合機１の各通常動作にかかる各動作時間やＧＣ機能に要する時間に比べて十分に長い時間であり、例えば、１時間程度を想定している。
【００６６】
ガーベージコレクタ部１３０１は、Ｊａｖａ（登録商標）ＶＭ２０４およびガーベージコレクタ２０５により実現され、ガーベージコレクタ部３０１が行う処理に加え、計測部１３０３により計測された経過時間ｎが所定の時間間隔Ｎに達する毎に、ＧＣ機能を発生させる。ここで、所定の時間間隔Ｎは、複合機１の各通常動作にかかる各動作時間やＧＣ機能に要する時間に比べて十分に長い時間であり、例えば、１時間程度を想定している。
【００６７】
制御部１３０２は、ＧＣ発生制御プログラム２０２（７０３）により実現され、制御部３０３（８０２、１００２）が行う処理に加え、自身がガーベージコレクタ部１３０１を制御してＧＣ機能を発生させた際に、計測部１３０３による経過時間ｎの計測をリセットする。
【００６８】
ここで、図１４および図１５を用いて、従来のＧＣ機能の発生制御処理および本実施の形態にかかるＧＣ機能の発生制御処理について説明する。図１４は、従来のＧＣ機能の発生制御処理を示す説明図である。図１５は、第４実施の形態にかかるＧＣ機能の発生制御処理を示す説明図である。
【００６９】
上述の実施の形態では、ヒープ領域の空き領域によらずにＧＣ機能を強制的に発生させている。そのため、上述の実施の形態にかかる複合機１のガーベージコレクタ部３０１に対して、所定の時間間隔Ｎ毎にＧＣ機能を発生させる機能を搭載した場合、図１４に示すように、最後のＧＣ機能の発生から極めて短い時間しか経たないうちに連続して、制御部３０３（８０２、１００２）よるＧＣ機能の強制的な発生が生じる可能性がある。
【００７０】
一方、本実施の形態では、図１５に示すように、制御部１３０２が、自身がガーベージコレクタ部１３０１を制御してＧＣ機能を強制的に発生させた場合に、計測部１３０３をリセットする。さらに、制御部１３０２が、ヒープ領域の空き領域に関わらないＧＣ機能の発生制御を適度なタイミングで行うことにより、制御部１３０２によるＧＣ機能の発生制御が行われた直後に、ガーベージコレクタ部１３０１によりＧＣ機能が発生されることを防止できるので、複合機１の生産性の低下を防止することができる。
【００７１】
より具体的には、制御部１３０２は、上述の実施の形態で示した図６、図９、および図１２に示すフローチャートのステップＳ６０４、ステップＳ９０４、およびステップＳ１２０４において、計測部１３０３のリセットをガーベージコレクタ部１３０１に要求するものとする。
【００７２】
このように、本実施の形態にかかる複合機１によれば、ＧＣ機能を強制的に発生させた際に、計測部１３０３をリセットすることにより、強制的なＧＣ機能の発生直後に、ヒープ領域の空き状態によらない定期的にＧＣ機能の連続発生を防止することができるので、複合機１の生産性を高めることができる。
【００７３】
（第５実施の形態）
第４実施の形態では、ＧＣ機能を強制的に発生させた際に、定期的なＧＣ機能の発生のためのタイマーをリセットすることにより、強制的なＧＣ機能の発生直後に定期的なＧＣ機能が発生することを防止しているが、逆に、定期的なＧＣ機能の発生直後に強制的なＧＣ機能が発生する可能性が残っており、極めて近い時間間隔でＧＣ機能が連続発生する状況は完全に解消されていない。そこで、本実施の形態では、定期的なＧＣ機能の発生から所定の時間経過後、強制的なＧＣ機能を発生させるものである。なお、以下の説明では、第４実施の形態と同様の箇所については説明を省略し、異なる箇所について説明する。
【００７４】
制御部１３０２は、計測部１３０３による経過時間ｎが、所定の時間間隔Ｎより短い所定時間Ｔを経過しているか否かを判断する。これにより、制御部１３０２は、経過時間ｎが所定時間Ｔ（所定の時間間隔Ｎに比べて非常に短い時間（例えば、１分程度）とする）に達していなければ、ＧＣ機能が発生した直後であると判断することができる。
【００７５】
そして、制御部１３０２は、計測部１３０３により計測した経過時間ｎが所定時間Ｔより短い場合、ＧＣ機能が発生した直後であると判断して、ガーベージコレクタ部１３０１によるＧＣ機能の発生を中止する。
【００７６】
ここで、図１６を用いて、本実施の形態にかかるＧＣ機能の発生制御処理について説明する。図１６は、第５実施の形態にかかるＧＣ機能の発生制御処理を示す説明図である。本実施の形態によれば、図１６に示すように、定期的なＧＣ機能が発生してから所定時間Ｔが経過した後に、強制的なＧＣ機能を発生させることができる。
【００７７】
次に、図１７を用いて、本実施の形態にかかる制御部１３０２の具体的な処理の流れについて説明する。図１７は、第５実施の形態にかかる制御部の具体的な処理の流れを示すフローチャートである。
【００７８】
まず、制御部１３０２は、ＧＣ発生可能状態が検出された場合、異常状態が検出された場合、複合機１が待機状態にあると判断された場合など、当該制御部１３０２内での判断によりＧＣ機能を発生可能と判断すると（ステップＳ１７０１）、計測部１３０３から経過時間ｎを示すタイマー情報を取得する（ステップＳ１７０２）。
【００７９】
次いで、制御部１３０２は、取得したタイマー情報が示す経過時間ｎが、所定の経過時間Ｎに比べて十分に短い所定時間Ｔより短いか否かを判断する（ステップＳ１７０３）。そして、制御部１３０２は、経過時間ｎが所定時間Ｔ以上であると判断した場合（ステップＳ１７０３：Ｎｏ）、ガーベージコレクタ部１３０１に対してＧＣ機能の発生を要求する（ステップＳ１７０４）。一方、制御部１３０２は、経過時間ｎが所定時間Ｔより短いと判断した場合（ステップＳ１７０３：Ｙｅｓ）、ＧＣ機能の発生の要求を中止して、再び、機器状態変化通知などの通知を待つ状態へと戻る（ステップＳ１７０５）。
【００８０】
このように、本実施の形態にかかる複合機１によれば、定期的なＧＣ機能の発生から所定の時間経過後、強制的なＧＣ機能を発生させることにより、定期的なＧＣ機能の発生直後に強制的なＧＣ機能が発生することを防止し、極めて近い時間間隔でＧＣ機能が連続発生する状況を完全に解消できるので、複合機１の生産性が低下することを防止することができる。
【００８１】
なお、本実施の形態の複合機１で実行されるソフトウェアプログラムは、ＲＯＭ等に予め組み込まれて提供されるが、本実施の形態の複合機１で実行されるソフトウェアプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【００８２】
さらに、本実施の形態の複合機１で実行されるソフトウェアプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施の形態の複合機１で実行されるソフトウェアプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【００８３】
本実施の形態の複合機１で実行されるソフトウェアプログラムは、上述した各部（ガーベージコレクタ部、検出部、制御部、判断部、計測部など）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記ＲＯＭ等からソフトプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、ガーベージコレクタ部、検出部、制御部、判断部、計測部が主記憶装置上に生成されるようになっている。
【００８４】
なお、上記実施の形態では、本発明の画像形成装置、ガーベージコレクション機能の発生制御方法、プログラム、および記憶媒体を、コピー機能、プリンタ機能、スキャナ機能およびファクシミリ機能のうち少なくとも２つの機能を有する複合機に適用した例を挙げて説明するが、複写機、プリンタ、スキャナ装置、ファクシミリ装置等の画像形成装置であればいずれにも適用することができる。
【符号の説明】
【００８５】
１  複合機
２  ソフトウェアプログラム
１０３  ＲＡＭ
３０１、１３０１  ガーベージコレクタ部
３０２、８０１  検出部
３０３、８０２、１００２、１３０２  制御部
１００１  判断部
１３０３  計測部
【先行技術文献】
【特許文献】
【００８６】
【特許文献１】特開２００１−１４２１５号公報
【図１】
2011034305.tif 000003
【図２】
2011034305.tif 000004
【図３】
2011034305.tif 000005
【図４】
2011034305.tif 000006
【図５】
2011034305.tif 000007
【図６】
2011034305.tif 000008
【図７】
2011034305.tif 000009
【図８】
2011034305.tif 000010
【図９】
2011034305.tif 000011
【図１０】
2011034305.tif 000012
【図１１】
2011034305.tif 000013
【図１２】
2011034305.tif 000014
【図１３】
2011034305.tif 000015
【図１４】
2011034305.tif 000016
【図１５】
2011034305.tif 000017
【図１６】
2011034305.tif 000018
【図１７】
2011034305.tif 000019