JP2018036799A - 情報処理装置およびその制御方法 - Google Patents

情報処理装置およびその制御方法 Download PDF

Info

Publication number
JP2018036799A
JP2018036799A JP2016168551A JP2016168551A JP2018036799A JP 2018036799 A JP2018036799 A JP 2018036799A JP 2016168551 A JP2016168551 A JP 2016168551A JP 2016168551 A JP2016168551 A JP 2016168551A JP 2018036799 A JP2018036799 A JP 2018036799A
Authority
JP
Japan
Prior art keywords
file
information processing
heap dump
processing apparatus
generation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2016168551A
Other languages
English (en)
Inventor
史朗 九里
Shiro Kuri
史朗 九里
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2016168551A priority Critical patent/JP2018036799A/ja
Publication of JP2018036799A publication Critical patent/JP2018036799A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Control Or Security For Electrophotography (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】情報処理装置の起動時間に影響を与えることなくヒープダンプファイルを生成する情報処理装置及びその制御方法を提供する。
【解決手段】メモリ制御部はErrorを発生したかを確認し、発生した場合はヒープダンプ生成部にヒープダンプ生成要求を送信する。ヒープダンプ生成部は指定された生成パスのヒープダンプファイルを確認し、存在しないと判定した場合は、指定されたファイル名のヒープダンプファイルを生成する。いったん生成されたヒープダンプファイルは、次回の電源投入後の初期化処理で削除されるまで存続する。回収ファイル生成部は、回収ファイルの編集処理後、ヒープダンプファイルを元に回収ファイルの生成処理を行い、ファイルサイズ変更部にサイズ変更要求を行う。ファイルサイズ変更後は画像形成装置のシャットダウンが行われるまでError発生待ちに戻る。
【選択図】図4

Description

本発明は、情報処理装置で作成したログファイル(ヒープダンプファイル)を制御する技術に関する。
従来、情報処理装置上で動作するアプリケーション(アプリ)の実行環境としてJava(登録商標、以下省略)が広く知られている。この実行環境では、Java言語で記述されたアプリ(JavaアプリあるいはJavaアプリケーション)が、Java Virtual Machine(JavaVM)上で動作する。Javaアプリはメモリを利用する場合、JavaVMにメモリ要求を行う。JavaVMは、あらかじめ情報処理装置のメモリ領域からJavaアプリが利用可能なメモリ領域(Javaヒープ領域)として固定の領域を確保しており、Javaアプリからのメモリ要求を受信すると、このJavaヒープ領域に空きがあるかを確認する。そして空きがある場合、JavaVMはJavaアプリからの要求に応じたメモリ領域をJavaアプリが利用可能にする。一方、Javaヒープ領域に空きがない場合は、JavaVMはOutOfMemoryErrorというエラーを発生する。OutOfMemoryErrorが発生した場合、原因を特定するためにOutOfMemoryError発生時に生成したヒープダンプファイルというログファイルを解析する。このヒープダンプファイルは、Javaヒープ領域内のメモリ利用状態を表したファイルである。
Java実行環境において、OutOfMemoryError発生時にヒープダンプファイルを生成する方法として、JavaVMの起動オプションを利用する方法がある。このJavaVMの起動オプションは、「OutOfMemoryError発生時に、決められたファイルパスにヒープダンプファイルを生成する」というものである。なおこのオプションでは、上記で指定したファイルパスに既にファイルが存在する場合は、ファイルを新規で生成しない。そのため、初回のOutOfMemoryError発生時にヒープダンプファイルを1つ生成するものである。なお、情報処理装置で一度OutOfMemoryErrorが発生すると、それ以降にメモリ要求を行っても常にOutOfMemoryErrorが発生してしまう。このため、初回のOutOfMemoryError発生時のヒープダンプファイルを解析するのが一般的である。
一方、画像形成装置のような情報処理装置では、それが置かれている現場からヒープダンプファイルを回収するのは時間や手間がかかる。そのため、現場で発生したOutOfMemoryErrorをより早く、より正確に原因調査を行うために、複数のヒープダンプファイルを取得したいという要望がある。しかし、画像形成装置のようにハード的な記憶容量が制限された情報処理装置では、生成した全てのログファイルを記憶することができないという課題がある。このための解決手段として、特許文献1のように、ログファイルのローテーションと取得の両方の処理を排他制御してログファイルの整合性を保ちつつ、最新のログファイルを所定数だけ残す技術が知られている。
特開2009−22304号公報
現場での早期問題解決のため、複数のヒープダンプファイルを取得したいという要望があるが、JavaVMの起動オプションでは複数のヒープダンプファイルを残すことができない。なお、情報処理装置の起動時の初期化処理において、既にヒープダンプファイルが存在していた場合は、存在するファイルをリネームして保存し、元のヒープダンプファイルを消去することで、従来の技術のように、最新のヒープダンプファイルを複数生成することも考えられる。
しかし、CPUの数や性能など、リソースに制限がある画像形成装置のような情報処理装置では、初期化時に複数の処理が並行して動作するため、CPUの稼働率が高い状態になっている。このような状態の初期化処理において、ファイルサイズの大きいファイルを削除すると、完了するまでに長い時間が必要になり、情報処理装置全体の起動時間に大きな影響を与えてしまう。そのため、従来の技術を利用した方法では、情報処理装置の起動時間に影響を与えてしまい、ユーザの操作性が低下するという課題があった。
本発明は上記従来例に鑑みて成されたもので、起動時間に与える影響を抑制しつつ、新しい所定数のヒープダンプファイルを残す情報処理装置及びその制御方法を提供することを目的とする。
上記目的を達成するために本発明は以下の構成を有する。
エラーの発生をトリガとして、ログファイルが無い場合にはログファイルを生成するログファイル生成手段と、
前記ログファイル生成部で生成した前記ログファイルを別名のファイルとして保存する別名ファイル生成手段と、
前記ログファイルのファイルサイズを縮小するファイルサイズ変更手段と、
前記ファイルサイズ変更手段により前記ファイルサイズを変更した前記ログファイルを、所定のタイミングで削除するファイル削除手段とを有することを特徴とする情報処理装置。
本発明により、起動時間に与える影響を抑制しつつ、新しい所定数のヒープダンプファイルを残すことができる。
本発明の各実施形態に共通する画像形成装置100のコントローラユニット111を表すブロック図である。 本発明の各実施形態に共通するコントローラユニット111のソフトウエア構成を表すブロック図である。 本発明の各実施形態に共通する図2のJavaVM202とアプリプラットフォーム203のモジュール構成を表す図である。 本発明の各実施形態に共通するヒープダンプ生成処理を表すフローチャート図である。 本発明の各実施形態に共通する複数のOutOfMemoryErrorが発生するタイミングを表すイメージ図である。 本発明の各実施形態に共通するファイル送信処理を表すフローチャート図である。 本発明の第2実施形態のヒープダンプ生成処理を表すフローチャート図である。
以下、本発明を実施するための最良の形態について、図面を用いて説明する。
[第1の実施形態]
最初に、情報処理装置の一実施例である画像形成装置のコントローラユニットの説明を行う。
●画像形成装置のコントローラユニットの構成
図1は、本発明の各実施形態に係る画像形成装置100のコントローラユニットの内部構造を示すブロック図である。画像形成装置100は例えば複合機(MFP)であり、情報処理の観点からは情報処理装置ということもできる。コントローラユニット111は、ログファイルやデバイス情報の入出力を行うだけではなく、画像形成装置100全体の制御や、ネットワークを介して外部へのデータ送信の制御も行う。コントローラユニット111は、各種制御プログラムを実行するCPU101を有する。
CPU101は、ROM103に記憶されているブートプログラムに基づきシステムを起動し、このシステム上でHDD(ハードディスク装置)104に記憶されている制御プログラムを読み出してRAM102をワークエリアとして所定の処理を実行する。この制御プログラムにより、Javaプログラムなどの所定の制御を実行することが可能である。また実行される処理には、例えば図2、図3に示すソフトウェアモジュールを実現する処理や、図4、図6、図7に示す手順の処理を含む。HDD104には、上記各種制御プログラムが記憶されるとともに、ログデータに関する全ての設定や後述するネットワーク部107が有するすべての通信手段に関する情報を記憶する。
CPU101には、RAM102、ROM103、HDD104がシステムバス110を介して接続されている。さらに操作部I/F105、ネットワーク部107、電源管理部109がシステムバス110を介して接続されている。
操作部I/F105は、操作部106との間のインターフェイス部であり、操作部106に表示する画像データの操作部106への転送、操作部106における操作入力により発生した信号のCPU101への転送などを行う。操作部106は、画像処理に関する各機能における現在の設定状態、各機能に関する設定情報を入力するための情報入力画面などを表示するための表示部、ユーザが各機能に対する設定情報を入力するキーなどを含む入力部を有する。
電源管理部109は、画像形成装置100の電源OFFと電源ONの管理を行う。なおCPU101は、電源ONや電源OFFを検知した場合、上述のように、ROM103のブートプログラムやHDD104に記憶されている制御プログラムを実行する。これにより、画像形成装置100の初期化処理やシャットダウン処理を実行する。
ネットワーク部107は、LAN108に接続され、LAN108を介した情報の入出力を行う。LAN回線にwebサーバや外部装置が接続されている場合は、そのサーバからLAN108を介して情報を出力することが可能である。また、LAN回線内のプロキシサーバなどを介して、インターネットに接続し、インターネット上のwebサーバにファイルを送信することも可能である。
●ソフトウェアモジュールの構成
次に、図2を用いて画像形成装置100のCPU101やHDD104などの各ハードウエア上で動作するソフトウエアのモジュール構成を説明する。なおこれらの各モジュールにおける処理は、CPU101の命令により、ROM103やHDD104に記憶されているプログラムを読み出し、RAM102をワークエリアとして所定の処理を実行することで実現している。また、所定の処理を実行することで生成される全ての情報は、RAM102もしくはHDD104に記憶する。なお、このような各モジュールにおける処理は、以降でも同様であるため、以降では記載を省略する。
OS201は、画像形成装置100全体のプロセス管理、メモリ管理、入出力管理等を行うモジュールであり、一般的なOSと同様の処理を行う。
JavaVM202は、HDD104に記憶されているJavaバイトコードを実行することでJavaプログラムを動作させる仮想マシンである。このJavaVM202は、画像形成装置100の起動時の初期処理で起動するが、起動の際に起動オプションを指定して起動することができる。この起動オプションとしては、ヒープダンプファイルの生成有無の指定や、ヒープダンプファイルを生成する場所(生成パス)の指定、生成するヒープダンプファイルのファイル名の指定などがあり、これらの値はHDD104にあらかじめ記憶していることとする。なお本実施形態では、JavaVM202の起動オプションで、ヒープダンプファイルの生成を有効に指定し、ヒープダンプファイルの生成パスと生成するファイル名も特定のものを指定していることとする。
アプリプラットフォーム203は、単一のJavaVM202上で少なくとも1つ以上のJavaアプリ(あるいはJavaアプリケーション)の起動、停止、インストール、アンインストールといったアプリのライフサイクルの管理・実行を行うモジュールである。また、アプリプラットフォーム203は、後述のアプリA204やアプリB205で共通に利用するライブラリやサービスを有する。なおアプリとは、アプリケーションプログラムの略称であり、本実施形態では「アプリ」を用いる。
アプリA204とアプリB205は、アプリプラットフォーム203上で動作するJavaプログラムのバイトコードであり、アプリプラットフォーム203が有するライブラリやサービスを利用して動作する。また、アプリA204とアプリB205は、個々のアプリ毎に画像形成装置100にインストールして、アプリプラットフォーム203で動作することが可能である。
アプリC206は、Javaアプリ以外のアプリ(例えばC言語のアプリ)のプログラムのバイトコードであり、OS201上で動作する。
●JavaVMおよびアプリプラットフォーム
ここで、JavaVM202とアプリプラットフォーム203の詳細な説明を、図3のモジュール構成図を用いて行う。JavaVM202は、メモリ制御部301とヒープダンプ生成部302からなる。アプリプラットフォーム203は、回収ファイル生成部303、ファイルサイズ変更部304、ファイル削除部305、ファイル送信部306、エラー検知部307からなる。
メモリ制御部301は、Javaアプリのどのオブジェクトがどれくらいのメモリを利用しているのかをHDD104に記憶する。また、メモリ制御部301は、Javaアプリからのメモリ利用要求を受信すると、Javaヒープメモリ領域(以下、メモリ領域)の利用状況を調べる。そしてメモリ制御部301は、要求されたサイズのメモリ領域が確保できればJavaアプリに確保したメモリ領域を返し、メモリ領域を確保できなければ、ヒープダンプ生成部302にヒープダンプファイルの生成要求を行う。
ヒープダンプ生成部302は、この生成要求を受信すると、JavaVM202の起動オプションでヒープダンプファイルの生成が有効になっているかを調べる。そして、有効になっている場合は、ヒープダンプ生成部302は、HDD104に記憶しているメモリ利用状況を元に、ヒープダンプファイルの生成を行う。なお、生成するヒープダンプファイルの生成パスとファイル名は、JavaVM202に起動オプションであらかじめHDD104に記憶されているため、この生成パスに決められたファイル名のヒープダンプファイルを生成する。ヒープダンプファイルはログファイルともいえるので、ヒープダンプ生成部302はまた、ログファイル生成部ということもできる。また、ヒープダンプ生成部302は、回収ファイル生成部303に回収ファイル生成要求を行う。
回収ファイル生成部303は、ヒープダンプ生成部302からの回収ファイル生成要求を受信すると、既に存在する回収用ファイルの数と回収用ファイルの最大数とに応じて回収用ファイルの削除を行う。回収用ファイルとは、ヒープダンプファイルの名称を変更した別名ファイルであり、望ましくは名称にファイルの新旧を示す情報を含み、さらに望ましくは圧縮されている。さらに回収ファイル生成部303は、ヒープダンプ生成部302で生成したヒープダンプファイルを元にして、回収用ファイルを作成する。回収ファイル生成部303は、ヒープダンプファイルの名称を変更して別途保存するため、たとえば別名ファイル生成手段などということもできる。また、回収ファイル生成部303は、回収用ファイル生成後に、ヒープダンプファイルのファイルサイズ変更要求をファイルサイズ変更部304に送信する。
ファイルサイズ変更部304は、回収ファイル生成部303からのファイルサイズ変更要求を受信すると、ヒープダンプ生成部302で生成したヒープダンプファイルのファイルサイズを変更する。
ファイル削除部305は、画像形成装置100の初期化処理におけるアプリプラットフォーム203の初期化処理において、ファイルサイズ変更部304でファイルサイズを変更したヒープダンプファイルを削除する。
ファイル送信部306は、回収ファイル生成部303で生成した回収用ファイルを、ネットワーク部107により画像形成装置100の外部に送信する。
エラー検知部307は、画像形成装置100が異常状態となるシステムエラー(操作部106の応答なしエラーやRAM102のアクセスエラーなど)を検知し、あらかじめHDD104に記憶されている所定の制御を行う。
以上が、JavaVM202とアプリプラットフォーム203の詳細な説明である。
●ヒープダンプファイルの生成処理
続いて、JavaVM202とアプリプラットフォーム203の各モジュールにより、OutOfMemoryError(すなわちメモリ不足エラー)が発生した場合に、ヒープダンプファイルを生成する処理の説明を、フローチャート図4を用いて説明する。なおこのフローチャート図4を用いた具体例は、フローチャートの処理の説明後に行う。図4の処理はハードウエア上はCPU101がプログラムを実行することで実現されるが、以下では、図3に示す各モジュールが、処理の主体となるオブジェクトであるとして説明する。
画像形成装置100を起動すると、電源管理部109は、あらかじめHDD104に記憶しているプログラムに従って初期化処理(JavaVM202の起動やアプリプラットフォーム203の初期化処理など)を実行する。この初期化処理の一処理であるアプリプラットフォーム203の初期化処理を説明する。ファイル削除部305は、JavaVM202の起動オプションで指定されているヒープダンプファイルの生成パスに、起動オプションで指定されているファイル名のヒープダンプファイルが存在するかを判定する(ステップ401)。ここでヒープダンプファイルが存在すると判定した場合は、ファイル削除部305は、このヒープダンプファイルを削除する(ステップ402)。一方、ヒープダンプファイルが存在しないと判定した場合は、ファイル削除部305は何もしない。
この後、画像形成装置100の電源管理部109によりシャットダウンが検知されるまでステップ403〜411を繰り返す。この処理を説明する。
メモリ制御部301は、OutOfMemoryErrorを発生したか確認する(ステップ403)。OutOfMemoryErrorは前述したように、たとえばアプリからのメモリアロケーションの要求に対して、メモリ制御部301が、割り当てる空きメモリをヒープ領域に確保できないと判定した場合に発生する。ここでOutOfMemoryErrorを発生していない場合は、一般的なメモリ管理処理(詳細は省略)を行う。一方、OutOfMemoryErrorを発生した場合は、メモリ制御部301は、ヒープダンプ生成部302にヒープダンプ生成要求を送信する。
ヒープダンプ生成要求を受信したヒープダンプ生成部302は、JavaVM202の起動オプションで指定されたヒープダンプファイルの生成パスのヒープダンプファイルを確認する(ステップ404)。すなわち、ヒープダンプファイルの有無を判定する。ここで、生成パスにヒープダンプファイルが存在すると判定した場合は、ステップ403の待ちに戻る。一方、生成パスにヒープダンプファイルが存在しないと判定した場合は、ヒープダンプ生成部302は、JavaVM202の起動オプションで指定された生成パスに、指定されたファイル名のヒープダンプファイルを生成する(ステップ405)。生成されたヒープダンプファイルには、メモリ領域(たとえばJavaヒープメモリ領域)の利用状況を示す情報が含まれている。いったん生成されたヒープダンプファイルは、次回の電源投入後の初期化処理(S402)で削除されるまで存続する。つまり、画像形成装置100が起動してからシャットダウンするまでの間で、ヒープダンプ生成部302は、初回のOutOfMemoryErrorを発生したときのみヒープダンプファイルを生成することになる。なお、ヒープダンプ生成部302におけるヒープダンプファイル生成処理は、一般的なヒープダンプ生成処理と同じであるため、詳細は省略する。
ヒープダンプ生成部302は、ヒープダンプファイル生成後に、回収ファイル生成部303に回収ファイル生成要求を送信する。この回収ファイル生成要求を受信した回収ファイル生成部303は、あらかじめHDD104に記憶している回収用ファイルの生成パスに、既に回収用ファイルが存在するか判定する(ステップ406)。なおこの回収用ファイルの詳細は、ステップ408で後述する。ここで回収ファイルが存在すると判定した場合は、回収ファイル生成部303は回収用ファイルの編集を行う(ステップ407)。この回収用ファイルの編集処理について説明する。回収用ファイルはOutOfMemoryErrorの解析に必要なファイルであるが、画像形成装置100のHDD104の容量は小さいため、残すことができる回収用ファイル数も限られている。そのため、最大の回収用ファイル数を所定の値にあらかじめ決めておき、最大回収用ファイル数を越えないように、新しく生成した回収ファイルを残すことが必要である。そのため、ステップ407で回収ファイル生成部303は、あらかじめ決められた最大回収用ファイル数よりも1つ少ないファイル数にするための編集処理を行う(後述のステップ408で回収用ファイルを1つ生成するため)。具体的な編集処理としては、回収用ファイルのファイル名には作成日時を含めるため(後述のステップ408で説明あり)、回収用ファイル名を確認し、作成日時が最も古いファイルを削除する処理を行う。以上が回収用ファイルの編集処理の説明である。一方、ステップ406で回収ファイルが存在しないと判定した場合は、ステップ408へと分岐する。
回収ファイル生成部303は、回収用ファイルの編集処理後、さらにヒープダンプ生成部302で生成したヒープダンプファイルを元に、回収用ファイルの生成処理を行う(ステップ408)。この回収用ファイルの生成処理について説明する。回収ファイル生成部303は、ステップ405で生成したヒープダンプファイルの生成日時の情報を取得する。そして回収ファイル生成部303は、このヒープダンプファイルをコピーして別のファイルを生成し、このファイルのファイル名称に、取得したヒープダンプファイルの生成日時を追加する。このようにして作成したのが回収用ファイルである。なおこの回収用ファイルは、HDD104のあらかじめ決められた場所(生成パス)に記憶する。なお本実施形態では、HDD104の使用量を抑えるために、回収用ファイルは圧縮して生成したが、ファイルを解凍することなく解析できるようにするため、回収用ファイルは圧縮しなくてもよい。また本実施形態では、古い回収用ファイルと新しい回収用ファイルを判断するために、回収用ファイルに生成日時情報を追加したが、別の方法により判断しても良い。例えば、日時情報ではなく、古い順に固定の数値をつけるなどの方法で、回収用ファイルの新旧を判断することもできる。以上が、回収用ファイルの生成処理である。回収ファイル生成部303は、回収用ファイル生成後、ファイルサイズ変更部304にヒープダンプファイルのファイルサイズ変更要求を送信する。
ファイルサイズ変更部304は、ファイルサイズ変更要求を受信すると、ステップ405で生成したヒープダンプファイルのサイズを変更する(ステップ409)。ここでファイルサイズ変更を行うのは、ステップ401の初期化時のヒープダンプファイル削除の処理時間を減らすためである。ファイルの削除処理にかかる時間は、ファイルサイズが小さいほど短くなるため、ファイルサイズは小さい方が望ましい。本実施例では、ヒープダンプファイルを一度削除し、同じファイル名で中身が0byteのファイルを生成することで、ヒープダンプファイルのサイズを0byteにする。なおファイルサイズを0byteにする方法は、ファイルをOpenし、中身を全て消す処理を実行する方法でも良い。ファイルサイズ変更部304でファイルサイズ変更後は、画像形成装置100のシャットダウンが行われるまで、OutOfMemoryError発生待ち(ステップ403)に戻る。
以上が、フローチャート図4の説明である。このようにして、生成したヒープダンプファイルを回収用ファイルとしてアーカイブし、アーカイブ後のヒープダンプファイルサイズを0に変更しておくことで、その削除を短時間で行うことができる。さらに、ヒープダンプファイルを、その新旧を示す情報をメタデータとしてアーカイブしておくことで実質的に複数のヒープダンプファイルを保存しておくことができる。
なお、図4のステップ403とステップ404とで形成されるループ、および、ステップ403からステップ409までのステップで形成されるループはいずれも説明のための構成であると考えてもよい。たとえばステップ404においてヒープダンプファイルがあると判定した場合、および、ステップ409でヒープダンプファイルのサイズを0に変更する処理を終えた場合には、いったんエンドタスクする。そして、OutOfMemoryErrorの発生をトリガとしてステップ403(あるいはステップ404)から処理を再開するように構成してもよい。エンドタスクの後は、空いたCPUなどの計算資源により他の処理を実行できる。
●ヒープダンプファイル生成処理の具体例
続いて、このフローチャート図4の具体例を、図5のOutOfMemoryError発生イメージ図を用いて説明する。まず図5の簡単な説明を行う。図5の横軸は時間であり、図5の符号501から符号514は画像形成装置100で行われる処理やイベントを表している。電源ON501、507、512は、画像形成装置100の電源をONにしたことを電源管理部109で検知したことを表すイベントであり、この後に画像形成装置100の初期化処理502、508、513を行う。電源OFF506、511は、画像形成装置100をシャットダウンして電源がOFFになったことを電源管理部109で検知したことを表すイベントである。OOME503〜505、OOME509〜510、OOME514は、画像形成装置100で発生したOutOfMemoryErrorを表す。すなわち図5は、画像形成装置100が最初に起動してからシャットダウンするまでに3回のOutOfMemoryError503,504,505が発生したことを表す。また図5は、その後に画像形成装置100を再起動してから2回のOutOfMemoryError509,510が発生し、さらにその後に画像形成装置100を再起動してからOutOfMemoryError514が1回発生したことを表している。なお、これらのOutOfMemoryErrorは、アプリA204やアプリB205のメモリ取得要求により発生するものであるが、どちらのアプリによるOutOfMemoryErrorでも同じOutOfMemoryErrorとして処理する。以上が図5の簡単な説明である。
なお、本実施形態では、JavaVM202の起動オプションとして、"−XX:+HeapDumpOnOutOfMemoryError"と指定することで、ヒープダンプファイルの生成を有効にしていることとする。またJavaVM202の起動オプションとして、"−XX:HeapDumpPath=/root/mylog/heapdump.hprof"と指定することでヒープダンプファイルの生成パスと生成するヒープダンプファイル名を指定する。このときに指定する生成パスは"/root/mylog/"ディレクトリであり、生成するヒープダンプファイル名の指定は"heapdump.hprof"である。また本実施形態では、回収ファイルの生成パスとして"/root/mylog/"ディレクトリが指定され、回収ファイル名は"heapdump_XXXX.gz"(XXXXは可変であり、日時が入る)というファイル名称をあらかじめ決めていることとする。また本実施形態では、回収する回収ファイル数の最大数(すなわち保存される回収ファイルの数の上限)は2とあらかじめ決めていることとする。なお、これらの生成パスやファイル名や最大回収ファイル数は、全てHDD104に記憶していることとする。
続いて、フローチャート図4の具体例を説明する。まず最初に、画像形成装置100の電源管理部109で電源ONを検知することで行う初期化処理502について説明する。ファイル削除部305は、JavaVM202の起動オプションで指定されているヒープダンプファイルの生成パスに、JavaVM202の起動オプションで指定されているヒープダンプファイルが存在するかを判定する(ステップ401)。ここでは、ヒープダンプファイルの生成パスである"/root/mylog/"ディレクトリに"heapdump.hprof"という名称のファイルが存在しないため、初期化処理を終了する(ステップ403の処理に進む)。
次に、OOME503を発生したときの処理を説明する。メモリ制御部301は、OOME503によるOutOfMemoryErrorの発生を確認し(ステップ403−「あり」)、ヒープダンプ生成部302にヒープダンプ生成要求を送信する。ヒープダンプ生成要求を受信したヒープダンプ生成部302は、ヒープダンプファイルの生成パスにヒープダンプファイルが存在するかを判定する(ステップ404)。ここでは、ヒープダンプファイルの生成パスである"/root/mylog/"ディレクトリに"heapdump.hprof"という名称のファイルが存在しない。そのため、ヒープダンプ生成部302は、"/root/mylog/"ディレクトリに"heapdump.hprof"という名称のヒープダンプファイルを生成する(ステップ405)。その後、ヒープダンプ生成部302は、回収ファイル生成部303に回収ファイル生成要求を送信する。
この回収ファイル生成要求を受信した回収ファイル生成部303は、既に回収用ファイルが存在するかを判定する(ステップ406)。ここでは、"/root/mylog/"ディレクトリに回収用ファイルが存在しない。そのため、回収ファイル生成部303は、ステップ405で生成した"heapdump.hprof"という名称のヒープダンプファイルから"heapdump_201606011200.gz"という回収用ファイルを生成する(ステップ408)。なお回収用ファイルの名称に"201606011200"という文字が入っているのは、ヒープダンプファイル"heapdump.hprof"を2016年6月1日12時に生成したためである。回収ファイル生成部303は、回収用ファイル生成後に、ファイルサイズ変更部304にファイルサイズ変更要求を送信する。これを受信したファイルサイズ変更部304は、ステップ405で生成したヒープダンプファイルのサイズを変更する(ステップ409)。ここでは、"/root/mylog/"ディレクトリの"heapdump.hprof"を一度削除する。そして、ファイルの内容が何も記載されていない"heapdump.hprof"という同じ名称のファイルを同じディレクトリに作る。これにより、ファイルサイズを変更することとする。以上が、OOME503を発生したときの処理である。
次に、OOME504を発生したときの処理を説明する。メモリ制御部301は、OOME504によるOutOfMemoryErrorの発生を確認すると(ステップ403が「あり」)、ヒープダンプ生成要求をヒープダンプ生成部302に送信する。これを受信したヒープダンプ生成部302は、ヒープダンプファイルの生成パスにヒープダンプファイルが存在するかを判定する(ステップ404)。ここでは、ヒープダンプファイルの生成パスである"/root/mylog/"ディレクトリに"heapdump.hprof"という名称のファイルが存在するため、ステップ403のOutOfMemoryErrorの発生待ちに戻る。そのため、OOME504の発生により、新たにヒープダンプや回収用ファイルを生成することはない。以上がOOME504を発生したときの処理である。なお、この後にOOME505を発生しても、OOME504を発生したときと同様に、新たにヒープダンプや回収用ファイルを生成することはない。
次に、電源OFF506後に電源ON507を検知した後に実行する初期化処理508について説明する。この初期化処理508として、ファイル削除部305は、所定の生成パスに所定のヒープダンプファイルが存在するかを判定する(ステップ401)。なおこの所定の生成パスとは、JavaVM202の起動オプションで指定されているヒープダンプファイルの生成パスである。また、この所定のヒープダンプファイルとは、JavaVM202の起動オプションで指定されているヒープダンプファイルである。ここでは、ヒープダンプファイルの生成パスである"/root/mylog/"ディレクトリに"heapdump.hprof"という名称のファイルが存在するため、ファイル削除部305は、このファイルを削除する(ステップ402)。そして初期化処理を終了する(ステップ403の処理に進む)。
次に、OOME509を発生したときの処理を説明する。メモリ制御部301は、OOME509によるOutOfMemoryErrorの発生を確認すると(ステップ403−「あり」)、ヒープダンプ生成要求をヒープダンプ生成部302に送信する。これを受信したヒープダンプ生成部302は、ヒープダンプファイルの生成パスにヒープダンプファイルが存在するかを判定する(ステップ404)。ここでは、ヒープダンプファイルの生成パスである"/root/mylog/"ディレクトリに"heapdump.hprof"という名称のファイルが存在しないため、ヒープダンプ生成部302は、ヒープダンプファイルを生成する(ステップ405)。ここでは、"/root/mylog/"ディレクトリに"heapdump.hprof"という名称のヒープダンプファイルを生成する。その後、ヒープダンプ生成部302は、回収ファイル生成部303に回収ファイル生成要求を送信する。
この回収ファイル生成要求を受信した回収ファイル生成部303は、既に回収用ファイルが存在するかを判定する(ステップ406)。ここでは、"/root/mylog/"ディレクトリに"heapdump_201606011200.gz"という名称の回収用ファイルが存在する。そのため、回収ファイル生成部303は、"/root/mylog/"ディレクトリに存在する回収用ファイルの数が、最大回収用ファイル数よりも1つ少ない数を超えているかを判定する。ここでは最大回収用ファイル数が2であり、既に存在する回収用ファイルは1つしかないため、編集処理は行わない。その後、回収ファイル生成部303は、ステップ405で生成したヒープダンプファイルから回収用ファイルを生成する(ステップ408)。具体的には、"heapdump.hprof"という名称のヒープダンプファイルから"heapdump_201606012200.gz"という回収用ファイルを"/root/mylog/"ディレクトリに生成する。なお回収用ファイルの名称に"201606012200"という文字が入っているのは、ヒープダンプファイル"heapdump.hprof"を2016年6月1日22時に生成したためである。回収ファイル生成部303は、回収用ファイル生成後に、ファイルサイズ変更部304にファイルサイズ変更要求を送信する。
これを受信したファイルサイズ変更部304は、ステップ405で生成したヒープダンプファイルのサイズを変更する(ステップ409)。ここでは、"/root/mylog/"ディレクトリの"heapdump.hprof"を一度削除する。そして、同じディレクトリにファイルの内容が何も記載されていない"heapdump.hprof"という名称のファイルを作る。これにより、ファイルサイズを変更することとする。以上が、OOME509を発生したときの処理である。なお、この後にOOME510を発生したときの処理は、OOME504やOOME505を発生したときの処理と同じであるため、省略する。これにより、回収用ファイル"heapdump_201606011200.gz"と"heapdump_201606012200.gz"を生成する。
最後に、電源OFF511後に電源ON512を行い、その後にOOME514が発生したときの説明を行う。なお、初期化処理513(ステップ401、402)やヒープダンプファイル生成処理(ステップ403〜405)の処理は、前述の処理と同じであるため、説明は省略する。ここでは、ステップ405により、回収用ファイル"heapdump_201606131200.gz"を生成したこととする。
ステップ406において、回収ファイル生成部303は、既に回収用ファイルが存在するかを判定する。ここでは、回収用ファイル"heapdump_201606011200.gz"と"heapdump_201606012200.gz"の2つの回収用ファイルが存在する。そのため、回収ファイル生成部303は、最大回収用ファイル数の2を越えていると判定し、古いほうの回収用ファイルである"heapdump_201606011200.gz"を削除するという編集処理を行う(ステップ407)。なお、この後のステップ408とステップ409の処理は、回収用ファイルのファイル名称が異なる以外は既に説明した処理と同じ処理であるため、説明は省略する。ここでは、ステップ408により、回収用ファイルとして"heapdump_201606012200.gz"と"heapdump_201606131200.gz"の2つが残ることとなる。以上がOOME514が発生したときの処理である。以上が、フローチャート図4の具体例の説明である。
これにより、ヒープダンプファイルのサイズを、初期化処理の時点では小さく(本例では0に)しておくことで、画像形成装置100の初期化処理のファイル削除にかかる時間を短くすることができる。さらに、ヒープダンプファイルを、回収用ファイルに名前を変えて残すことができる。そのため、画像形成装置100の起動時間に影響を与えることなく、最新のヒープダンプファイルを所定数だけ残すことができる。そのため、所定数のヒープダンプファイルを生成する場合でも、ユーザの画像形成装置100の起動待ち時間が増えることはない。
●回収用ファイルの送信処理
最後に、上記で生成した回収用ファイルを送信するときの処理について説明する。OutOfMemoryErrorの原因解析は、ユーザ(サービスマンやアプリ開発者)が回収用ファイルの内容を分析することで、特定できることがある。ファイルの分析を行う場合、回収用ファイルを画像生成装置100の外部のPCに送信し、外部のPCでファイルの中身を分析するのが一般的である。回収用ファイルを外部に送信するための処理(回収用ファイル送信処理)を、フローチャート図6を用いて説明する。この処理は、ハードウエアの上ではCPU101により、オブジェクトの上ではファイル送信部306により実行される。
ユーザが操作部106で回収用ファイルを外部に送信するための入力を行うと、この入力をファイル送信部306は送信指示として受信する(ステップ601)。入力は例えば操作部106から行われる。
送信指示を受信したファイル送信部306は、あらかじめ決められた生成パスに回収用ファイルが存在するかを判定する(ステップ602)。具体的には、図4のステップ407とステップ408で回収用ファイルを生成した生成パス(ディレクトリ)に、回収用ファイルが存在するかを判定する。
回収用ファイルが存在する場合、ファイル送信部306は、存在する全ての回収用ファイルを、ネットワーク部107を用いて外部に送信する(ステップ603)。例えば、前述のOOME514の発生後に回収用ファイル送信処理を行った場合、回収用ファイル"heapdump_201606012200.gz"と"heapdump_201606131200.gz"を外部に送信する。なお、外部の送信先は、あらかじめHDD104に記憶していることとする。また、この送信処理は一般的な外部へのファイル送信処理と同じであるため、処理の詳細は省略する。一方、回収用ファイルが存在しない場合、ファイルを送信することなく、処理を終了する。なおステップ603の後、送信済みの回収用ファイルをすべて削除してもよい。
以上が、回収用ファイル送信処理である。なおここでは、上記のステップ601における送信指示は、操作部106でユーザによる入力により発生することとしたが、別の処理により送信指示が発生してもよい。例えば、ステップ408で回収用ファイルを生成した後に、回収ファイル生成部303からファイル送信部306に送信指示を送信することとしてもよい。
以上のように、ステップ407とステップ408で生成した回収用ファイルを画像形成装置100の外部に送信することで、OutOfMemoryErrorの原因解析が可能となる。なお、ステップ405で生成し、ステップ409でファイルサイズを変更したヒープダンプファイルについては、外部への送信は行わない。なお本実施形態では、ヒープダンプファイルのファイルサイズを0としているが、その削除に所定時間を超える時間を要しない程度のサイズに縮小するのであれば必ずしも0でなくともよい。また、ヒープダンプファイルを削除するタイミングを本実施形態では画像形成装置100の電源投入時としたが、たとえばシャットダウン処理の中で行ってもよいし、あるいはユーザが明示的に指示したタイミングで行ってもよい。このように他のタイミングでヒープダンプファイルを削除してもよい。
[第2の実施形態]
第1の実施形態では、ヒープダンプファイルを生成する処理は、OutOfMemoryErrorを発生したときに行っていた。しかし、OutOfMemoryErrorを発生しない場合でも、別の条件を基にヒープダンプファイルを生成する処理を実行することも可能である。
本実施形態では、別の条件を基にヒープダンプファイルを生成する処理を、フローチャート図7を用いて説明する。なお、基本的な処理や制御は第1の実施形態と同じであるため、第1の実施形態と異なる点のみを説明する。具体的には、第1の実施形態では、図4のフローチャートのステップ403においてOutOfMemoryErrorの発生を待つ処理を行ったが、本実施形態ではこの処理が異なる。
画像形成装置100の初期化処理時の処理(ステップ401〜402)は、第1の実施形態と同じである。この後、シャットダウンを検知するまで、エラー検知部307は、システム的なエラーが発生したかをどうか判定する(ステップ701)。そしてエラーの発生を検知するまで、この判定を繰り返す。なおこのエラーとは、OutOfMemoryErrorだけではなく、RAM102やHDD104でのアクセスエラーや、操作部106からの応答なしエラーなどのCPU101で検知可能な全てのエラーである。そのため、画像形成装置100で印刷を行う際のトラーなしエラーや、紙つまりエラーなどもエラー検知部307で検知可能である。
エラー検知部307は、エラーを検知すると、ヒープダンプ生成部302に、ヒープダンプ生成要求を送信する。このヒープダンプ生成要求を受信したヒープダンプ生成部302は、第1の実施形態と同じく、JavaVM202の起動オプションで指定された生成パスにヒープダンプファイルが存在するかを判定する(ステップ404)。そして、存在しないと判定した場合は、ヒープダンプ生成部302はヒープダンプファイルを生成する(ステップ405)。この詳細の処理は、第1の実施形態と同じであるため、説明を省略する。
以上のように、画像形成装置100でOutOfMemoryError以外のエラーが発生した場合でも、画像形成装置100の起動時間に影響を与えずに、ヒープダンプファイルを生成することができる。これにより、OutOfMemoryErrorが発生する直前の状態や、何らかの原因でOutOfMemoryErrorが発生できないような状況においても、ヒープダンプファイルを用いた原因解析が可能となる。
以上が、第2の実施形態の説明である。また、ログファイルがヒープダンプファイルであるとしているが、エラーの種類に応じた他のログファイルを対象として本実施形態を実現することもできる。また、発生するエラーの種類が変わった場合にヒープダンプファイルを削除してもよい。このようにすることで、異なるエラーが発生した場合に、そのエラーに係るログファイルが保存されることがあり得る。
[その他の実施例]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
101 CPU、102 RAM、103 ROM、104 HDD、301 メモリ制御部、302 ヒープダンプ生成部、303 回収ファイル生成部

Claims (10)

  1. エラーの発生をトリガとして、ログファイルが無い場合にはログファイルを生成するログファイル生成手段と、
    前記ログファイル生成手段で生成した前記ログファイルを別名のファイルとして保存する別名ファイル生成手段と、
    前記ログファイルのファイルサイズを縮小するファイルサイズ変更手段と、
    前記ファイルサイズ変更手段により前記ファイルサイズを変更した前記ログファイルを、所定のタイミングで削除するファイル削除手段と
    を有することを特徴とする情報処理装置。
  2. 請求項1に記載の情報処理装置であって、
    前記別名ファイル生成手段は、前記別名のファイルの名称として前記別名のファイルの新旧を示す情報を含ませ、保存されている前記別名のファイルが所定数を超える場合には、古い方のファイルから削除することを特徴とする情報処理装置。
  3. 請求項1または2に記載の情報処理装置であって、
    前記ファイル削除手段は、前記情報処理装置の起動時に前記ログファイルを削除することを特徴とする記載の情報処理装置。
  4. 請求項1乃至3のいずれか一項に記載の情報処理装置であって、
    前記エラーは、メモリ不足エラーであり、前記ログファイルは、メモリの割り当てに関する情報を含むことを特徴とする情報処理装置。
  5. 請求項4に記載の情報処理装置であって、
    前記エラーは前記情報処理装置で動作するJavaアプリケーションによるOutOfMemoryErrorであり、前記ログファイルは、ヒープダンプファイルであることを特徴とする情報処理装置。
  6. 請求項1乃至5のいずれか一項に記載の情報処理装置であって、
    前記ファイルサイズ変更手段により縮小されるファイルサイズは0であることを特徴とする情報処理装置。
  7. 請求項1乃至6のいずれか一項に記載の情報処理装置であって、
    前記別名のファイルを外部に送信する送信手段を更に有することを特徴とする情報処理装置。
  8. 請求項7に記載の情報処理装置であって、
    前記送信手段により前記別名のファイルを外部に送信した後、送信済みの前記別名のファイルを削除することを特徴とする情報処理装置。
  9. 請求項1乃至8のいずれか一項に記載の情報処理装置としてコンピュータを機能させるためのプログラム。
  10. 情報処理装置において、
    エラーの発生をトリガとして、ログファイルが無い場合にはログファイルを生成し、
    生成した前記ログファイルを別名のファイルとして保存し、
    前記ログファイルのファイルサイズを縮小し、
    前記ファイルサイズが変更された前記ログファイルを、所定のタイミングで削除する
    ことを特徴とする情報処理装置の制御方法。
JP2016168551A 2016-08-30 2016-08-30 情報処理装置およびその制御方法 Pending JP2018036799A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016168551A JP2018036799A (ja) 2016-08-30 2016-08-30 情報処理装置およびその制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016168551A JP2018036799A (ja) 2016-08-30 2016-08-30 情報処理装置およびその制御方法

Publications (1)

Publication Number Publication Date
JP2018036799A true JP2018036799A (ja) 2018-03-08

Family

ID=61565929

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016168551A Pending JP2018036799A (ja) 2016-08-30 2016-08-30 情報処理装置およびその制御方法

Country Status (1)

Country Link
JP (1) JP2018036799A (ja)

Similar Documents

Publication Publication Date Title
KR102236522B1 (ko) 정보를 처리하기 위한 방법 및 장치
JP5681465B2 (ja) 情報処理システム、情報処理装置、準備方法、プログラムおよび記録媒体
US7574627B2 (en) Memory dump method, memory dump program and computer system
WO2017049828A1 (zh) 基于Linux的数据处理方法、装置和系统
US9229840B2 (en) Managing traces to capture data for memory regions in a memory
US10228993B2 (en) Data dump for a memory in a data processing system
WO2017059721A1 (zh) 一种信息存储方法和装置、及服务器
CN108509215B (zh) 一种系统软件的更换方法、装置、终端设备及存储介质
US11140291B2 (en) Information processing apparatus, control method thereof, and storage medium
US8776056B2 (en) Maintenance system, maintenance method and program for maintenance
KR20150052107A (ko) Bpram을 이용한 운영체제의 레이아웃 및 실행
US9965299B2 (en) Information processing apparatus, method for controlling the same, and storage medium
CN102053848A (zh) Linux操作系统的自动安装方法
JP2020016926A (ja) 情報処理装置、情報処理装置の制御方法、及び、プログラム
CN109660688B (zh) 信息处理装置及其控制方法
US9940334B2 (en) Image forming apparatus and control method thereof
JP2018036799A (ja) 情報処理装置およびその制御方法
CN110795113B (zh) 一种Redis集群服务的安装方法、服务器和介质
JP2004334679A (ja) 情報処理装置、情報処理装置のプログラム実行方式、情報処理装置のプログラム実行方式を記録した記憶媒体
JP6987530B2 (ja) 画像形成装置、情報処理方法及びプログラム
Kyöstilä Reducing the boot time of embedded Linux systems
JP2016095792A (ja) 情報処理装置、その制御方法、及びプログラム
US11397572B2 (en) Image forming apparatus capable of executing extension application, method of controlling same, and storage medium
US9378129B2 (en) Information processing apparatus, control method, and storage medium for memory management and dump processing based on memory usage
JP2021165961A (ja) 端末装置、情報処理方法、及びプログラム