JP2014078175A - 情報処理装置、その制御方法、及びプログラム - Google Patents

情報処理装置、その制御方法、及びプログラム Download PDF

Info

Publication number
JP2014078175A
JP2014078175A JP2012226328A JP2012226328A JP2014078175A JP 2014078175 A JP2014078175 A JP 2014078175A JP 2012226328 A JP2012226328 A JP 2012226328A JP 2012226328 A JP2012226328 A JP 2012226328A JP 2014078175 A JP2014078175 A JP 2014078175A
Authority
JP
Japan
Prior art keywords
memory
application
size
processing apparatus
information processing
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
JP2012226328A
Other languages
English (en)
Inventor
Kunimasa Fujisawa
邦匡 藤澤
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 JP2012226328A priority Critical patent/JP2014078175A/ja
Priority to US14/044,101 priority patent/US9378129B2/en
Publication of JP2014078175A publication Critical patent/JP2014078175A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0733Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a data processing system embedded in an image processing device, e.g. printer, facsimile, scanner
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Human Computer Interaction (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】アプリケーションが異常動作を行っている可能性の高いタイミングでメモリ情報を取得することにより、アプリケーションの障害調査の効率を向上させる仕組みを提供する。
【解決手段】本情報処理装置は、アプリケーションを実行するために現在使用している使用メモリのサイズと、保存されているアプリケーションが使用するメモリの最大サイズとを比較し、当該比較の結果、使用メモリのサイズが最大サイズ以下であれば、メモリの内容を外部記憶装置へ書き出すダンプ処理を実行せず、使用メモリのサイズが最大サイズより大きければ、当該メモリの内容を外部記憶装置へ書き出すダンプ処理を実行する。
【選択図】図9

Description

本発明は、単一のプロセス上で複数のアプリケーションを動作させる情報処理装置、その制御方法、及びプログラムに関するものである。
現在のMultifunction Peripheral(MFP)には、ソリューションの実現のため、ドキュメントのコピーやスキャン、印刷といったMFPに組み込まれた機能以外のアプリケーションを実行する機能を有するものが増えてきている。多くのMFPでは、アプリケーション実行環境としてJava(登録商標)の実行環境を有し、Javaで記述されたアプリケーションを実行することができる。アプリケーション実行環境の例としては、キヤノンのMEAP等が挙げられる。一方、PC上のJavaアプリケーションの場合には1アプリ1プロセスでアプリケーションを実行するが、MFPではCPUやメモリの制限のためOSGiフレームワークなどを使用して1つのJavaのプロセスで複数のアプリケーションを実行するものが多い。そのためMFP上で実行しているアプリケーションの1つにバグが有りメモリリークを起こしている場合、OutOfMemoryErrorが発生し全てのアプリケーションが停止してしまう可能性がある。
また、OutOfMemoryErrorはアプリケーションがメモリを要求したときに割り当てられるメモリが無かった場合に発生するため、問題のないアプリケーションの実行中に発生し、メモリリークを起こしているアプリケーションを特定することが困難となっていた。メモリリークを発見するためには次の2つの方法がとられてきた。1つはプロファイラというツールを使用しアプリケーションが生成したオブジェクトの状態を監視する方法である。もう1つはJavaVMの使用するヒープメモリの内容をダンプし(以下では、ヒープダンプと称する。)アプリケーションが生成したオブジェクトを解析する方法である。特許文献1には、コアダンプ処理が実行できないときに、着脱可能な記憶装置へ接続することによりコアダンプ処理を実現することが提案されている。
特開2009−193511号公報
しかしながら、上記従来技術には以下に記載する問題がある。例えば、プロファイラを使用してオブジェクトの状態を監視する場合、アプリケーションの実行速度が極端に低下するためCPUやメモリの制限が大きいMFPへの適用は困難である。一方、従来のヒープダンプは手動により任意のタイミングで実行するものであった。そのためメモリリークしているアプリケーションの特定に最適なOutOfMemoryErrorが発生する直前にヒープメモリの内容をダンプすることが困難であった。
本発明は、上述の問題に鑑みて行われたものであり、アプリケーションが異常動作を行っている可能性の高いタイミングでメモリ情報を取得することにより、アプリケーションの障害調査の効率を向上させる仕組みを提供することを目的とする。
本発明は、情報処理装置であって、アプリケーションを実行する実行手段と、前記実行手段によって前記アプリケーションを実行する際に該アプリケーションが使用する最大のメモリサイズを示す最大サイズを保存する保存手段と、前記アプリケーションによるメモリ要求を受け付ける受付手段と、前記受付手段によってメモリ要求を受け付けると、該アプリケーションを実行するために現在使用している使用メモリのサイズと、前記保存手段に保存されている該アプリケーションが使用するメモリの前記最大サイズとを比較する比較手段と、前記比較手段の比較の結果、前記使用メモリのサイズが前記最大サイズ以下であれば、メモリの内容を外部記憶装置へ書き出すダンプ処理を実行せず、前記使用メモリのサイズが前記最大サイズより大きければ、該メモリの内容を該外部記憶装置へ書き出すダンプ処理を実行するメモリ管理手段とを備えることを特徴とする。
本発明は、アプリケーションが異常動作を行っている可能性の高いタイミングでメモリ情報を取得することにより、アプリケーションの障害調査の効率を向上させる仕組みを提供できる。
画像処理装置の構成例を示す図。 画像処理装置のソフトウェア構成例を示す図。 一般的な画像処理装置の構成例を示す図。 アプリケーションプログラムファイル構成例を示す図。 アプリケーションを起動する際の起動処理のフローチャート。 使用メモリ量宣言テーブルの構成例を示す図。 JavaVMの通常のオブジェクト生成処理のフローチャート。 第1の実施形態の画像処理装置の構成例を示す図。 第1の実施形態のオブジェクト生成処理のフローチャート。 第2の実施形態の画像処理装置の構成例を示す図。 第2の実施形態のメモリ増加量記録処理のプローチャート。 第2の実施形態のオブジェクト生成処理のフローチャート。 第3の実施形態の画像処理装置の構成例を示す図。 第3の実施形態のオブジェクト生成処理のフローチャート。
以下、本発明を実施するための形態について図面を用いて説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものでなく、また実施形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
<画像処理装置の構成>
まず、図1を参照して、MFP等の画像処理装置のハードウェア構成例について説明する。なお、以下では、本発明に係る情報処理装置の一例として、画像処理装置100を用いて説明する。画像処理装置100は、CPU101、ROM102、RAM103、外部記憶装置104、USBHI/F制御部105、スキャナI/F制御部106、プリンタI/F制御部107、NVRAM(不揮発性メモリ)108、パネル制御部109、ネットワークI/F制御部110、スキャナ111、プリンタ112、及び操作パネル113を備える。
CPU101は、画像処理装置のソフトウェアプログラムを実行し、装置全体を統括的に制御する。ROM102は、リードオンリメモリであり、装置のブートプログラムや固定パラメータ等が格納されている。RAM103は、ランダムアクセスメモリであり、CPU101が装置を制御する際に、一時的なデータの格納などに使用する。外部記憶装置104は、インストールされたアプリケーションやアプリケーションのデータや印刷データの格納など、様々なデータの格納に使用する。
USBHI/F制御部105はUSBホストインタフェースを制御するためのものであり、様々なUSBデバイスとの通信を制御する。スキャナI/F制御部106は、スキャナ111を制御する装置である。プリンタI/F制御部107は、プリンタ112を制御する装置である。
NVRAM108は、不揮発性のメモリでありアプリケーション管理装置の各種設定値が保存される。パネル制御部109は、操作パネル113を制御し、各種情報の表示、ユーザからの指示入力を行なうためのものである。ネットワークI/F制御部110は、ネットワーク101とのデータの送受信を制御する。バス114には、CPU101、ROM102、RAM103、外部記憶装置104、USBHI/F制御部105、スキャナI/F制御部106、プリンタI/F制御部107、NVRAM108、パネル制御部109、ネットワークI/F制御部110が接続される。またバス114は、CPU101からの制御信号や各装置間のデータ信号が送受信されるシステムバスである。ICカードリーダ116は、認証を行うためのUSBデバイスである。
<制御構成>
次に、図2を参照して、一般的な画像処理装置の制御構成例について説明する。ハードウェア201はアプリケーション管理装置のソフトウェアを実行する。OS(オペレーティングシステム)202はプロセスの管理、メモリ管理、入出力管理を実行する。Nativeアプリ203はコピー等、機器の基本的な機能を実現するプログラムである。
画像処理装置のソフトウェア200は、JavaVM204とプリケーションプラットフォーム205とから構成される。JavaVM204は、Javaプログラムを実行する仮想マシンである。アプリケーションプラットフォーム205は、単一のJavaVM上で少なくとも一つ以上のアプリケーションプログラムの起動、停止、インストール、アンインストールといったアプリのライフサイクルの管理を行うプログラムである。アプリA206、アプリB207は、アプリケーションプラットフォーム205上で動作するアプリケーションプログラムである。JavaVM204から、アプリケーションプラットフォーム205及びアプリA206、アプリB207は、1つのJavaアプリケーション208として処理される。
<モジュール構成>
次に、図3を参照して、一般的な画像処理装置のソフトウェア200におけるモジュール構成について説明する。図2に示したように、ソフトウェア200は、アプリケーションプラットフォーム205と、JavaVM204とを含む。JavaVM204は、バイトコード実行部301、メモリ管理部302、及びヒープメモリ306を備える。
バイトコード実行部301は、Javaのプログラムコードであるバイトコードを解釈、実行する。ヒープメモリ306は、JavaVMが管理する、動的に確保可能なメモリ領域であり、Javaプログラムの実行によって生成されたJavaオブジェクトを保持する。メモリ管理部302はアプリケーションの使用するメモリの管理を行う。
メモリ管理部302は、オブジェクト生成部303、GC実行部304、及び使用メモリ量宣言取得部305から構成される。オブジェクト生成部303は、バイトコード実行部301で実行されるプログラムコードの指示に従ってJavaのオブジェクトの生成を行う。GC部304は、ヒープメモリ306に保存されているJavaオブジェクトのうち使用されなくなったものを削除するガーベージコレクションを実行する。使用メモリ量宣言取得部305は、使用メモリ量宣言テーブル308からアプリケーションが使用すると宣言しているメモリの合計値を取得する。
アプリケーションプラットフォーム205は、アプリケーション管理部307と使用メモリ量宣言テーブル308から構成される。アプリケーション管理部307は、アプリケーション206、207のインストール、起動、停止、アンインストールといったアプリケーションのライフサイクルの管理を行う。使用メモリ量宣言テーブル308は、アプリケーションプラットフォーム上で実行されているアプリケーションが使用すると宣言しているメモリのサイズを保持する。
<プログラムファイル>
次に、図4を参照して、Javaアプリケーションのプログラムファイル401について説明する。プログラムファイル401は、プログラムの情報を記述するマニフェスト部402とバイトコード403とから構成される。マニフェスト部402には、アプリケーションの識別子404、バージョンやアプリケーションが使用する最大メモリ量403等が記述されている。
<起動処理>
次に、図5を参照して、アプリケーション管理部307がアプリケーションを起動する際の起動処理について説明する。以下で説明する処理は、CPU101がROM102に格納された制御プログラム等をRAM103において実行することにより実現される。
ユーザからアプリケーションの起動指示が実行されると起動処理が開始される。S502において、アプリケーション管理部307は、外部記憶装置104から起動が指示されたアプリケーションのプログラムファイル401をロードする。続いて、S503において、アプリケーション管理部307は、ロードしたプログラムファイル401からマニフェスト部402を取得する。その後、S504において、アプリケーション管理部307は、取得したマニフェスト部402に記述されているMaxMemoryUsageの値を取得する。
次に、S505において、アプリケーション管理部307は、MaxMemoryUsage情報が取得できたか否かを判定する。取得できればS506に進み、取得できなければS511に進む。S511において、アプリケーション管理部307は、MaxMemoryUsage情報が取れないため、正常なアプリケーションではないとして、アプリケーションの起動に失敗したと判断し、起動エラーを発行して処理を終了する。
S506において、アプリケーション管理部307は、使用メモリ量宣言テーブル308から現在起動しているアプリケーションの使用メモリ量宣言の合計値を取得する。続いて、S507において、アプリケーション管理部307は、S504で取得したMaxMemoryUsageの値と、S506で取得した使用メモリ量宣言の合計値の和とJavaVM204の管理するヒープメモリ306のサイズとを比較する。合計値がヒープメモリ306のサイズを超えていなければS508に遷移し、超えていればS511に遷移してアプリケーションの起動に失敗したと判断し、起動エラーを発行して処理を終了する。
S508において、アプリケーション管理部307は、マニフェスト部402に記述されているアプリ識別情報であるApp−IDの値を取得する。続いて、S509において、アプリケーション管理部307は、S508で取得したApp−IDの値と、S504で取得したMaxMemoryUsage情報とを、使用メモリ量宣言テーブル308に保存する。さらに、S510において、アプリケーション管理部307は、アプリケーションの実行を開始し、アプリケーション開始処理を終了する。
<使用メモリ量宣言テーブル>
次に、図6を参照して、使用メモリ量宣言テーブル308について説明する。使用メモリ量宣言テーブル308は、アプリ識別子601と、各アプリにおける最大使用メモリ602のテーブルと、最大使用メモリの合計値603とから構成される。ここでは、アプリA及びアプリBの2つのアプリケーションが管理されており、それぞれの最大使用メモリ602が40MBであるため、合計値603は80MBとなっている。
<JavaVMのガーベージコレクション>
ここで、JavaVMのガーベージコレクションについて説明する。一般的にJavaVMは高速化のため世代別メモリ管理という手法をとる。これはJavaのメモリをNew領域とOld領域に二分し、ライフサイクル上、短命のオブジェクトをNew領域に長命のオブジェクトをOld領域に格納するものである。合わせて、これらの領域から不要になったオブジェクトを削除し、メモリ解放するための機構としてGC実行部304を備えている。このGCのアルゴリズムにも複数の種類が存在し、New領域の不足がGC起点になる場合はScavengeGCと呼ばれる処理方式、Old領域の不足が起点となる場合はFullGCと呼ばれる処理方式が利用されている。
New領域は一般にOld領域よりも容量が小さいため、New領域のみを対象とするScavengeGCは高速に実行される。一方、大容量のOld領域を対象とするFullGCは大量の空きメモリを確保できる可能性があるが実行速度は低速である。
ScavengeGCとFullGC、New領域とOld領域の使い分けはあくまでも一例であり、小容量高速なGCと大容量低速なGCの組み合わせによるパフォーマンスチューニングの方法はこの方法に限定されるものではない。
<オブジェクト生成処理>
次に、図7を参照して、通常のJavaVMでのオブジェクト生成処理(メモリ要求)について説明する。JavaVMでガーベージコレクションが発生するタイミングの1つとしてオブジェクト生成時が挙げられる。以下で説明する処理は、CPU101がROM102に格納された制御プログラム等をRAM103において実行することにより実現される。
まず、アプリケーションのオブジェクト生成のバイトコードがバイトコード実行部301で実行されると、オブジェクト生成部303は、ヒープメモリのNew領域に対してオブジェクトを生成するのに必要なサイズのメモリ要求を行う。メモリ管理部302が当該メモリ要求を受け付けると、以下の処理が開始される。したがって、ここでは、メモリ管理部302が受付手段の一例として動作する。
S702において、オブジェクト生成部303は、空きメモリがあるかを調べ、必要な空きメモリがあればS707に遷移し、空きメモリを使用してオブジェクトを生成し、処理を終了する。一方、空きメモリが無ければS703に遷移する。S703において、GC部304は、New領域に対してScavengeGCを実行する。
次に、S704において、オブジェクト生成部303は、New領域に必要な空きメモリがあるかを調べ、必要な空きメモリがあればS707に遷移し、空きメモリを使用してオブジェクトを生成し、処理を終了する。一方、空きメモリが無ければS705に遷移する。S705において、GC部304は、Old領域に対してFullGCを実行する。
次に、S706において、オブジェクト生成部303は、Old領域に必要な空きメモリがあるかを調べ、必要な空きメモリがあればS707に遷移し、空きメモリを使用してオブジェクトを生成し、処理を終了する。一方、空きメモリが無ければS708に遷移し、オブジェクト生成部303は、OutOfMemoryErrorを発生させ、処理を終了する。
<第1の実施形態>
以下では、図8及び図9を参照して、本実施形態において特有の構成及び制御について説明する。なお、図1乃至図7で説明したことと異なる部分について主に説明する。まず、図8を参照して、本実施形態の画像処理装置のソフトウェア200を構成するモジュール構成例について説明する。
図8に示すJavaVM204は、図3に示す構成に加えてヒープダンプ部801をさらに含むメモリ管理部302を有する。ヒープダンプ部801は、ヒープメモリの内容を外部記憶装置104にファイルとして書きだす処理を実行する。
次に、図9を参照して、本実施形態に係るJavaVM204でのオブジェクト生成処理(メモリ要求)について説明する。以下で説明する処理は、CPU101がROM102に格納された制御プログラム等をRAM103において実行することにより実現される。なお、図7と同様の処理については、同一のステップ番号を付し、説明を省略する。即ち、以下では、S705の処理に続いて実行されるS901乃至S904の処理について説明する。
S705でOld領域に対してFullGCを実行すると、S901に進み、メモリ管理部302は、現在使用しているヒープメモリのサイズを取得する。さらに、S902において、使用メモリ量宣言取得部305は、使用メモリ量宣言テーブル308から最大使用メモリの合計値603を取得する。
次に、S903において、メモリ管理部302は、S901で取得した現在使用しているヒープメモリのサイズと、S902で取得した最大使用メモリの合計値(規定最大サイズ)とを比較する。使用しているヒープメモリ306の最大サイズ以下であればS706に遷移する。一方、使用しているヒープメモリ306の最大サイズよりも大きければ、アプリケーションがメモリリークなどの問題を持っている可能性があるとしてS904に遷移する。S904において、ヒープダンプ部801は、ヒープダンプ(ダンプ処理)を実行し、S706に遷移する。
ここでは、S901で取得した使用ヒープメモリサイズとS902で取得した最大使用メモリの合計値を直接比較しているが、あくまでも一例であり、S902で取得した最大使用メモリの合計値を引数とする特定の関数の返値と使用しているヒープメモリのサイズを比較してもよい。
その後、S706において、メモリ管理部302は、Old領域に必要な空きメモリがあるかを調べ、必要な空きメモリがあればS707に遷移する。S707において、メモリ管理部302は、オブジェクト生成部303によって空きメモリを使用してオブジェクトを生成し、処理を終了する。一方、空きメモリが無ければS708に遷移し、メモリ管理部302は、OutOfMemoryError(エラー出力)を発生させ、処理を終了する。
つまり、本実施形態では、S903の判定で使用メモリサイズが規定最大サイズを超えていれば、当該アプリケーションにおいてメモリリーク等の問題が発生している可能性が高いと判断して、ヒープメモリ306のヒープダンプを実行する。これにより、本実施形態によれば、アプリケーションに問題が発生している可能性が高いと判断したタイミングでのヒープメモリのヒープダンプを実行することができる。よって、最適なタイミングのヒープダンプの結果を解析することができ、アプリケーションの障害調査の効率を向上させることができる。
<第2の実施形態>
以下では、図10乃至図12を参照して、本発明の第2の実施形態について説明する。なお、以下では、上記第1の実施形態と異なる部分についてのみ説明する。まず、図10を参照して、本発明の画像処理装置のソフトウェア200を構成するモジュール構成例について説明する。図10に示すように、本実施形態に係るメモリ管理部302は、図8の構成に加えて、アプリケーションごとのヒープメモリの変化量を記録するヒープメモリ変化量記録部1001を備える。ヒープメモリ変化量記録部1001の処理については以下で図11を参照して詳細に説明する。
図11は、ヒープメモリ変化量記録部1001がヒープメモリの変化量を記録する際の処理手順と、ヒープメモリ変化量記録部1001が有するヒープメモリの変化量を記録する長さ2の配列1101とを示す。ヒープメモリ変化量記録部1001は、例えば、スレッドとして実装されうる。
メモリ変化量記録処理が開始されると、S1103において、ヒープメモリ変化量記録部1001は、対象となるアプリケーションが使用しているヒープメモリのサイズを取得する。続いて、S1104において、ヒープメモリ変化量記録部1001は、S1103で取得した値を配列1101の添え字Indexで示される要素に保存する。
次に、S1105において、ヒープメモリ変化量記録部1001は、保存する配列1101のIndexを更新する「Index =(Index+1)%2」。その後、S1106において、ヒープメモリ変化量記録部1001は、予め定められた時間スリープして、ヒープメモリ変化量記録処理を終了する。ヒープメモリ変化量記録部1001は、ヒープメモリ変化量記録処理を終了後すぐに次のヒープメモリ変化量記録処理を開始する。つまり、ヒープメモリ変化量記録部1001は、定期的に使用ヒープメモリ量(使用量)を取得しておく。
次に、図12を参照して、本実施形態のJavaVM204でのオブジェクト生成処理(メモリ要求)について説明する。以下で説明する処理は、CPU101がROM102に格納された制御プログラム等をRAM103において実行することにより実現される。なお、図9と同様の処理については、同一のステップ番号を付し、説明を省略する。即ち、以下では、S903の処理に続いて実行されるS1201乃至S1208の処理について説明する。
S903において、メモリ管理部302は、S901で取得した現在使用しているヒープメモリのサイズとS902で取得した最大使用メモリの合計値とを比較する。ここで、使用しているヒープメモリのサイズが小さければS706に遷移する。一方、使用しているヒープメモリのサイズが大きければ、アプリケーションがメモリリークなどの問題を持っている可能性があるとしてS1201に遷移する。ここでは、S901で取得した使用ヒープメモリサイズとS902で取得した最大使用メモリの合計値を直接比較している。しかしながら、これはあくまでも一例であり、S902で取得した最大使用メモリの合計値を引数とする特定の関数の返値と使用しているヒープメモリのサイズを比較してもよい。
S1201において、メモリ管理部302は、ヒープメモリ変化量記録部1001からヒープメモリ変化量を取得する。ここで、ヒープメモリ変化量記録部1001は、S1204乃至S1208の処理を実行し、ヒープメモリ変化量をメモリ管理部302へ返す。具体的には、ヒープメモリ変化量取得要求を受け取ると、S1204において、ヒープメモリ変化量記録部1001は、Indexの値を変数TmpIndexにコピーする。続いて、S1205において、ヒープメモリ変化量記録部1001は、配列1101の添字TmpIndexの値を取得する。
S1206において、ヒープメモリ変化量記録部1001は、Index=(Index+1)%2の計算を実行し、Indexの値を更新する。続いて、S1207において、ヒープメモリ変化量記録部1001は、配列1101の添字TmpIndexの値を取得する。
その後、S1208において、ヒープメモリ変化量記録部1001は、[S1205で取得した値]−[S1207で取得した値]で導出した変化量をオブジェクト生成部303に返し、ヒープメモリ変化量取得処理を終了する。
S1202において、メモリ管理部302は、S1201で取得したヒープメモリ変化量と特定の値(規定サイズ)とを比較する。特定の値以下であればS706に遷移する。特定の値より大きければS904に遷移する。本実施形態において、特定の値は、オブジェクト生成コードが暴走していると経験的に決定された値であるが、他の条件から決まる値であってもよい。
以上説明したように、本実施形態によれば、ヒープメモリの変化量を記録し、記録した変化量に応じて、ヒープダンプを実行するか否かを決定する。具体的には、変化量が特定の値よりも大きければ、当該アプリケーションにおいてメモリリーク等の問題が発生している可能性が高いと判断して、ヒープダンプを実行する。これにより、本実施形態によれば、アプリケーションに問題が発生している可能性が高いと判断したタイミングでのヒープメモリのヒープダンプを実行することができる。よって、最適なタイミングのヒープダンプの結果を解析することができ、アプリケーションの障害調査の効率を向上させることができる。
<第3の実施形態>
以下では、図13及び図14を参照して、本発明の第3の実施形態について説明する。まず、図13を参照して、本実施形態に係る画像処理装置のソフトウェア200におけるモジュール構成について説明する。図13に示すように、本実施形態に係るメモリ管理部302は、図8の構成に加えてタスク占有度取得部1301を有する。また、JavaVM204は、さらに、Javaアプリケーションの生成したスレッドを管理するスレッド管理部1302を有する。
バイトコード実行部301でスレッドの生成が行われると、そのスレッドに対応するタスクの情報をスレッド管理部1302に追加する。また、スレッドの消滅が行われるとそのスレッドに対応するタスクの情報をスレッド管理部1302から削除する。タスク占有度取得部1301は、OS202からタスクの情報を取得し、スレッド管理部1302に保存されているタスク占有度のうち、最大のものを返す。ここで、タスク占有度とは、当該タスクに関する処理がCPU101の動作に占める割合を示す。本実施形態によれば、タスク占有度取得部1301が返すタスク占有度は、Javaアプリケーションのスレッドに対応するタスクのうち最大のものであるが、占有度上位のJavaアプリケーションのスレッドに対応するタスクの占有度の合計であってもよい。
次に、図14を参照して、本実施形態のJavaVM204でのオブジェクト生成処理(メモリ要求)について説明する。のフローチャートである。以下で説明する処理は、CPU101がROM102に格納された制御プログラム等をRAM103において実行することにより実現される。なお、図9と同様の処理については、同一のステップ番号を付し、説明を省略する。即ち、以下では、S903の処理に続いて実行されるS1401及びS1402の処理について説明する。
S903において、メモリ管理部302は、S901で取得した現在使用しているヒープメモリのサイズとS902で取得した最大使用メモリの合計値を比較する。ここで、使用しているヒープメモリのサイズが小さければS706に遷移する。一方、使用しているヒープメモリのサイズが大きければ、アプリケーションがメモリリークなどの問題を持っている可能性があるとしてS1401に遷移する。ここでは、S901で取得した使用ヒープメモリサイズとS902で取得した最大使用メモリの合計値を直接比較している。しかしながら、これはあくまでも一例であり、S902で取得した最大使用メモリの合計値を引数とする特定の関数の返値と使用しているヒープメモリのサイズを比較してもよい。
S1401において、メモリ管理部302は、タスク占有度取得部1301からJavaプログラムに関連付けられたタスクのタスク占有度を取得する。続いて、S1402において、メモリ管理部302は、S1401で取得したタスク占有度が特定の値を超えているかを判定する特定の値以下であればS706に遷移する。一方、特定の値より大きければS904に遷移する。本実施形態において、特定の値はオブジェクト生成を行うJavaプログラムが暴走していると経験的に決定された値であるが、他の条件から決まる値であってもよい。
以上説明したように、本実施形態によれば、タスクのタスク占有度に応じて、ヒープダンプを実行するか否かを決定する。具体的には、タスク占有度が特定の値よりも大きければ、当該アプリケーションにおいてメモリリーク等の問題が発生している可能性が高いと判断して、ヒープダンプを実行する。これにより、本実施形態によれば、アプリケーションに問題が発生している可能性が高いと判断したタイミングでのヒープメモリのヒープダンプを実行することができる。よって、最適なタイミングのヒープダンプの結果を解析することができ、アプリケーションの障害調査の効率を向上させることができる。
<その他の実施例>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。

Claims (9)

  1. 情報処理装置であって、
    アプリケーションを実行する実行手段と、
    前記実行手段によって前記アプリケーションを実行する際に該アプリケーションが使用する最大のメモリサイズを示す最大サイズを保存する保存手段と、
    前記アプリケーションによるメモリ要求を受け付ける受付手段と、
    前記受付手段によってメモリ要求を受け付けると、該アプリケーションを実行するために現在使用している使用メモリのサイズと、前記保存手段に保存されている該アプリケーションが使用するメモリの前記最大サイズとを比較する比較手段と、
    前記比較手段の比較の結果、前記使用メモリのサイズが前記最大サイズ以下であれば、メモリの内容を外部記憶装置へ書き出すダンプ処理を実行せず、前記使用メモリのサイズが前記最大サイズより大きければ、該メモリの内容を該外部記憶装置へ書き出すダンプ処理を実行するメモリ管理手段と
    を備えることを特徴とする情報処理装置。
  2. 前記アプリケーションが使用している前記メモリの変化量を記録する記録手段をさらに備え、
    前記メモリ管理手段は、
    前記使用メモリのサイズが前記最大サイズより大きく、かつ、前記記録手段に記録された前記メモリの変化量が規定のサイズより大きい場合にのみ、該メモリの内容を該外部記憶装置へ書き出すダンプ処理を実行することを特徴とする請求項1に記載の情報処理装置。
  3. 前記記録手段は、
    前記アプリケーションが使用している前記メモリの使用量を定期的に記録し、異なるタイミングの使用量を比較することで前記変化量を導出することを特徴とする請求項2に記載の情報処理装置。
  4. 前記情報処理装置を統括的に制御する制御手段と、
    前記アプリケーションを実行させるための処理が、前記制御手段の動作に占める割合を示す占有度を取得する取得手段をさらに備え、
    前記メモリ管理手段は、
    前記使用メモリのサイズが前記最大サイズより大きく、かつ、前記取得手段によって取得された前記占有度が規定のサイズより大きい場合にのみ、該メモリの内容を該外部記憶装置へ書き出すダンプ処理を実行することを特徴とする請求項1に記載の情報処理装置。
  5. 前記取得手段は、
    前記制御手段で動作するオペレーティングシステムから当該アプリケーションに関連付けられたタスクの占有度を取得することを特徴とする請求項4に記載の情報処理装置。
  6. 前記メモリ管理手段は、さらに、前記受付手段によって受け付けたメモリ要求において要求されたメモリサイズが前記メモリにおいて確保できない場合に、エラー出力を行うことを特徴とする請求項1乃至5の何れか1項に記載の情報処理装置。
  7. 前記アプリケーションは、Javaアプリケーションであり、
    前記メモリは、ヒープメモリであることを特徴とする請求項1乃至6の何れか1項に記載の情報処理装置。
  8. 情報処理装置の制御方法であって、
    実行手段が、アプリケーションを実行する実行ステップと、
    保存手段が、前記実行ステップにおいて前記アプリケーションを実行する際に該アプリケーションが使用する最大のメモリサイズを示す最大サイズを保存する保存ステップと、
    受付手段が、前記アプリケーションによるメモリ要求を受け付ける受付ステップと、
    比較手段が、前記受付ステップにおいてメモリ要求を受け付けると、該アプリケーションを実行するために現在使用している使用メモリのサイズと、前記保存手段に保存されている該アプリケーションが使用するメモリの前記最大サイズとを比較する比較ステップと、
    メモリ管理手段が、前記比較ステップの比較の結果、前記使用メモリのサイズが前記最大サイズ以下であれば、メモリの内容を外部記憶装置へ書き出すダンプ処理を実行せず、前記使用メモリのサイズが前記最大サイズより大きければ、該メモリの内容を該外部記憶装置へ書き出すダンプ処理を実行するメモリ管理ステップと
    を実行することを特徴とする情報処理装置の制御方法。
  9. 請求項8に記載された情報処理装置の制御方法における各ステップを、コンピュータに実行させるためのプログラム。
JP2012226328A 2012-10-11 2012-10-11 情報処理装置、その制御方法、及びプログラム Pending JP2014078175A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012226328A JP2014078175A (ja) 2012-10-11 2012-10-11 情報処理装置、その制御方法、及びプログラム
US14/044,101 US9378129B2 (en) 2012-10-11 2013-10-02 Information processing apparatus, control method, and storage medium for memory management and dump processing based on memory usage

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012226328A JP2014078175A (ja) 2012-10-11 2012-10-11 情報処理装置、その制御方法、及びプログラム

Publications (1)

Publication Number Publication Date
JP2014078175A true JP2014078175A (ja) 2014-05-01

Family

ID=50476529

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012226328A Pending JP2014078175A (ja) 2012-10-11 2012-10-11 情報処理装置、その制御方法、及びプログラム

Country Status (2)

Country Link
US (1) US9378129B2 (ja)
JP (1) JP2014078175A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9003394B2 (en) 2007-07-10 2015-04-07 Ricoh Company, Ltd. Program determining apparatus and program determining method

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7895588B2 (en) * 2004-12-20 2011-02-22 Sap Ag System and method for detecting and certifying memory leaks within object-oriented applications
US7434206B2 (en) * 2005-03-10 2008-10-07 Hewlett-Packard Development Company, L.P. Identifying memory leaks in computer systems
US20070038939A1 (en) * 2005-07-11 2007-02-15 Challen Richard F Display servers and systems and methods of graphical display
US8001341B2 (en) * 2008-01-23 2011-08-16 International Business Machines Corporation Managing dynamically allocated memory in a computer system
JP5146000B2 (ja) 2008-02-18 2013-02-20 株式会社リコー 制御装置、画像処理装置、メモリ情報保存制御方法、メモリ情報保存制御プログラム及び記憶媒体
JP5381624B2 (ja) * 2009-11-04 2014-01-08 富士通株式会社 メモリ管理機能を有するプログラム及び装置
JP2011107746A (ja) * 2009-11-12 2011-06-02 Hitachi Ltd メモリ管理方法、計算機システム及びプログラム
CN102955719B (zh) * 2011-08-31 2016-06-22 国际商业机器公司 疑似内存泄漏的确定方法及装置
US9043653B2 (en) * 2012-08-31 2015-05-26 International Business Machines Corporation Introspection of software program components and conditional generation of memory dump

Also Published As

Publication number Publication date
US20140108762A1 (en) 2014-04-17
US9378129B2 (en) 2016-06-28

Similar Documents

Publication Publication Date Title
US9542228B2 (en) Image processing apparatus, control method thereof and storage medium
JP5980916B2 (ja) コンピュータにより実行される方法及びコンピュータシステム
EP2765525B1 (en) Apparatus, non-transitory computer readable information recording medium and information recording method
US8443178B2 (en) Operating system image shrinking apparatus and method and computer readable tangible medium storing a program for operating system image shrinking
JP2014520346A (ja) コンピュータにより実行される方法及びコンピュータシステム
JP6263981B2 (ja) 情報処理装置、情報処理装置の起動方法、及び、プログラム
US9310877B2 (en) Apparatus and power-saving method for controlling a return to a normal power mode
JP6548379B2 (ja) 情報処理装置およびその制御方法、並びにプログラム
US10324667B2 (en) Program processing apparatus and method, and image forming apparatus
US9588755B2 (en) Information processing apparatus capable of controlling installation of application, method of controlling the same, and storage medium
US10885409B2 (en) Print data processing apparatus
US8614822B2 (en) Print data processing apparatus, print data processing method, and storage medium
JP2014078175A (ja) 情報処理装置、その制御方法、及びプログラム
US20140372806A1 (en) Virtual machine system and information storing processing method
JP2017126293A (ja) 情報処理装置及びリソース管理方法
US9218275B2 (en) Memory management control system, memory management control method, and storage medium storing memory management control program
US8914806B2 (en) Information processing apparatus and virtual storage management method, and storage medium for restriction on process swapping based on process attributes and processor utilization
CN111949377B (zh) Web中间件的jvm参数优化方法、装置、服务器及存储介质
JP7186541B2 (ja) 画像処理装置、その制御方法、及びプログラム
US10992834B2 (en) Image processing apparatus, method for controlling the same, and computer-readable storage medium
US20160266960A1 (en) Information processing apparatus and kernel dump method
US8913257B2 (en) Image forming apparatus, method and program of managing the image forming apparatus by reserving area for identified counter
JP6873772B2 (ja) 情報処理装置、情報処理装置の制御方法及びアプリケーション管理方法
JP5111326B2 (ja) 電子機器
CN107153554B (zh) 信息处理装置和库管理方法