(57)【要約】【課題】  仮想マシンを用いる画像形成装置において、コストを上げることなくＪａｖａアプリケーションの動作パフォーマンスを向上する。【解決手段】    仮想マシンを用いてオブジェクト指向言語で記述されたプログラムを実行する画像形成装置であって、オブジェクトが使用するメモリと、前記仮想マシンが前記メモリを使用するオブジェクトの使用状態に応じて前記メモリからいずれかのオブジェクトを消去する消去手段と、いずれかのオブジェクトを消去する際、当該メモリから消去されない各オブジェクトの生き残り回数を各オブジェクト毎に管理する管理手段と、前記管理手段から各オブジェクト毎に管理されている生き残り回数を集計して平均値を算出する算出手段と、算出される平均値と、所定のしきい値とを比較して、仮想マシンが参照すべき起動ファイルに記述すべき前記メモリのサイズを変更する変更手段と、を備えることを特徴とする。【選択図】  図８
2014089502.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシンを用いてオブジェクト指向言語で記述されたプログラムを実行する画像形成装置であって、
オブジェクトが使用するメモリと、
前記仮想マシンが前記メモリを使用するオブジェクトの使用状態に応じて前記メモリからいずれかのオブジェクトを消去する消去手段と、
いずれかのオブジェクトを消去する際、当該メモリから消去されない各オブジェクトの生き残り回数を各オブジェクト毎に管理する管理手段と、
前記管理手段から各オブジェクト毎に管理されている生き残り回数を集計して平均値を算出する算出手段と、
算出される平均値と、所定のしきい値とを比較して、仮想マシンが参照すべき起動ファイルに記述すべき前記メモリのサイズを変更する変更手段と、
を備えることを特徴とする画像形成装置。
【請求項２】
前記算出される平均値が所定のしきい値範囲内であるかどうかを判断する判断手段を備え、
前記算出される平均値が所定のしきい値範囲内にないと判断した場合、かつ、当該算出される平均値が前記しきい値範囲の下限を下回る値であると判断した場合、前記変更手段は、前記メモリのサイズを拡張するように前記仮想マシンが参照すべき起動ファイルを変更することを特徴とする請求項１記載の画像形成装置。
【請求項３】
前記算出される平均値が所定のしきい値範囲内にないと判断した場合、かつ、当該算出される平均値が前記しきい値範囲の上限を超える値であると判断した場合、エラー表示を行う表示手段を備えることを特徴とする請求項２記載の画像形成装置。
【請求項４】
前記算出される平均値が所定のしきい値範囲内にないと判断した場合、かつ、当該算出される平均値が前記しきい値範囲の特定値と一致すると判断した場合、前記変更手段は、前記メモリのサイズを縮小するように前記仮想マシンが参照すべき起動ファイルを変更することを特徴とする請求項１記載の画像形成装置。
【請求項５】
１つ以上のオブジェクト指向言語で記述されたプログラムが停止した場合、前記変更手段は、前記メモリのサイズを初期値に戻すように前記仮想マシンが参照すべき起動ファイルを変更することを特徴とする請求項１記載の画像形成装置。
【請求項６】
前記メモリは、ニュー領域と、オールド領域とを備え、前記メモリのサイズは、ニュー領域のサイズであることを特徴とする請求項１記載の画像形成装置。
【請求項７】
前記ニュー領域は、エデン領域と、生存領域とを備えることを特徴とする請求項１記載の画像形成装置。
【請求項８】
オブジェクトが使用するメモリと、オブジェクト指向言語で記述されたプログラムを実行する仮想マシンとを有する画像形成装置の制御方法であって、
前記仮想マシンが前記メモリを使用するオブジェクトの使用状態に応じて前記メモリからいずれかのオブジェクトを消去する消去工程と、
いずれかのオブジェクトを消去する際、当該メモリから消去されない各オブジェクトの生き残り回数を各オブジェクト毎に管理する管理工程と、
前記管理工程から各オブジェクト毎に管理されている生き残り回数を集計して平均値を算出する算出工程と、
算出される平均値と、所定のしきい値とを比較して、仮想マシンが参照すべき起動ファイルに記述すべき前記メモリのサイズを変更する変更工程と、
を備えることを特徴とする画像形成装置の制御方法。
【請求項９】
請求項８に記載の画像形成装置の制御方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置、画像形成装置の制御方法、及びプログラムに関するものである。
【背景技術】
【０００２】
ＭＦＰ（Ｍｕｌｔｉ−Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）やＬＢＰ（Ｌａｓｅｒ  Ｂｅａｍ  Ｐｒｉｎｔｅｒ）に代表される画像形成装置がある。画像形成装置は、ユーザの操作に従って、コピーやスキャン、印刷等のジョブを実行する。
【０００３】
また、画像形成装置内を顧客環境に応じてカスタマイズする方法としてＪａｖａ（登録商標）を利用したものがある。具体的には、画像形成装置内にＪａｖａＶＭを搭載し、ＪａｖａＶＭ上でＪａｖａアプリケーションを実行可能としたものである。一般的にＪａｖａＶＭはＪａｖａアプリケーションで利用するメモリ管理機構を有している。メモリ管理機構の代表例として、世代別メモリ管理という仕組みがある。これはＪａｖａのメモリをＮｅｗ領域とＯｌｄ領域に二分し、ライフサイクル上、短命のオブジェクトをＮｅｗ領域に長命のオブジェクトをＯｌｄ  領域に格納するものである。
【０００４】
合わせて、これらの領域から不要になったオブジェクトを削除し、メモリ解放するための機構としてＧＣと呼ばれる機構を備えている。このＧＣのアルゴリズムにも複数の種類が存在し、Ｎｅｗ領域の不足がＧＣ起点になる場合は高速なＳｃａｖｅｎｇｅＧＣと呼ばれる処理方式、Ｏｌｄ領域の不足が起点となる場合は低速のＦｕｌｌＧＣと呼ばれる処理方式が利用されている。一般的にはこれらの世代別メモリ管理やＧＣの種類を考慮しつつパフォーマンス向上を図る必要がある。具体的には、Ｎｅｗ領域からＯｌｄ領域にオブジェクトを移動させる際の閾値（ＳｃａｖｅｎｇｅＧＣで生き残る回数。３２がのぞましいとされている）を保つことができるよう、Ｎｅｗ領域のサイズをテストしながら変更し、最適化していくといった作業を実施する。このようなチューニングで決定した設定値をＪａｖａＶＭが起動する際のオプションで指定する。
【０００５】
上記のような実施作業のためには構築するシステムに必要な全てのＪａｖａアプリケーションを動かして設定値をチューニングする必要がある。この方法は作業コストが高い傾向にあるとともに、実システムで動作するＪａｖａアプリケーション群が動的に変わる場合などには、最適化が困難であるという課題があった。
この課題に対し、従来の手段としては、あらかじめメモリを用途別に細分化しておくことで、パフォーマンス向上を狙ったものがある（特許文献１）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−３９８７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記の仕組みでは、静的な構成のシステムパフォーマンスを向上させることが可能であるものの、動的に変化する構成のシステムにおいては、更に改善できる可能性がある。
【０００８】
本発明は、上記の課題を解決するためになされたもので、本発明の目的は、仮想マシンを用いる画像形成装置において、コストを上げることなくＪａｖａアプリケーションの動作パフォーマンスを向上できる仕組みを提供することである。
【課題を解決するための手段】
【０００９】
上記目的を達成する本発明の画像形成装置は以下に示す構成を備える。
仮想マシンを用いてオブジェクト指向言語で記述されたプログラムを実行する画像形成装置であって、オブジェクトが使用するメモリと、前記仮想マシンが前記メモリを使用するオブジェクトの使用状態に応じて前記メモリからいずれかのオブジェクトを消去する消去手段と、いずれかのオブジェクトを消去する際、当該メモリから消去されない各オブジェクトの生き残り回数を各オブジェクト毎に管理する管理手段と、前記管理手段から各オブジェクト毎に管理されている生き残り回数を集計して平均値を算出する算出手段と、算出される平均値と、所定のしきい値とを比較して、仮想マシンが参照すべき起動ファイルに記述すべき前記メモリのサイズを変更する変更手段と、を備えることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、メモリ構成を特別に複雑化することなく、システム動作環境に応じたＮｅｗ領域を調整する仕組みを設けることで、仮想マシンを用いる画像形成装置において、コストを上げることなくＪａｖａアプリケーションの動作パフォーマンスを向上できる。
【図面の簡単な説明】
【００１１】
【図１】画像形成装置の用いた画像処理システムを示す構成図である。
【図２】図１に示した画像形成装置の内部のハード構成を示すブロック図である。
【図３】図１に示した画像形成装置内部のソフト構成を説明するブロック図である。
【図４】図３に示した起動オプション記述ファイルの一例を示す図である。
【図５】図３に示したＨｅａｐメモリの内部構造の一例を示す図である。
【図６】図３に示したオブジェクトカウンタデータのデータ構造の一例を示す図である。
【図７】画像形成装置の制御方法を説明するフローチャートである。
【図８】画像形成装置の制御方法を説明するフローチャートである。
【図９】画像形成装置の制御方法を説明するフローチャートである。
【発明を実施するための形態】
【００１２】
次に本発明を実施するための最良の形態について図面を参照して説明する。
＜システム構成の説明＞
〔第１実施形態〕
【００１３】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
図１は、本実施形態を示す画像形成装置の用いた画像処理システムを示す構成図である。本実施形態のシステムは、画像形成装置１０１とＪａｖａアプリケーション１０２と、後述する図３に示すＪａｖａＶＭ（仮想マシン）１０３から構成される例である。なお、画像形成装置は、Ｊａｖａアプリケーション１０２のオブジェクトが使用するメモリを備え、ＪａｖａＶＭ（仮想マシン）１０３がオブジェクト指向言語で記述されたプログラムをメモリ（後述するＨｅａｐメモリ）を用いて実行する構成となっている。
図１において、ユーザ１００は、画像形成装置１０１のユーザインターフェース部２０２を経由してＪａｖａアプリケーション１０２を操作・利用することができる。Ｊａｖａアプリケーション１０２はＪａｖａＶＭ１０３上で動作する。なお、画像形成装置１０１は代表例であり、ＭＦＰやＬＢＰに限定するものではない。
【００１４】
図２は、図１に示した画像形成装置１０１の内部のハード構成を示すブロック図である。
【００１５】
図２において、ＣＰＵやバスを含むコア２０１には、ユーザインターフェース部２０２、記憶装置２０３、ネットワークインターフェース部２０４、スキャナ部２０５、プリンタ部２０６、フィニッシャ部２０７が接続される。
【００１６】
表示部と操作キー（ソフトキーと、ハードキーとを含む）を備えるユーザインターフェース部２０２は、ユーザ１００に対する情報表示が可能であり、且つユーザ１００からの操作を受け付けることが可能である。
記憶装置２０３は、機器内のソフトウェア群およびデータ群を記憶保存することが可能であり、Ｊａｖａアプリケーション１０２やＪａｖａＶＭ１０３が保持される。ネットワークインターフェース部２０４は、機器とネットワークをつなげる通信機能を提供する。スキャナ部２０５、プリンタ部２０６、フィニッシャ部２０７はそれぞれ機器内のソフトウェア群により連動制御なされることで、コピーや印刷、スキャンなどのジョブを実現することが可能である。なお、本図における構成要素群はあくまでもハード要素の一例であり、記載内容に限定するものではない。
【００１７】
図３は、図１に示した画像形成装置１０１内部のソフト構成を説明するブロック図である。
【００１８】
図３において、ＪａｖａＶＭ１０３は、全てのＪａｖａオブジェクトが利用するメモリとしてＨｅａｐメモリ３００を管理する。オブジェクト情報管理モジュール３０１は、ＪａｖａＶＭ１０３上で動作し、ＪａｖａＶＭ１０３から全てのオブジェクトが持つカウンタ情報を取得することができる。オブジェクトが持つカウンタ情報とは、Ｈｅａｐメモリ３００上に存在するＪａｖａオブジェクトにＧＣ（Ｇａｒｂａｇｅ  Ｃｏｌｌｅｃｔｉｏｎ）がかかり、生き残った際にカウントアップされるカウンタであり、全てのＪａｖａオブジェクトが保有する情報である。オブジェクト情報管理モジュール３０１は、取得したカウンタデータをオブジェクトカウンタデータ３０２に記録する。なお、本実施形態において、ＧＣは、記仮想マシンが後述するＨｅａｐメモリを使用するオブジェクトの使用状態に応じてＨｅａｐメモリからいずれかのオブジェクトを消去する。
【００１９】
閾値チェックモジュール３０３は、ＪａｖａＶＭ１０３上で動作し、ＧＣで消去されずに、生き残るオブジェクトをカウントするオブジェクトカウンタデータ３０２を取得してオブジェクト毎に集計した後、オブジェクトカウンタの平均値を算出することができる。また、その計算結果に基づき起動オプション記述ファイル３０４の内容を変更することができる。
また、閾値チェックモジュール３０３は、起動オプション記述ファイル３０４を変更する前のバックアップファイルとして起動オプション記述ファイルバックアップ３０５を生成することができる。
【００２０】
さらに、閾値チェックモジュール３０３は、ＪａｖａＶＭ１０３を通して、画像形成装置の電源がＯＦＦになる通知や、Ｊａｖａアプリケーション１０２がアンインストールされる際に通知を受け取ることができる。
【００２１】
ＪａｖａＶＭ起動モジュール３０６は、画像形成装置の電源がＯＮになった際にＪａｖａＶＭ１０３  よりも先に起動し、起動オプション記述ファイル３０４の内容に基づきＪａｖａＶＭ１０３を起動することができる。
【００２２】
図４は、図３に示した起動オプション記述ファイル３０４の一例を示す図である。
本例では、ＪａｖａＶＭ１０３を実行する際に、内部で利用するＨｅａｐメモリやＮｅｗ領域のサイズ等の情報が特定の形式に基づいて記述されている例を示している。
【００２３】
図５は、図３に示したＨｅａｐメモリ３００の内部構造の一例を示す図である。本実施形態では、Ｈｅａｐメモリ３００は、ニュー領域（Ｎｅｗ領域）と、オールド領域（Ｏｌｄ領域）とを備える。また、Ｎｅｗ領域は、エデン領域（Ｅｄｅｎ領域）と、生存領域
（Ｆｒｏｍ領域と、Ｔｏ領域からなる）から構成される。
図５において、Ｈｅａｐメモリ３００は、Ｎｅｗ領域５００とＯｌｄ領域５０１から構成されている。さらにＮｅｗ領域５００はＥｄｅｎ５０２とＦｒｏｍ５０３とＴｏ５０４から構成されている。それぞれのサイズは起動オプション記述ファイル３０４に基づき決定され、ＪａｖａＶＭ１０３が起動する際に初期化する。
【００２４】
以下、図５を用いて、ＪａｖａＶＭ１０３による基本的なＨｅａｐメモリ３００の利用方法を説明していく。
ＪａｖａＶＭ１０３は、Ｊａｖａオブジェクトを生成する際にＥｄｅｎ５０２にＪａｖａオブジェクトを配置する。Ｊａｖａアプリケーション１０２の動作に伴いＪａｖａオブジェクトが増加し、新規にＪａｖａオブジェクト生成・配置するためのＥｄｅｎ５０２の空き容量が足りなくなるとＪａｖａＶＭ１０３はＮｅｗ領域５００にＳｃａｖｅｎｇｅＧＣを実施する。
その際、プログラム上まったく参照されていないＪａｖａオブジェクトは破棄され、参照が残っているＪａｖａオブジェクトは生き残り、オブジェクトが持つカウンタをアップすると共にＴｏ５０４に移動する。
その後、Ｆｒｏｍ５０３とＴｏ５０４のラベル交換が行われ、ＦｒｏｍはＴｏに、ＴｏはＦｒｏｍに変わる。これら一連の動作を繰り返した後、Ｊａｖａオブジェクトのカウンタが特定の閾値を超えた場合、Ｏｌｄ領域５０１に移動することになる。
更に、Ｏｌｄ領域５０１がＪａｖａオブジェクトで一杯になり空き容量がなくなると、ＪａｖａＶＭ１０３はＦｕｌｌＧＣを実施する。ＦｕｌｌＧＣの対象となる領域はＮｅｗ領域５００とＯｌｄを含めたＨｅａｐメモリ３００全体であり、この際にＳｃａｖｅｎｇｅＧＣと同様に参照されていないＪａｖａオブジェクトを破棄すると共に、メモリの断片化を防ぐためにコンパクションも行う。
【００２５】
図６は、図３に示したオブジェクトカウンタデータ３０２のデータ構造の一例を示す図である。
図６において、オブジェクト情報管理モジュール３０１は、ＪａｖａＶＭ１０３からＨｅａｐメモリ３００内に存在するＪａｖａオブジェクトの情報を取得し、オブジェクトカウンタデータ３０２に保存する。Ｊａｖａオブジェクトの情報の具体例としては、それぞれ個々のオブジェクトにユニークに割あたるオブジェクトＩＤ６００や、図５で説明したＧＣを受けて生き残った回数であるカウンタ６０１などがある。閾値チェックモジュール３０３は、オブジェクトカウンタデータ３０２内のカウンタ６０１を参照し、その平均値を計算する。
【００２６】
図７は、本実施形態を示す画像形成装置の制御方法を説明するフローチャートである。本例は、図３に示したオブジェクト情報管理モジュール３０１がＪａｖａＶＭ１０３からＪａｖａオブジェクトの情報を取得し、オブジェクトカウンタデータ３０２に保存するまでの処理例である。なお、各ステップは、コア２０１のＣＰＵが記憶装置２０３に記憶される制御プログラムを実行することで実現される。また、以下の説明では、図３に示したモジュールを制御主体として処理を説明する。
ＪａｖａＶＭ１０３がＪａｖａオブジェクトをＮｅｗ領域５００のＴｏからＯｌｄ領域５０１へ移動する動きを起点として本フローが開始する。
Ｓ１−１にて、ＪａｖａＶＭ１０３は、移動対象のＪａｖａオブジェクトからカウンタ値を取得し、オブジェクト情報管理モジュール３０１へ通知しＳ１−２へ進む。
そして、Ｓ１−２にて、オブジェクト情報管理モジュール３０１は、取得したカウンタ値をオブジェクトカウンタデータ３０２に書き込み、その結果をＪａｖａＶＭ１０３に通知して、本処理を終了する。
【００２７】
図８は、本実施形態を示す画像形成装置の制御方法を説明するフローチャートである。本例は、閾値チェックモジュール３０３がカウンタ平均値と閾値を比較し、起動オプション記述ファイル３０４の記載内容を変更するまでの処理例である。なお、各ステップは、コア２０１のＣＰＵが記憶装置２０３に記憶される制御プログラムを実行することで実現される。また、以下の説明では、図３に示したモジュールを制御主体として処理を説明する。
画像形成装置への電源供給を切断する際のシャットダウン処理の中で、ＪａｖａＶＭ１０３からの閾値チェックモジュール３０３へのシャットダウン通知を起点として本フローが開始する。
Ｓ２−１にて、閾値チェックモジュール３０３はオブジェクトカウンタデータ３０２を取得しＳ２−２へ進む。
【００２８】
Ｓ２−２にて、閾値チェックモジュール３０３は、オブジェクトカウンタデータ３０２内に記載されているカウンタデータから平均値を算出し、平均値が「３０」から「３４」の範囲内にあるか判断する。つまり、算出される平均値が所定のしきい値範囲内にあるかないかを判断する。ここで、閾値チェックモジュール３０３により当該平均値が上記数値範囲内にあると判断した場合は、処理を終了となる。
一方、Ｓ２−２で、閾値チェックモジュール３０３により当該平均値が範囲外であると判断した場合はＳ２−３へ進む。
【００２９】
０未満か否かを判断する。つまり、算出される平均値が前記しきい値範囲の下限を下回る値かどうかを判断する。ここで、閾値チェックモジュール３０３が、上記平均値が３０未満であると判断した場合はＳ２−５へ進み、それ以外（上限を超える）であると判断した場合は、上限値以上である場合は、システム異常になっているケースであるためＳ２−４に進む。
そして、Ｓ２−４にて、閾値チェックモジュール３０３は、例えば図示しないＵＩ画面上にその旨を警告するエラー表示処理を行い、本処理を終了となる。
次に、Ｓ２−５にて、閾値チェックモジュール３０３は、起動オプション記述ファイル３０４内のＮｅｗ領域５００のサイズ記述を５％拡張して、本処理を終了する。
なお、上記の閾値やＮｅｗ領域５００の拡張サイズは一例であり、この値に限定したものではない。
なお、閾値チェックモジュール３０３が閾値範囲内の特定値（例えば３２）と一致すると判断した場合は、Ｎｅｗ領域５００のサイズを縮小する制御を実行する。
また、詳細は記載しないが、１つ以上のオブジェクト指向言語で記述されたプログラムが停止した場合、閾値チェックモジュール３０３は、Ｎｅｗ領域５００のサイズを初期値に戻すように仮想マシンが参照すべき起動ファイルを変更する。
【００３０】
図９は、本実施形態を示す画像形成装置の制御方法を説明するフローチャートである。本例は、閾値チェックモジュール３０３が起動ファイル（起動オプション記述ファイル）バックアップ３０５を利用して起動オプション記述ファイル３０４を初期化するまで処理例である。なお、各ステップは、コア２０１のＣＰＵが記憶装置２０３に記憶される制御プログラムを実行することで実現される。また、以下の説明では、図３に示したモジュールを制御主体として処理を説明する。
【００３１】
画像形成装置への電源供給を切断する際のシャットダウン処理の中で、Ｊａｖａアプリケーション１０２に停止、またはアンインストールされたなどの変化がある場合はフロー２の代わりに本フローが開始される。
Ｓ３−１にて、閾値チェックモジュール３０３は、起動オプション記述ファイルバックアップ３０５が存在しているか否かを判断する。ここで、起動オプション記述ファイルバックアップ３０５が存在しないと閾値チェックモジュール３０３が判断した場合、本処理を終了し、存在すると判断した場合はＳ３−２へ進む。
そして、Ｓ３−２にて閾値チェックモジュール３０３は、起動オプション記述ファイル３０４を起動オプション記述ファイルバックアップ３０５で上書きすることで初期化し、本処理を終了する。
【００３２】
本実施例により、メモリ構成を複雑化することなくシステム動作環境に応じたＮｅｗ領域を調整する仕組みを設けることで、開発コストの抑制とＪａｖａアプリケーションの動作パフォーマンスの向上が期待できる。
【００３３】
本発明の各工程は、ネットワーク又は各種記憶媒体を介して取得したソフトウエア（プログラム）をパソコン（コンピュータ）等の処理装置（ＣＰＵ、プロセッサ）にて実行することでも実現できる。
【００３４】
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施形態の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。
【符号の説明】
【００３５】
１００  ユーザ
１０１  画像形成装置
１０２  Ｊａｖａアプリケーション
１０３  ＪａｖａＶＭ
【図１】
2014089502.tif 000003
【図２】
2014089502.tif 000004
【図３】
2014089502.tif 000005
【図４】
2014089502.tif 000006
【図５】
2014089502.tif 000007
【図６】
2014089502.tif 000008
【図７】
2014089502.tif 000009
【図８】
2014089502.tif 000010
【図９】
2014089502.tif 000011