JP6223001B2 - 画像処理装置、その制御方法、及びプログラム - Google Patents

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

Info

Publication number
JP6223001B2
JP6223001B2 JP2013120103A JP2013120103A JP6223001B2 JP 6223001 B2 JP6223001 B2 JP 6223001B2 JP 2013120103 A JP2013120103 A JP 2013120103A JP 2013120103 A JP2013120103 A JP 2013120103A JP 6223001 B2 JP6223001 B2 JP 6223001B2
Authority
JP
Japan
Prior art keywords
application
memory
control unit
class
image 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.)
Expired - Fee Related
Application number
JP2013120103A
Other languages
English (en)
Other versions
JP2014239302A5 (ja
JP2014239302A (ja
Inventor
邦匡 藤澤
邦匡 藤澤
長田 守
守 長田
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 JP2013120103A priority Critical patent/JP6223001B2/ja
Priority to US14/284,763 priority patent/US9542228B2/en
Priority to KR1020140068234A priority patent/KR101702708B1/ko
Priority to CN201410251275.2A priority patent/CN104243743B/zh
Publication of JP2014239302A publication Critical patent/JP2014239302A/ja
Publication of JP2014239302A5 publication Critical patent/JP2014239302A5/ja
Application granted granted Critical
Publication of JP6223001B2 publication Critical patent/JP6223001B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3013Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is an embedded system, i.e. a combination of hardware and software dedicated to perform a certain function in mobile devices, printers, automotive or aircraft systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3485Performance evaluation by tracing or monitoring for I/O devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/504Resource capping
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Memory System (AREA)
  • Facsimiles In General (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、単一のプロセス上で複数のアプリケーションを動作させる画像処理装置、その制御方法、及びプログラムに関するものである。
現在のMultifunction Peripheral(MFP)は、ドキュメントのコピーやスキャン、印刷といったMFPに組み込まれた機能以外のアプリケーションを実行する機能を有するものが増えている。多くのMFPではアプリケーション実行環境としてJavaの実行環境を有し、Java(登録商標)で記述されたアプリケーションを実行することができる。アプリケーション実行環境の例としてはキヤノン(登録商標)のMEAP(登録商標)等があげられる。
一方、PC上のJavaアプリケーションの場合は1アプリ1プロセスでアプリケーションを実行するが、MFPではCPUやメモリの制限のためOSGiフレームワークなどを使用して1つのJavaのプロセスで複数のアプリケーションを実行するものが多い。そのためMFP上で実行しているアプリケーションの1つにバグがありメモリリークを起こすと、OutOfMemoryErrorが発生し全てのアプリケーションが停止してしまう可能性がある。また、OutOfMemoryErrorはアプリケーションがメモリを要求したときに割り当てられるメモリが無かった場合に発生するため、問題のないアプリケーションの実行中に発生することがある。そのためメモリリークを起こしているアプリケーションを特定することは困難であった。
特許文献1には、スレッド毎にメモリを計測する技術が提案されている。しかし、後述する図13に示すように1つのスレッドが複数のアプリケーションのコードを実行するような場合にはアプリケーション毎の使用メモリを計測することができなかった。
現行では、メモリリークを発見するために次の2つの方法が考えられる。一つはプロファイラというツールを使用しアプリケーションが生成したオブジェクトの状態を監視する方法である。もう一つはJavaVMの使用するヒープメモリの内容をダンプし(以下では、ヒープダンプと称する。)アプリが生成したオブジェクトを解析する方法である。
このうちプロファイラを使用してオブジェクトの状態を監視する場合、アプリケーションの実行速度が極端に低下するためCPUやメモリの制限が大きいMFPへの適用は困難である。そのため、ヒープダンプを実行しアプリが生成したオブジェクトを解析する手法が用いられてきた。同様に、アプリケーション実行環境として使用可能なディスク容量が予め決められている場合がある。ディスク・フルの場合は、メモリリークと異なり、MFPを再起動しても自動的に復旧することがない。そのため、非特許文献1には、アプリケーションが予め使用量を宣言し、それを超えないようにインストール制限を行う技術が公開されている。
特開2005−269439号公報
キヤノン、"iR−ADV マニュアル"、「アプリケーションのインストール」ページ、「アプリケーションを使用できる状態にする」ページ、[online]、[平成25年5月17日検索]、インターネット<URL:http://cweb.canon.jp/manual/ir-adv/>
しかしながら、上記従来技術には以下に記載する問題がある。従来のヒープダンプでは取得したヒープダンプ情報をデバイスから取り出して解析することによりメモリリークを起こしているアプリケーションを見つけ、アプリケーションの使用するメモリ量を集計している。そのためリアルタイムで個々のアプリケーションのメモリ使用量を知ることはできない。一方、プロファイラでは、アプリケーションの実行速度が極端に低下するため、現実的にリアルタイムで個々のアプリケーションの使用するメモリ量を計測することは困難であった。
また、アプリケーションが予めディスク使用量を宣言し、それを超えないようにインストール制限を行う場合であっても、MFP上で実行しているアプリケーションの1つにバグがあり、アプリケーション実行環境全体がディスク・フルになる可能性がある。その場合、バグのないアプリケーションでも、書き込みエラーが発生し、正常に動作を継続できなくなる可能性がある。
本発明は、上述の問題に鑑みて成されたものであり、パフォーマンスを維持したまま個々のアプリケーションで使用されるメモリ使用量又はディスク使用量をリアルタイムで計測する仕組みを提供することを目的とする。
本発明は、少なくとも、アプリケーション制御部と、システム制御部を有する画像処理装置であって、前記アプリケーション制御部は、アプリケーションの起動要求に応じて、該アプリケーションのクラスのクラスファイルを読み込み、当該クラスをロードさせる制御手段を有し、前記システム制御部は、
前記クラスをロードして、生成するオブジェクトに使用するメモリを確保し、スレッドに記録されたアプリケーション情報を前記確保したメモリに記録するとともに、当該オブジェクトを生成するオブジェクト生成手段を有し、前記アプリケーション制御部は、さらに、起動要求を受けたアプリケーションと前記アプリケーションを起動することによって使用したメモリとを、アプリケーション毎に紐付けて管理するメモリ管理手段を有し、前記システム制御部は、複数のアプリケーションを一つのアプリケーションとして扱い、
前記オブジェクト生成手段により生成されたオブジェクトが複数ある場合は、オブジェクト毎に、メモリを使用しているアプリケーションを関連付けることを特徴とする。
また、本発明は、少なくとも、アプリケーション制御部と、システム制御部を有する画像処理装置であって、前記アプリケーション制御部は、アプリケーションの起動要求に応じて、該アプリケーションのクラスのクラスファイルを読み込み、当該クラスをロードさせる制御手段を有し、前記システム制御部は、前記クラスをロードして、生成するオブジェクトに使用するファイルサイズを確保し、スレッドに記録されたアプリケーション情報を前記確保したファイルサイズをディスク使用量として記録するとともに、当該オブジェクトを生成するオブジェクト生成手段を有し、前記アプリケーション制御部は、さらに、起動要求を受けたアプリケーションと前記アプリケーションを起動することによって使用したディスクとを、アプリケーション毎に紐付けて管理するディスク管理手段を有し、前記システム制御部は、複数のアプリケーションを一つのアプリケーションとして扱い、前記オブジェクト生成手段により生成されたオブジェクトが複数ある場合は、オブジェクト毎に、メモリを使用しているアプリケーションを関連付けることを特徴とする。
本発明は、パフォーマンスを維持したまま個々のアプリケーションで使用されるメモリ使用量又はディスク使用量をリアルタイムで計測する仕組みを提供できる。
アプリケーション管理装置の構成を示す図。 アプリケーション管理装置のソフトウェア構成を示す図。 アプリケーション管理装置のモジュール構成を示す図。 マニフェストファイル。 アプリ用クラスローダテーブル、使用メモリテーブル。 クラスロード処理のフローチャート。 TASKINFOクラスのメソッドが追加されたコードの例を示す図。 第1の実施形態のスレッド構造体の図。 第1の実施形態のTASKINFO命令が挿入されたメソッドの実行時のフローチャート。 オブジェクトの構造体、及びヒープメモリを示す図。 第1の実施形態のオブジェクト生成処理を示すフローチャート。 GC処理のフローチャート。 複数のアプリケーション間での呼び出し処理の例を示す図。 第2の実施形態のスレッド構造体図。 第2の実施形態のTASKINFO命令が挿入されたメソッドの実行時のフローチャート。 第2の実施形態のオブジェクト生成処理を示すフローチャート。 第3の実施形態のアプリケーション管理装置の構成を示す図。 使用メモリ量宣言テーブル。 第3の実施形態のオブジェクト生成処理を示すフローチャート。 第4の実施形態のアプリケーション管理装置の構成を示す図。 使用ディスク・テーブル2002及び使用ディスク量宣言テーブル2003の構成を示す図。 第4の実施形態のマニフェストファイルを示す図。 第4の実施形態の起動時のフローチャート。 FileOutputStreamオブジェクト生成時のフローチャート。 FileOutputStreamオブジェクトのwriteメソッド実行時のフローチャート。 RandomAccessFileオブジェクトのsetLengthメソッド実行時のフローチャート。 RandomAccessFileオブジェクトのwriteメソッド実行時のフローチャート。 Fileオブジェクトのdeleteメソッド実行時のフローチャート。
以下、添付図面を参照して本発明の実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
<第1の実施形態>
<アプリケーション管理装置の構成>
以下では、図1乃至図12を参照して、本発明の第1の実施形態について説明する。まず、図1を参照して、アプリケーション管理装置100のハードウェア構成について説明する。アプリケーション管理装置100は、画像処理装置の一例である。アプリケーション管理装置100は、制御部120、スキャナ111、プリンタ112、及び操作パネル113を備え、さらに、着脱可能なICカードリーダ116を備える。制御部120は、CPU101、ROM102、RAM103、外部記憶装置104、USBH I/F制御部105、スキャナI/F制御部106、プリンタI/F制御部107、NVRAM108、パネル制御部109、及びネットワークI/F制御部110を備える。
CPU101は、アプリケーション管理装置100のソフトウェアプログラムを実行し、装置全体の制御を行なう。ROM102は、リードオンリーメモリであり、装置のブートプログラムや固定パラメータ等が格納されている。RAM103は、ランダムアクセスメモリであり、CPU101が装置を制御する際に、一時的なデータの格納などに使用される。外部記憶装置104は、インストールされたアプリケーションやアプリケーションのデータや印刷データの格納など、様々なデータの格納に使用される。
USBH I/F制御部105はUSBホストインタフェースを制御するためのものであり、さまざまなUSBデバイスとの通信を制御する。スキャナI/F制御部106は、スキャナ111を制御する装置である。プリンタI/F制御部107は、プリンタ112を制御する装置である。NVRAM108は、不揮発性のメモリであり、アプリケーション管理装置100の各種設定値が保存される。
パネル制御部109は、操作パネル113を制御し、各種情報の表示、ユーザからの指示入力を行なうためのものである。ネットワークI/F制御部110は、ネットワーク115とのデータの送受信を制御する。バス114には、CPU101、ROM102、RAM103、外部記憶装置104、USBH I/F制御部105、スキャナI/F制御部106、プリンタI/F制御部107、NVRAM108、パネル制御部109、及びネットワークI/F制御部110が接続される。また、バス114は、CPU101からの制御信号や各装置間のデータ信号が送受信されるシステムバスである。ICカードリーダ116は認証を行うためのUSBデバイスである。
<ソフトウェア構成>
次に、図2を参照して、アプリケーション管理装置100のソフトウェア200の一例について説明する。ハードウェア201は、アプリケーション管理装置のソフトウェアを実行する。OS202は、プロセスの管理、メモリ管理、及び入出力管理を実行する。Nativeアプリ203は、コピー等、機器の基本的な機能を実現するプログラムである。
アプリケーション管理装置100のソフトウェア200は、JavaVM204とアプリケーションプラットフォーム205から構成される。JavaVM204は、Javaプログラムを実行する仮想マシンである。アプリケーションプラットフォーム205は単一のJavaVM上で少なくとも1つ以上のアプリケーションプログラムの起動、停止、インストール、アンインストールといったアプリのライフサイクルの管理を行うプログラムである。アプリA206、アプリB207は、アプリケーションプラットフォーム205上で動作するアプリケーションプログラムである。JavaVM204は、アプリケーションプラットフォーム205、アプリA206及びアプリB207を、一つのJavaアプリケーション208として処理する。
<モジュール構成>
次に、図3を参照して、本発明のアプリケーション管理装置100のソフトウェア200を構成するモジュールの一例について説明する。JavaVM204は、バイトコード実行部301、メモリ管理部302、ヒープメモリ305、及びシステムクラスローダ306を備える。
バイトコード実行部301は、Javaのプログラムコードであるバイトコードを解釈、実行する。ヒープメモリ305は、JavaVM204が管理するメモリ領域であり、Javaプログラムの実行によって生成されたJavaオブジェクトを保持する。メモリ管理部302は、アプリケーションの使用するメモリの管理を行う。メモリ管理部302は、オブジェクト生成部303、及びGC実行部304から構成される。オブジェクト生成部303は、バイトコード実行部301で実行されるプログラムコードの指示に従いJavaのオブジェクトを生成する。GC実行部304は、ヒープメモリ305に保存されているJavaオブジェクトのうち使用されなくなったものを削除するガーベージコレクションを実行する。システムクラスローダ306は、JavaVM204の管理するクラスのロードを行う。通常、Javaクラスは、必要になったとき、即ち、処理を実行する際に初めてクラスローダによってロードされる。
アプリケーションプラットフォーム205は、アプリケーション管理部308、アプリケーションメモリ管理部307、及びアプリ用クラスローダ管理部309から構成される。アプリケーションメモリ管理部307は、アプリ毎の使用メモリを管理する使用メモリテーブル313を有し、アプリケーション毎に使用するメモリを管理する。アプリケーション管理部308は、アプリケーションのインストール、起動、停止、アンインストール等のアプリケーションのライフサイクルを管理する。アプリ用クラスローダ管理部309は、アプリ用クラスローダテーブル310を有し、アプリケーション毎のアプリ用クラスローダの生成及び管理を行う。アプリ用クラスローダは、外部記憶装置104に保存されているアプリケーションのプログラムファイル312からクラスのロードを行う。
<マニフェストファイル>
次に、図4を参照して、アプリケーションのマニフェストファイルの内容について説明する。マニフェストファイルとは、アプリケーションのJarファイルに含まれるファイルである。当該マニフェストファイルには、次のような情報が記述されている。
Bundle−Name401は、アプリケーションの名称である。Application−Id402は、アプリケーションIDであり、アプリケーションを識別するためのユニークな識別子である。MaximumMemoryUsage403は、アプリケーションが使用可能な最大メモリ使用量である。これらの設定項目はアプリケーションプラットフォーム205によって規定される。なお、上記設定項目及び設定値は一例であり、本発明を限定する意図はなく、上記項目以外や設定値以外にも様々な設定項目や設定値がマニフェストに記述されていてもよい。
<テーブル>
次に、図5を参照して、アプリケーションプラットフォーム205が管理するアプリ用クラスローダテーブル310及び使用メモリテーブル313について説明する。アプリ用クラスローダテーブル310は、アプリケーションの識別子であるアプリケーションID501とそのアプリ用クラスローダ502とが紐付けられて管理されるテーブルである。使用メモリテーブル313は、アプリケーションの識別子であるアプリID503と、そのアプリケーションが現在使用しているメモリ量504とが紐付けられて管理されるテーブルである。
<ロード処理>
次に、図6を参照して、本実施形態における、アプリケーションプラットフォーム205がアプリケーションのクラスをロードする際の処理手順について説明する。以下で説明する処理は、CPU101がROM102や外部記憶装置104に記憶された制御プログラムをRAM103に読み出して実行することにより実現される。
アプリケーションの起動要求が実行されると、CPU101は、アプリ用クラスローダ管理部309に対してアプリ用クラスローダの要求を行う。S602において、アプリ用クラスローダ管理部309は、アプリ用クラスローダの取得を開始する。まず、S603において、アプリ用クラスローダ管理部309は、アプリ用クラスローダテーブル310にクラスローダの要求を行ったアプリケーションのアプリIDに対応するクラスローダが存在するか否かを判定する。存在すればS607に遷移し、存在しなければS604に遷移する。
S604において、アプリ用クラスローダ管理部309は、アプリ用のクラスローダを生成する。続いて、S605において、アプリ用クラスローダ管理部309は、S604で生成したアプリ用クラスローダにアプリIDを保存する。さらに、S606において、アプリ用クラスローダ管理部309は、アプリ用クラスローダテーブル310にクラスローダの要求を行ったアプリケーションのアプリIDとS604で生成したアプリ用クラスローダを登録する。その後、S607に遷移してアプリケーションに処理を戻す。
S603でクラスローダありと判定した場合又はS606の処理の後に、S607において、CPU101は、アプリ用クラスローダ管理部309から取得したアプリ用クラスローダを使用してアプリケーション206の起動を開始する。続いて、起動されたアプリケーション206は、S608においてアプリケーションオブジェクトの生成を開始する。さらに、アプリケーション206は、S609でアプリケーションのクラスをロードするため、アプリ用クラスローダ管理部309から取得したアプリ用クラスローダに対してアプリケーションクラスのクラスロード要求を行う。
S610において、アプリケーション用クラスローダは、アプリケーション206からアプリクラスのロード要求を受け付けると、まずJavaVMに組み込まれているシステムクラスローダ306に対してクラスのロードを依頼する。S611において、システムクラスローダ306は、クラスロード要求があると、要求のあったクラスのクラスファイルのバイトコードを読み込む。続いて、S612において、システムクラスローダ306は、クラスファイルの読み込みができたか否かを判定し、できていればS613に遷移する。一方、できていなければアプリケーション固有のクラスのロードであるのでアプリ用クラスローダに処理を返しS614に遷移する。S613において、システムクラスローダ306は、S611で読み込んだバイトコードからクラスをロードし、S619に遷移してアプリケーション206にクラスオブジェクトを返す。
一方、S614において、アプリ用クラスローダは、アプリのJarファイル312から要求されたクラスのバイトコードを読み込む。続いて、S615において、アプリ用クラスローダは、クラスファイルが存在して読み込みに成功したか否かを判定し、成功していればS616に遷移し、読み込めなかった場合はS618に遷移する。
S616において、アプリ用クラスローダは、読み込んだバイトコードにTASKINFO命令を挿入し、S617において、TASKINFO命令を挿入したバイトコードからクラスをロードする。TASKINFO命令の詳細については図7を用いて後述する。その後、S619に遷移し、アプリケーション206にクラスオブジェクトを返す。
一方、S615でクラスファイルがないと判定した場合は、S618において、アプリケーション206は、ClassNotFoundException例外を発生させ、アプリの起動を終了する。S619においては、アプリケーション206は、S617でロードしたクラスを使ってアプリケーションオブジェクトのインスタンスを生成し、アプリの起動を終了する。
<TASKINFO命令>
次に、図7を参照して、本発明におけるS616でバイトコードに挿入されるTASKINFO命令について説明する。701は、TASKINFO命令が挿入される前のコードである。702は、TASKINFO命令が挿入されたコードである。
703に示すように、メソッドの最初に「TASKINFO.set(アプリケーションID);」を挿入する。ここでは、アプリケーションIDを一例として”11−1111−1111”としている。アプリケーションIDはS605でクラスローダに保存した値が文字列として挿入される。さらに、704に示すように、メソッドの最後に「TASKINFO.remove();」が挿入される。上記TASKINFO.set()メソッドとTASKINFO.remove()メソッドの詳細については後述する。
<スレッド構造体>
次に、図8を参照して、本発明の第1の実施形態におけるスレッドの構造体について説明する。スレッドの構造体801はアプリケーションIDを記憶するフィールド802を有する。フィールド802は、上記TASKINFO.set()メソッドとTASKINFO.remove()メソッドによって使用される。具体的には、TASKINFO.set()メソッドによってアプリケーションIDが設定され、TASKINFO.remove()メソッドによって設定されているアプリケーションIDが消去される。
<メソッドの処理>
次に、図9を参照して、本発明におけるバイトコード実行部301においてアプリケーションのプログラムに含まれるTASKINFO命令が挿入されたメソッドが実行された際の処理手順について説明する。以下で説明する処理は、CPU101がROM102や外部記憶装置104に記憶された制御プログラムをRAM103に読み出して実行することにより実現される。
アプリケーションの該当メソッドの実行が開始されると、アプリケーション206は、メソッドの先頭にある「TASKINFO.set(アプリケーションID)」を呼び出す。この際、引数としてアプリケーションIDを付加する。その後、TASKINFOクラスのsetメソッドに処理が移行する。
S903において、TASKINFOクラスのsetメソッドは、まず処理を実行しているカレントのスレッドを取得する。続いて、setメソッドは、S904で取得したスレッド構造体のアプリケーションIDのフィールド802にsetメソッドの引数として渡されたアプリケーションIDの値を保存し、アプリケーション206に処理を返す。
S905において、アプリケーション206は、アプリのメソッド内の処理を実行し、S906で、メソッドの末尾にある「TASKINFO.remove();」を呼び出す。その後、TASKINFOクラスのremoveメソッドに処理が移行する。
S907において、TASKINFOクラスのremoveメソッドは、まず処理を実行しているカレントのスレッドを取得する。S908において、removeメソッドは、S907で取得したスレッドのスレッド構造体のフィールド802に設定されているアプリケーションIDの値を消去し、アプリケーションに処理を返す。アプリケーションはメソッドの処理を終了する。これにより、メソッドの実行中においては、スレッドに対応するアプリケーション情報が記録されていることとなる。この情報を用いて本実施形態に係る画像処理装置は、リアルタイムでメモリ使用量を把握することができる。
<オブジェクト構造体及びヒープメモリ>
次に、図10を参照して、本発明のオブジェクトの構造体、及びヒープメモリについて説明する。1001は、比較例となるJavaVMのヒープメモリを示す。本実施形態に係るオブジェクトの構造体1002は、ヒープメモリ1001とは異なり、オブジェクト固有の情報に加えて、さらに、アプリケーションID(アプリケーション情報)を保存するフィールド1003を備える。そのため、本実施形態におけるのJavaVM204のヒープメモリ305は1004に示すようになる。例えば、ヒープメモリ305は、図10に示すように、オブジェクトA乃至Eの構造体の領域を確保する。確保された領域には、それぞれ構造体におけるアプリケーションIDを保存する領域も設けられる。したがって、任意のオブジェクトがいずれのアプリケーションによるものであるかを容易に確認することができる。図10では、使用されていないメモリ領域を、空きメモリとして表す。
<オブジェクト生成処理>
次に、図11を参照して、第1の実施形態におけるオブジェクト生成処理の処理手順について説明する。オブジェクト生成処理は、上述した図9のS905の処理の中で実行される。以下で説明する処理は、CPU101がROM102や外部記憶装置104に記憶された制御プログラムをRAM103に読み出して実行することにより実現される。
オブジェクト生成を行うアプリケーションのコードがバイトコード実行部301で実行されるとオブジェクト生成処理が開始され、JavaVM204のオブジェクト生成部303が呼び出される。S1102において、オブジェクト生成部303は、まずカレントスレッドを取得する。続いて、S1103において、オブジェクト生成部303は、S1102で取得したスレッドの構造体のアプリケーションIDのフィールド802を読み取り、アプリケーションIDを取得する。
S1104において、オブジェクト生成部303は、オブジェクト生成用のメモリを取得してオブジェクトを生成する。さらに、S1105において、オブジェクト生成部303は、オブジェクトの構造体のアプリケーションIDのフィールド1003にS1103で取得したアプリケーションIDを記録する。S1106において、オブジェクト生成部303は、メモリ増加量を記録するために、S1105で取得したアプリケーションIDと、S1104で生成したオブジェクトのサイズを引数として、アプリケーションメモリ管理部307を呼び出す。
S1107において、アプリケーションメモリ管理部307は、使用メモリテーブル313のアプリケーションIDのフィールド503をS1106で引数として指定されたアプリケーションIDで検索する。ここで、アプリケーションIDが存在すればS1109に遷移し、存在しなければS1108に遷移する。
S1108において、アプリケーション管理部308は、使用メモリサイズを0の新たなレコードを生成し、使用メモリテーブル313に登録しS1109に遷移する。S1109において、アプリケーション管理部308は、使用メモリテーブル313のアプリケーションIDに対応する使用メモリの値504を更新し、オブジェクト生成部303に処理を返す。S110において、オブジェクト生成部303は、生成したオブジェクトをアプリケーションに返す。アプリケーション206は、生成したオブジェクトを受け取り、オブジェクト生成処理を終了する。このように、本実施形態に係るアプリケーション管理装置は、オブジェクトを生成する際に、対応するアプリケーションIDと確保したメモリサイズとをアプリケーションメモリ管理部307によって管理する。
<GC処理>
次に、図12を参照して、本発明の第1の実施形態におけるGC処理の処理手順について説明する。JavaVM204では、オブジェクトの生成に必要な空きメモリが不足すると不要になったオブジェクトを解放し空きメモリを増やす処理を行う。当該処理を、ガーベージコレクション(GC)という。以下で説明する処理は、CPU101がROM102や外部記憶装置104に記憶された制御プログラムをRAM103に読み出して実行することにより実現される。
オブジェクト生成部303でのオブジェクト生成において空きメモリが不足するとGC実行部304でGC処理が開始される。S1202において、GC実行部304は、ヒープメモリ305からGC対象である、だれからも参照されていないオブジェクトを検索する。S1203において、GC実行部304は、対象のオブジェクトが検索されたか否かを判定する。ここで、対象オブジェクトが存在すればS1204に遷移し、存在しなければS1209に遷移してGC処理を終了する。
S1204において、GC実行部304は、ヒープメモリ305から対象オブジェクトの内容を取得する。続いて、GC実行部304は、S1204で取得したオブジェクトのアプリケーションIDフィールドの値を取得する。さらに、S1206において、GC実行部304は、メモリ減少量記録を行うために、S1205で取得したアプリケーションIDと、S1204で取得したオブジェクトのサイズとを引数として、アプリケーションメモリ管理部307を呼び出す。
S1207において、アプリケーションメモリ管理部307は、S1206の引数であるアプリケーションIDに対応する使用メモリテーブル313の使用メモリの値504を更新し、オブジェクト生成部303に処理を返す。アプリケーションメモリ管理部307から処理が戻ると、S1208において、GC実行部304は、オブジェクトを開放し、次のGC対象オブジェクトを見つけるためにS1202に遷移する。
以上説明したように、本実施形態に係る画像処理装置は、アプリケーションの起動要求に応じて、当該アプリケーションのクラスのクラスファイルを読み込み、アプリケーションを示すアプリケーション情報をスレッドに記録するコードを、読み込んだクラスファイルに含まれるメソッドの最初に追加して、当該クラスをロードさせる。さらに、本画像処理装置は、メソッドの実行中に、生成するオブジェクトに使用するメモリを確保し、スレッドに記録されたアプリケーション情報を確保したメモリに記録するとともに、当該オブジェクトを生成し、生成したオブジェクトのアプリケーション情報とメモリサイズとを紐付けて管理する。これにより、本画像処理装置は、パフォーマンスを維持したまま個々のアプリケーションで使用されるメモリ使用量又はディスク使用量をリアルタイムで計測することができる。
<第2の実施形態>
以下では、図13乃至図16を参照して、本発明の第2の実施形態について説明する。なお、以下では、上記第1の実施形態と同様の構成及び制御については説明を省略する。クラスのロード処理については上記第1の実施形態と同様に実行する。まず、図13を参照して、アプリケーションプラットフォーム205上で複数のアプリが連携して動作するシーケンスについて説明する。
ブラウザ1301は、本発明の画像処理装置であるアプリケーション管理装置100と、ネットワークで接続されたデバイスで動作している。デバイスは、PCやスマートフォン、タブレット端末である。HTTPサーバアプリ1302は、アプリケーションプラットフォーム205上で動作するHTTPサーバプログラムであり、アプリケーションID「44−4444−4444」を有している。Servletアプリ1303は、HTTPサーバアプリ1302と連携して動作するServletタイプのアプリケーションであり、アプリケーションID「11−1111−11114」を有している。
S1304において、ブラウザ1301は、ネットワークを通じてHTTPサーバアプリ1302に対してHTTPリクエストを送信する。続いて、S1305において、HTTPサーバアプリ1302は、HTTPリクエストを受信すると、HTTPリクエストレスポンス処理を行うスレッドを1つ生成し、HTTPリクエストの解析処理を行う。
HTTPリクエストがServletアプリ1303に対するものであれば、S1306において、HTTPサーバアプリ1302は、HTTPリクエストの情報をつけて、Servletアプリ1303を呼び出す。S1307において、Servletアプリ1303は、Servletで実装された固有の処理を行い、HTTPサーバアプリ1302にServletの処理結果を返す。
S1309において、HTTPサーバアプリ1302は、受け取ったServletの処理結果からHTTPレスポンスを生成し、S1310でネットワークを通じてブラウザにHTTPレスポンスを返す。このとき、S1305乃至S1309までは一つのスレッドで処理される。
アプリケーションプラットフォーム205上では図のように複数のアプリケーションが連携して動作するのは一般的である。オブジェクト生成は、HTTPリクエスト処理(S1305)、Servlet処理(S1307)、HTTPレスポンス処理(S1309)のいずれか、または全てで行われる。よって、HTTPサーバアプリ1302と、Servletアプリ1303とのどちらでオブジェクトの生成が行われたかを判別する必要がある。
<スレッド構造体>
次に、図14を参照して、本発明の第2の実施形態におけるスレッドの構造体について説明する。スレッド構造体1401は、フィールドとしてアプリケーションIDのスタック1402を有する。図13の処理でServlet固有の処理であるS1307が実行されているときは、実行中のアプリケーションIDがスタックされている。この場合、アプリケーションIDのスタック1402には、上から順に、Servletアプリ1303のアプリケーションID1403、HTTPサーバアプリ1302のアプリケーションID1404がスタックされている。
<メソッドの処理>
次に、図15を参照して、本発明の第2の実施形態におけるバイトコード実行部301においてアプリケーションのプログラムにふくまれるTASKINFO命令が挿入されたメソッドが実行された際の処理について説明する。以下で説明する処理は、CPU101がROM102や外部記憶装置104に記憶された制御プログラムをRAM103に読み出して実行することにより実現される。
アプリケーションの該当メソッドの実行が開始されると、アプリケーション206は、メソッドの先頭にある「TASKINFO.set(アプリケーションID);」703を呼び出し、TASKINFOクラスのsetメソッドに処理が移行する。S903において、TASKINFOクラスのsetメソッドは、まず処理を実行しているカレントのスレッドを取得する。続いて、S1501において、setメソッドは、取得したスレッド構造体のアプリケーションIDのスタック1402の先頭にsetメソッドの引数として渡されたアプリケーションIDの値を追加し、アプリケーションに処理を返す。
S905において、アプリケーション206は、アプリケーションのメソッド内の処理を実行し、メソッドの末尾にある「TASKINFO.remove();」704を呼び出し、TASKINFOクラスのremoveメソッドに処理が移行する。S907において、TASKINFOクラスのremoveメソッドは、まず処理を実行しているカレントのスレッドを取得する。続いて、S1502において、removeメソッドは、S907で取得したスレッドのスレッド構造体のアプリケーションIDのスタックの先頭のアプリケーションIDを削除し、アプリケーションに処理を返す。その後、アプリケーション206はメソッドの処理を終了する。
<オブジェクト生成処理>
次に、図16を参照して、本発明の第2の実施形態におけるオブジェクト生成処理について説明する。以下で説明する処理は、CPU101がROM102や外部記憶装置104に記憶された制御プログラムをRAM103に読み出して実行することにより実現される。オブジェクト生成を行うアプリケーションのコードがバイトコード実行部301で実行されるとオブジェクト生成処理が開始され、JavaVM204のオブジェクト生成部303が呼び出される。
S1102において、オブジェクト生成部303は、カレントスレッドを取得する。続いて、S1601において、オブジェクト生成部303は、S1102で取得したスレッドの構造体のアプリケーションIDのスタックの先頭のアプリケーションIDを取得する。
S1104において、オブジェクト生成部303は、オブジェクト生成用のメモリを取得してオブジェクトを生成する。続いて、S1105において、オブジェクト生成部303は、オブジェクトの構造体のアプリケーションIDのフィールド1003に、S1601で取得したアプリケーションIDを記録する。さらに、S1106において、オブジェクト生成部303は、メモリ増加量を記録するために、S1105で取得したアプリケーションIDと、S1104で生成したオブジェクトのサイズとを引数として、アプリケーションメモリ管理部307を呼び出す。
S1107において、アプリケーション管理部308は、使用メモリテーブル313のアプリケーションIDのフィールド503をアプリケーションIDで検索し、存在するか否かを判定する。アプリケーションIDが存在すればS1109に遷移し、存在しなければS1108に遷移する。S1108において、アプリケーション管理部308は、使用メモリサイズが0の新たなレコードを生成し、使用メモリテーブル313に登録し、処理をS1109に遷移させる。S1109において、アプリケーション管理部308は、使用メモリテーブル313のアプリケーションIDに対応する使用メモリの値504を更新し、オブジェクト生成部303に処理を返す。
S1110において、オブジェクト生成部303は、生成したオブジェクトをアプリケーションに返す。アプリケーション206は、生成したオブジェクトを受け取り、オブジェクト生成処理を終了する。GC処理については、上記第1の実施形態と同様であるため説明を省略する。
以上説明したように、本実施形態によれば、複数のアプリケーションが連携して動作する場合には、スレッドに記録されるアプリケーション情報をスタック構造とする。これにより、図13に示すようなケースにおいても、上記第1の実施形態と同様に、パフォーマンスを維持したまま個々のアプリケーションで使用されるメモリ使用量又はディスク使用量をリアルタイムで計測することができる。
<第3の実施形態>
以下では、図17乃至図19を参照して、本発明の第3の実施形態について説明する。なお、以下では、上記第1及び第2の実施形態と同様の構成及び制御については説明を省略する。まず、図17を参照して、本実施形態のアプリケーション管理装置のソフトウェア200におけるモジュールの構成例について説明する。
図17に示すように、図3で説明した構成に加えて、アプリケーションメモリ管理部307は、使用メモリ量宣言テーブル1701を備える。クラスのロード処理については上記第1の実施形態と同様に実行する。TASKINFO命令が挿入されたメソッドの実行時処理については上記第1の実施形態と同様に実行する。
<使用メモリ量宣言テーブル>
次に、図18を参照して、使用メモリ量宣言テーブル1701について説明する。使用メモリ量宣言テーブル1701は、アプリケーションID1801と、そのアプリケーションIDで識別されるアプリケーションが使用する最大のメモリ量を示す最大使用メモリ1802とを紐付けて管理するテーブルである。
アプリケーションの最大メモリ使用量は、図4で示されるアプリケーションのマニフェストファイルのMaximumMemoryUsage設定403に記述されている。アプリケーション管理部308は、アプリケーションがインストールされると、アプリケーションのJarファイルからApplication−Id設定402と、MaximumMemoryUsage設定403とを読み込む。さらに、アプリケーション管理部308は、読み込んだ値を使用メモリ量宣言テーブル1701に追加する。
<オブジェクト生成処理>
次に、図19を参照して、本実施形態におけるオブジェクト生成処理の処理手順について説明する。以下で説明する処理は、CPU101がROM102や外部記憶装置104に記憶された制御プログラムをRAM103に読み出して実行することにより実現される。
オブジェクト生成を行うアプリケーションのコードがバイトコード実行部301で実行されるとオブジェクト生成処理が開始され、JavaVM204のオブジェクト生成部303が呼び出される。S1102において、オブジェクト生成部303は、まずカレントスレッドを取得する。続いて、S1601において、オブジェクト生成部303は、S1102で取得したスレッドの構造体のアプリケーションIDフィールド802を読み取り、アプリケーションIDを取得する。
S1104において、オブジェクト生成部303は、オブジェクト生成用のメモリを取得してオブジェクトを生成する。続いて、S1105において、オブジェクト生成部303は、オブジェクト構造体のアプリケーションIDのフィールド1003にS1103で取得したアプリケーションIDを記録する。さらに、S1106において、オブジェクト生成部303は、メモリ増加量を記録するため、S1105で取得したアプリケーションIDと、S1104で生成したオブジェクトのサイズとを引数にアプリケーションメモリ管理部307を呼び出す。
S1107において、アプリケーションメモリ管理部307は、使用メモリテーブル313のアプリケーションIDのフィールド503をアプリケーションIDで検索し、存在するか否かを判定する。アプリケーションIDが存在すればS1901に遷移し、存在しなければS1108に遷移する。S1108において、アプリケーションメモリ管理部307は、使用メモリサイズが0の新たなレコードを生成し、使用メモリテーブル313に登録し、処理をS1901に遷移させる。
S1901において、アプリケーションメモリ管理部307は、使用メモリテーブル313のアプリケーションIDフィールド503をアプリケーションIDで検索し、現在の使用メモリサイズを取得する。存在しなければ新たなレコードを生成し現在の使用メモリサイズを0とする。
次に、S1902において、アプリケーションメモリ管理部307は、使用メモリ量宣言テーブル1701内をアプリケーションIDで検索し、アプリケーションIDに対応するアプリケーションの使用メモリ宣言量を取得する。S1903において、アプリケーションメモリ管理部307は、オブジェクト生成部303からS1106で渡されたオブジェクトサイズと、S1901の現在の使用メモリサイズとの合計が、S1902の最大メモリ使用量以下であるか否かを判定する。以下であれば、S1109に遷移する、超えていればS1904に遷移する。
S1109において、アプリケーションメモリ管理部307は、使用メモリテーブル313のアプリケーションIDに対応する使用メモリの値504を更新し、オブジェクト生成部303に処理を返す。S1110において、オブジェクト生成部303は、生成したオブジェクトをアプリケーションに返す。アプリケーションは、生成したオブジェクトを受け取りオブジェクト生成処理を終了する。
一方、S1903で超えていると判定すると、S1904において、アプリケーションメモリ管理部307は、メモリエラーを発生させる。続いて、S1905において、アプリケーションメモリ管理部307は、アプリケーション管理部308にアプリケーションIDに対応するアプリケーションの停止処理を依頼し、処理をアプリケーションに返す。アプリケーションは、オブジェクト生成処理を終了する。
以上説明したように、本実施形態によれば、上記第1の実施形態と上記第2の実施形態の少なくとも何れかの構成加えて、さらに、各アプリケーションにおけるメモリ最大使用量を定義したテーブルを備える。さらに、本画像処理装置は、オブジェクト生成時に確保するメモリサイズによって、現在既に使用しているメモリ使用量と、確保したメモリサイズとの合計が、上記メモリ最大使用量を超える場合には、当該オブジェクトの生成を中止するように制御することができる。
<第4の実施形態>
以下では、図20乃至図28を参照して、本発明の第4の実施形態について説明する。本実施形態では、上記第1乃至第3の実施形態の仕組みを使って、メモリと同様に外部記憶装置104のディスク使用量を制限する実施形態について説明する。したがって、本実施形態は、上記第1乃至第3の実施形態とそれぞれ組み合わせることが可能である。なお、以下では、上記第1乃至第3の実施形態と同様の構成及び制御については説明を省略する。クラスロード処理については、上記第1の実施形態と同様に実行する。TASKINFO命令が挿入されたメソッドの実行時処理については、上記第1の実施形態と同様に実行する。
本実施形態では、アプリケーション管理部308によってインストールされたアプリケーションは、外部記憶装置104の所定のディレクトリに格納される。また、アプリケーションは、アプリケーション自身がインストールされたディレクトリ下のみを使用できるように制限されているものとする。
<モジュール構成>
まず、図20を参照して、本実施形態における、アプリケーション管理装置100のソフトウェア200におけるモジュールの構成例について説明する。図17の構成に加え、アプリケーションプラットフォーム205がアプリケーション・ディスク管理部2001を備え、JavaVM204がファイル・アクセス管理部2004を備える。
アプリケーション・ディスク管理部2001は、後述の使用ディスク・テーブル2002と使用ディスク量宣言テーブル2003により構成される。ファイル・アクセス管理部2004は、アクセス制御部2005から構成され、アプリケーション206から外部記憶装置104へのファイル・アクセスを制御する。
<使用ディスク・テーブル及び使用ディスク量宣言テーブル>
図21は、使用ディスク・テーブル2002及び使用ディスク量宣言テーブル2003の構成を示す。使用ディスク・テーブル2002には、アプリケーションID2101と、そのアプリケーションが現在使用しているディスク使用量2102とが紐付けられて管理されている。使用ディスク量宣言テーブル2003は、アプリケーションID2201と、そのアプリケーションが使用する最大使用量2202とが紐付けられて管理されている。使用ディスク・テーブル2002と使用ディスク量宣言テーブル2003とは、1つのテーブルで管理されていても良く、同等の情報が管理されるのであれば、本実施形態の構成に限定するものではない。
図22は、本実施形態のアプリケーションのマニフェストファイルの内容である。図4で示す内容に加え、アプリケーションの最大ディスク使用量を示すMaximumFilespaceUsage2301が追加されている。なお、ここでは、MaximumMemoryUsage設定403も含んでいるが、本発明はこれに限定されず、例えば、MaximumFilespaceUsage2301のみ含むようにしてもよい。
<初期化処理>
次に、図23を参照して、本実施形態のアプリケーションプラットフォーム205が起動されるときのアプリケーション管理部308の初期化処理について説明する。以下で説明する処理は、CPU101がROM102や外部記憶装置104に記憶された制御プログラムをRAM103に読み出して実行することにより実現される。
アプリケーションプラットフォーム205が起動されると、S2401において、アプリケーション管理部308は、インストール済みのアプリケーションの数を取得する。S2402において、アプリケーション管理部308は、変数i=0として初期化し、S2403でアプリケーション数jと比較し、i<jであればS2404に遷移し、そうでなければ全てのアプリケーションについて後述する処理を行ったと判断し処理を終了する。S2404において、アプリケーション管理部308は、アプリケーションIDを取得し、S2405でアプリケーションが宣言しているディスク使用量を取得する。そして、アプリケーション・ディスク管理部2001を呼び出す。
S2406において、アプリケーション・ディスク管理部2001は、使用ディスク量宣言テーブルに該当するアプリケーションIDが登録済みか否かを判定し、未登録であればS2407でレコードを追加し、S2408に遷移する。一方、登録されていればそのままS2408に進む。S2408において、アプリケーション・ディスク管理部2001は、使用ディスク量宣言テーブル2003にアプリケーションID2201と最大使用量2202のデータとを紐付けて追加し、処理をアプリケーション管理部308に返す。
次に、S2409において、アプリケーション管理部308は、アプリケーションがインストールされているフォルダ以下の容量を取得し、再度アプリケーション・ディスク管理部2001を呼び出す。S2410において、使用ディスク・テーブルに該当するアプリケーションIDが登録済みか否かを判定し、未登録であればS2411でレコードを追加しS2412に遷移する。一方、登録されていればそのままS2412に進む。S2412において、アプリケーション・ディスク管理部2001は、使用ディスク・テーブル2002にアプリケーションID2101と使用量2102とのデータを紐付けて追加し、処理をアプリケーション管理部308に返す。S2413において、アプリケーション管理部308は、変数iをインクリメントしてS2403の判定に戻る。
なお、アプリケーション管理部308において、新たにアプリケーションをインストールした際、外部記憶装置104の所定のフォルダにアプリケーションをインストールする。その後、本フローチャートと同様の処理を行い、使用ディスク量宣言テーブル2003、使用ディスク・テーブル2002に情報を追加することは言うまでもない。さらに、アプリケーション管理部308において、アプリケーションのアンインストールする際、アプリケーションをインストールしたフォルダを削除する。それと同時に、使用ディスク量宣言テーブル2003、使用ディスク・テーブル2002から該当するアプリケーションの情報を削除することも言うまでもないことである。
本フローチャートの処理により、画像処理装置であるアプリケーション管理装置100の起動時に、アプリケーション管理部308によって管理されているアプリケーションが使用している起動初期状態のディスク使用量を管理することが可能となる。
<オブジェクト生成処理>
図24は、ファイルの生成、書き込みを行うためのFileOutputStreamオブジェクトが生成された際のフローチャートである。以下で説明する処理は、CPU101がROM102や外部記憶装置104に記憶された制御プログラムをRAM103に読み出して実行することにより実現される。ここでは、第1の実施形態で説明した図11の制御と異なる部分について説明する。
S1103でアプリIDを取得すると、S2501において、オブジェクト生成部303は、生成するオブジェクトがFileOutputStreamか否かを判定する。FileOutputStreamの場合はS2502に進み、それ以外のオブジェクトの生成の場合は、S1104に進む。
S2502において、オブジェクト生成部303は、FileOutputStreamオブジェクトを生成するための引数を取し、S2503において、取得した引数から操作対象のファイルサイズを取得する。続いて、S2504において、オブジェクト生成部303は、本来のFileOutputStreamオブジェクトの生成処理を呼び出す。続いて、S2505において、オブジェクト生成部303は、S2502で取得した引数、或いはオブジェクトの生成方法から、FileOutputStreamオブジェクトが、Append Modeで生成されているか否かを判定する。JavaにおけるFileOutputStreamオブジェクトの仕様は、Append Modeの場合は既存のファイルの最終端にデータを書き足すように動作し、そうでなければファイルサイズを0に戻して書き換えるように動作する。判定の結果、Append Modeの場合は、S1110に進む。
一方、Append Modeでない場合は、操作対象のファイルサイズが0になると判断し、S2506に遷移する。S2506において、アプリケーション・ディスク管理部2001は、使用ディスク・テーブル2002の本アプリケーションの使用量2102から、S2503で取得したサイズを減算し、処理をオブジェクト生成部303に返しS1110に遷移する。
S1110において、オブジェクト生成部303は、アプリケーションに処理を返し、アプリケーションは、オブジェクト生成処理を終了する。
<FileOutputStreamオブジェクトのwriteメソッド>
次に、図25を参照して、アプリケーション206が、FileOutputStreamオブジェクトのwriteメソッドを呼び出したときの処理手順について説明する。以下で説明する処理は、図9、及び図15のS905の処理の中で実行される。また、以下で説明する処理は、CPU101がROM102や外部記憶装置104に記憶された制御プログラムをRAM103に読み出して実行することにより実現される。実行に際し、バイトコード実行部301からファイル・アクセス管理部2004のアクセス制御部2005の処理を呼び出すものである。
S2601において、バイトコード実行部301は、FileOutputStreamオブジェクトのwriteメソッドか否かを判定する。FileOutputStreamオブジェクトのwriteメソッドであれば、S2602に進み、そうでなければS2611で他のメソッドの処理を呼び出して処理を終了する。
writeメソッドの実行にあたり、S2602において、ファイル・アクセス管理部2004は、カレントスレッドのスレッド構造体のアプリケーションIDフィールド802を読み取る。続いて、S2603において、ファイル・アクセス管理部2004は、writeメソッドに渡された書き込みデータのサイズ(=a)を取得し、処理をアプリケーション・ディスク管理部2001に渡す。
次に、S2604において、アプリケーション・ディスク管理部2001は、S2602で取得したアプリケーションIDを使い、使用ディスク・テーブル2002から当該アプリケーションの使用量2102(=X)を取得する。さらに、S2605において、アプリケーション・ディスク管理部2001は、使用ディスク量宣言テーブル2003から最大使用量2202(=Y)を取得し、処理をファイル・アクセス管理部2004に返す。
S2606において、ファイル・アクセス管理部2004は、当該アプリケーションの使用量Xと書き込みデータサイズaを加算したサイズが、最大使用量Yを超えるか否かを判定する。最大使用量Yを超える場合はS2608に遷移し、ファイル・アクセス管理部2004は、アプリケーション206が宣言する最大使用量2202を超える書き込みを行うと判断し、所定のエラー(ディスクエラー)を通知し、本処理を終了する。
最大使用量Yを超えない場合は、S2607に進み、ファイル・アクセス管理部2004は、本来のwriteメソッドを呼び出し、ファイルの書き込みを実行する。その後、S2609において、ファイル・アクセス管理部2004は、ファイルの書き込みに失敗したか否かを判定し、失敗した場合は本処理を終了し、成功した場合は処理をアプリケーション・ディスク管理部2001に渡し、S2610に遷移する。S2610において、アプリケーション・ディスク管理部2001は、使用ディスク・テーブル2002の当該アプリケーションの使用量2102に書き込みデータサイズ(=a)を加算し、処理を終了する。
Javaには、FileOutputStreamと類似するFileWriterクラスが存在する。FileWriteクラスを使う場合であっても、FileOutputStreamと同じ構成をとることで対応できるため本実施形態では説明を割愛する。
<RandomAccessFilemオブジェクトのsetLengthメソッド>
次に、図26を参照して、アプリケーション206が、RandomAccessFilemオブジェクトのsetLengthメソッドを呼び出したときの処理手順について説明する。以下で説明する処理は、図9、及び図15のS905の処理の中で実行される。また、以下で説明する処理は、CPU101がROM102や外部記憶装置104に記憶された制御プログラムをRAM103に読み出して実行することにより実現される。実行に際し、バイトコード実行部301からファイル・アクセス管理部2004のアクセス制御部2005の処理を呼び出すものである。JavaにおけるRandomAccessFilemオブジェクトのsetLength仕様は、操作対象のファイルサイズをsetLengthにより指定されたサイズに変更するように動作する。
S2701において、バイトコード実行部301は、RandomAccessFilemオブジェクトのsetLengthメソッドか否かを判定する。RandomAccessFilemオブジェクトのsetLengthメソッドであれば、S2702に遷移し、そうでなければS2716に遷移し他のメソッドの処理を呼び出して処理を終了する。
setLengthメソッドの実行にあたり、S2702において、ファイル・アクセス管理部2004は、カレントスレッドのスレッド構造体のアプリケーションIDフィールド802を読み取る。続いて、S2703において、ファイル・アクセス管理部2004は、setLengthメソッドの対象となるファイルのサイズ(=a)を取得し、S2704でsetLengthメソッドに指定されたサイズ(=b)を取得する。その後、S2705において、ファイル・アクセス管理部2004は、aとbを比較し、bが大きい場合、すなわちファイルサイズが大きくなる場合はS2709に遷移する。そうでない場合はS2706に遷移し、本来のsetLentghメソッドを呼び出して、S2707でsetLengthメソッドの実行結果を判定し、成功した場合はS2708に遷移し、失敗した場合は処理を終了する。S2708において、アプリケーション・ディスク管理部2001は、使用ディスク・テーブル2002の当該アプリケーションの使用量2202からa−bで求められる値を減算するし、処理を終了する。
一方、S2705でファイルサイズが大きくなると判定された場合、S2709において、アプリケーション・ディスク管理部2001は、S2701で取得した当該アプリケーションIDのディスク使用量2102(=X)を取得する。続いて、S2710において、アプリケーション・ディスク管理部2001は、最大使用量2202(=Y)を取得する。その後、S2711において、ファイル・アクセス管理部2004は、現在の使用量XにsetLengthメソッドによる増加分が、最大使用量Yを超えるか否かを判定する(X+(b−a)>Y)。
最大使用量Yを超える場合はS2715に遷移し、ファイル・アクセス管理部2004は、アプリケーション206が宣言する最大使用量2202を超える書き込みを行うと判断し、所定のエラーを通知し、本処理を終了する。一方、最大使用量Yを超えないと判断した場合はS2712に遷移し、ファイル・アクセス管理部2004は、本来のsetLengthメソッドを呼び出す。その後、S2713において、ファイル・アクセス管理部2004は、setLengthメソッドの実行結果を判定し、成功した場合はS2714に遷移する。S2714において、アプリケーション・ディスク管理部2001は、使用ディスク・テーブル2002の当該アプリケーションの使用量2202にb−aで求められる値を加算し、処理を終了する。一方、S2712の判定でエラーと判断された場合は、本処理を終了する。
<RandomAccessFilemオブジェクトのwriteメソッド>
次に、図27を参照して、アプリケーション206が、RandomAccessFilemオブジェクトのwriteメソッドを呼び出したときの処理手順について説明する。以下で説明する処理は、図9、及び図15のS905の処理の中で実行される。また、以下で説明する処理は、CPU101がROM102や外部記憶装置104に記憶された制御プログラムをRAM103に読み出して実行することにより実現される。実行に際し、バイトコード実行部301からファイル・アクセス管理部2004のアクセス制御部2005の処理を呼び出すものである。JavaにおけるRandomAccessFilemオブジェクトのwrite仕様は、操作対象のファイルのファイルポインタの位置からデータを書き込むように動作する。その際、書き込みサイズがファイルサイズを超える場合はファイルサイズが増えるように動作する。
S2801において、バイトコード実行部301は、RandomAccessFilemオブジェクトのwriteメソッドか否かを判定する。RandomAccessFilemオブジェクトのwriteメソッドであれば、S2802に進み、そうでなければS2815で他のメソッドの処理を呼び出して処理を終了する。
writeメソッドの実行にあたり、S2802において、ファイル・アクセス管理部2004は、カレントスレッドのスレッド構造体のアプリケーションIDフィールド802を読み取る。続いて、S2803において、ファイル・アクセス管理部2004は、writeメソッドに渡された書き込みデータのサイズ(=a)を取得し、S2804で現在のファイルポインタの位置(=b)を取得する。さらに、S2805で、ファイル・アクセス管理部2004は、操作対象ファイルのサイズ(=c)を取得する。その後、S2806において、ファイル・アクセス管理部2004は、書き込みサイズaと、ファイルポインタbの位置を加算し、ファイルサイズが増えるか否かを判定する(a+b>c)。ファイルサイズが増える場合は、S2808へ遷移し、そうでなければ、S2807で本来のwriteメソッドを呼び出し、ファイルサイズが変わらないため、本処理を終了する。
S2808において、アプリケーション・ディスク管理部2001は、S2801で取得した当該アプリケーションIDのディスク使用量2102(=X)を取得し、S2809で最大使用量2202(=Y)を取得し、S2810に遷移する。S2810において、ファイル・アクセス管理部2004は、現在の使用量Xにwriteメソッドによる増加分が、最大使用量Yを超えるか否かを判定する((a+b)−c+X>Y)。最大使用量Yを超える場合はS2814に遷移し、ファイル・アクセス管理部2004は、アプリケーション206が宣言する最大使用量2202を超える書き込みを行うと判断し、所定のエラーを通知し、本処理を終了する。
一方、最大使用量Yを超えないと判断した場合はS2811に遷移し、ファイル・アクセス管理部2004は、本来のwriteメソッドを呼び出す。その後、S2812において、ファイル・アクセス管理部2004は、writeメソッドの実行結果を判定する。成功した場合はS2813に遷移し、アプリケーション・ディスク管理部2001は、使用ディスク・テーブル2002の当該アプリケーションの使用量2202にa+b−cで求められる値を加算し、処理を終了する。一方、S2811の判定でエラーと判断された場合は、本処理を終了する。
<Fileオブジェクトのdeleteメソッド>
次に、図28を参照して、アプリケーション206が、Fileオブジェクトのdeleteメソッドを呼び出したときの処理手順について説明する。以下で説明する処理は、図9、及び図15のS905の処理の中で実行される。また、以下で説明する処理は、CPU101がROM102や外部記憶装置104に記憶された制御プログラムをRAM103に読み出して実行することにより実現される。
S2901において、バイトコード実行部301は、Fileオブジェクトのdeleteメソッドか否かを判定する。FileオブジェクトのdeleteメソッドであればS2902に遷移し、そうでなければS2907に遷移し、他のメソッドの処理を呼び出して処理を終了する。
S2902において、ファイル・アクセス管理部2004は、deleteメソッドの実行にあたり、カレントスレッドのスレッド構造体のアプリケーションIDフィールド802を読み取る。続いて、S2903において、ファイル・アクセス管理部2004は、deleteメソッドの対象となるファイルのサイズ(=a)を取得し、S2904で本来のdeleteメソッドを呼び出す。
S2905において、ファイル・アクセス管理部2004は、deleteメソッドの実行結果を判定し、エラーと判断された場合は本処理を終了する。一方、成功した場合はS2906に遷移する。S2906において、アプリケーション・ディスク管理部2001は、使用ディスク・テーブル2002の当該アプリケーションの使用量2202から操作対象のファイルサイズaを減算し、処理を終了する。
なお、本実施形態では、アプリケーション206が宣言する最大使用サイズを超える場合に所定のエラーを通知(S2608,S2715,S2814)をしている。アプリケーション管理部308は、この通知を検知した場合、対応するアプリケーションを停止するように構成することも可能である。
以上説明したように、本実施形態に係る画像処理装置は、アプリケーションの起動要求に応じて、当該アプリケーションのクラスのクラスファイルを読み込み、アプリケーションを示すアプリケーション情報をスレッドに記録するコードを、読み込んだクラスファイルに含まれるメソッドの最初に追加して、当該クラスをロードさせる。さらに、本画像処理装置は、メソッドの実行中に、生成するオブジェクトに使用するファイルサイズを確保し、スレッドに記録されたアプリケーション情報を確保したファイルサイズをディスク使用量として記録するとともに、当該オブジェクトを生成し、生成したオブジェクトのアプリケーション情報とディスク使用量とを紐付けて管理する。これにより、本実施形態では、ディスク使用量に関しても、上記第1乃至第3の実施形態と同様の効果を得ることができる。
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。

Claims (11)

  1. 少なくとも、アプリケーション制御部と、システム制御部を有する画像処理装置であって、
    前記アプリケーション制御部は、
    アプリケーションの起動要求に応じて、該アプリケーションのクラスのクラスファイルを読み込み、当該クラスをロードさせる制御手段を有し、
    前記システム制御部は、
    前記クラスをロードして、生成するオブジェクトに使用するメモリを確保し、スレッドに記録されたアプリケーション情報を前記確保したメモリに記録するとともに、当該オブジェクトを生成するオブジェクト生成手段を有し、
    前記アプリケーション制御部は、さらに、
    起動要求を受けたアプリケーションと前記アプリケーションを起動することによって使用したメモリとを、アプリケーション毎に紐付けて管理するメモリ管理手段を有し、
    前記システム制御部は、複数のアプリケーションを一つのアプリケーションとして扱い、
    前記オブジェクト生成手段により生成されたオブジェクトが複数ある場合は、オブジェクト毎に、メモリを使用しているアプリケーションを関連付けることを特徴とする画像処理装置。
  2. 前記制御手段は、さらに、前記スレッドに記録したアプリケーション情報を削除するコードを、前記読み込んだクラスファイルに含まれるメソッドの最後に追加することを特徴とする請求項1に記載の画像処理装置。
  3. 複数のアプリケーションが連携して動作する場合には、前記スレッドに記録される前記アプリケーション情報は、スタック構造とすることを特徴とする請求項1又は2に記載の画像処理装置。
  4. 前記アプリケーション情報と、当該アプリケーションが使用可能なメモリサイズを紐付けて定義したテーブルと、
    前記オブジェクト生成手段によってオブジェクトを生成するためのメモリが確保されたときに、前記メモリ管理手段で管理されている前記アプリケーション情報に対応するアプリケーションが使用しているメモリサイズと、前記確保されたメモリのサイズとの合計が対応する前記使用可能なメモリサイズを超えたか否かを判定する判定手段と、
    前記判定手段によって前記合計が前記使用可能なメモリサイズを超えたと判定されると、メモリエラーを生成する制限手段と
    をさらに備えることを特徴とする請求項1乃至3の何れか1項に記載の画像処理装置。
  5. 少なくとも、アプリケーション制御部と、システム制御部を有する画像処理装置であって、
    前記アプリケーション制御部は、
    アプリケーションの起動要求に応じて、該アプリケーションのクラスのクラスファイルを読み込み、当該クラスをロードさせる制御手段を有し、
    前記システム制御部は、
    前記クラスをロードして、生成するオブジェクトに使用するファイルサイズを確保し、スレッドに記録されたアプリケーション情報を前記確保したファイルサイズをディスク使用量として記録するとともに、当該オブジェクトを生成するオブジェクト生成手段を有し、
    前記アプリケーション制御部は、さらに、
    起動要求を受けたアプリケーションと前記アプリケーションを起動することによって使用したディスクとを、アプリケーション毎に紐付けて管理するディスク管理手段を有し、
    前記システム制御部は、複数のアプリケーションを一つのアプリケーションとして扱い、
    前記オブジェクト生成手段により生成されたオブジェクトが複数ある場合は、オブジェクト毎に、メモリを使用しているアプリケーションを関連付けることを特徴とする画像処理装置。
  6. 前記制御手段は、さらに、前記スレッドに記録したアプリケーション情報を削除するコードを、前記読み込んだクラスファイルに含まれるメソッドの最後に追加することを特徴とする請求項5に記載の画像処理装置。
  7. 複数のアプリケーションが連携して動作する場合には、前記スレッドに記録される前記アプリケーション情報は、スタック構造とすることを特徴とする請求項5又は6に記載の画像処理装置。
  8. 前記アプリケーション情報と、当該アプリケーションが使用可能なディスク使用量を紐付けて定義したテーブルと、
    前記オブジェクト生成手段によってオブジェクトを生成するためのファイルサイズが確保されたときに、前記ディスク管理手段で管理されている前記アプリケーション情報に対応するアプリケーションが使用しているディスク使用量と、前記確保されたファイルサイズとの合計が、対応する前記使用可能なディスク使用量を超えたか否かを判定する判定手段と、
    前記判定手段によって前記合計が前記使用可能なディスク使用量を超えたと判定されると、ディスクエラーを生成する制限手段と
    をさらに備えることを特徴とする請求項5乃至7の何れか1項に記載の画像処理装置。
  9. 少なくとも、アプリケーション制御部と、システム制御部を有する画像処理装置の制御方法であって、
    前記アプリケーション制御部は、
    アプリケーションの起動要求に応じて、該アプリケーションのクラスのクラスファイルを読み込み、当該クラスをロードさせる制御工程を有し、
    前記システム制御部は、
    前記クラスをロードして、生成するオブジェクトに使用するメモリを確保し、スレッドに記録されたアプリケーション情報を前記確保したメモリに記録するとともに、当該オブジェクトを生成するオブジェクト生成工程を有し、
    前記アプリケーション制御部は、さらに、
    起動要求を受けたアプリケーションと前記アプリケーションを起動することによって使用したメモリとを、アプリケーション毎に紐付けて管理するメモリ管理工程を有し、
    前記システム制御部は、複数のアプリケーションを一つのアプリケーションとして扱い、
    前記オブジェクト生成工程で生成されたオブジェクトが複数ある場合は、オブジェクト毎に、メモリを使用しているアプリケーションを関連付けることを特徴とする画像処理装置の制御方法。
  10. 少なくとも、アプリケーション制御部と、システム制御部を有する画像処理装置の制御方法であって、
    前記アプリケーション制御部は、
    アプリケーションの起動要求に応じて、該アプリケーションのクラスのクラスファイルを読み込み、当該クラスをロードさせる制御工程を有し、
    前記システム制御部は、
    前記クラスをロードして、生成するオブジェクトに使用するファイルサイズを確保し、スレッドに記録されたアプリケーション情報を前記確保したファイルサイズをディスク使用量として記録するとともに、当該オブジェクトを生成するオブジェクト生成工程を有し、
    前記アプリケーション制御部は、さらに、
    起動要求を受けたアプリケーションと前記アプリケーションを起動することによって使用したディスクとを、アプリケーション毎に紐付けて管理するディスク管理工程を有し、
    前記システム制御部は、複数のアプリケーションを一つのアプリケーションとして扱い、
    前記オブジェクト生成工程により生成されたオブジェクトが複数ある場合は、オブジェクト毎に、メモリを使用しているアプリケーションを関連付けることを特徴とする画像処理装置の制御方法。
  11. 請求項9又は10に記載の画像処理装置の制御方法における各ステップを前記画像処理装置に実行させるためのプログラム。
JP2013120103A 2013-06-06 2013-06-06 画像処理装置、その制御方法、及びプログラム Expired - Fee Related JP6223001B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2013120103A JP6223001B2 (ja) 2013-06-06 2013-06-06 画像処理装置、その制御方法、及びプログラム
US14/284,763 US9542228B2 (en) 2013-06-06 2014-05-22 Image processing apparatus, control method thereof and storage medium
KR1020140068234A KR101702708B1 (ko) 2013-06-06 2014-06-05 화상 처리 장치, 그 제어 방법 및 저장 매체
CN201410251275.2A CN104243743B (zh) 2013-06-06 2014-06-06 图像处理装置及其控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013120103A JP6223001B2 (ja) 2013-06-06 2013-06-06 画像処理装置、その制御方法、及びプログラム

Publications (3)

Publication Number Publication Date
JP2014239302A JP2014239302A (ja) 2014-12-18
JP2014239302A5 JP2014239302A5 (ja) 2016-07-21
JP6223001B2 true JP6223001B2 (ja) 2017-11-01

Family

ID=52006648

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013120103A Expired - Fee Related JP6223001B2 (ja) 2013-06-06 2013-06-06 画像処理装置、その制御方法、及びプログラム

Country Status (4)

Country Link
US (1) US9542228B2 (ja)
JP (1) JP6223001B2 (ja)
KR (1) KR101702708B1 (ja)
CN (1) CN104243743B (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9286085B2 (en) * 2014-06-27 2016-03-15 International Business Machines Corporation Correlating class loader objects across execution environments
US9720810B2 (en) * 2014-12-09 2017-08-01 Google Inc. Device cloud monitoring and stability
US9361140B1 (en) * 2014-12-11 2016-06-07 International Business Machines Corporation Isolating applications in server environment
JP5867633B1 (ja) * 2015-01-21 2016-02-24 日本電気株式会社 情報処理装置、制御方法及びプログラム
JP2017004114A (ja) * 2015-06-05 2017-01-05 キヤノン株式会社 画像形成装置及びアプリケーションの削除方法
JP6597000B2 (ja) 2015-07-10 2019-10-30 ブラザー工業株式会社 画像処理装置
JP6570364B2 (ja) * 2015-08-05 2019-09-04 キヤノン株式会社 画像形成装置及びその制御方法
CN106598679B (zh) * 2016-12-21 2020-07-31 北京奇虎科技有限公司 一种加载图片资源的方法及装置
CN106598614B (zh) * 2016-12-21 2020-12-25 北京奇虎科技有限公司 一种回收图片资源的方法及装置
US10992834B2 (en) 2018-05-17 2021-04-27 Canon Kabushiki Kaisha Image processing apparatus, method for controlling the same, and computer-readable storage medium
CN111400035A (zh) * 2020-03-04 2020-07-10 杭州海康威视***技术有限公司 一种显存分配方法、装置、电子设备及存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784553A (en) * 1996-01-16 1998-07-21 Parasoft Corporation Method and system for generating a computer program test suite using dynamic symbolic execution of JAVA programs
JP2000122876A (ja) * 1998-10-16 2000-04-28 Matsushita Electric Ind Co Ltd 情報処理装置
JP2000163176A (ja) 1998-11-25 2000-06-16 Canon Inc 周辺機器及び周辺機器制御方法及び周辺機器制御システム及び周辺機器制御プログラムを記憶した記憶媒体
JP2001166969A (ja) * 1999-12-10 2001-06-22 Toshiba Corp プログラム動作情報表示システム及びプログラムを記録したコンピュータ読み取り可能な記録媒体
CN100388191C (zh) * 2003-04-01 2008-05-14 松下电器产业株式会社 程序连接方法、装置以及终端装置
JP2005269439A (ja) 2004-03-19 2005-09-29 Ricoh Co Ltd 画像形成装置、情報処理方法、情報処理プログラム、及び記録媒体
US20070162475A1 (en) * 2005-12-30 2007-07-12 Intel Corporation Method and apparatus for hardware-based dynamic escape detection in managed run-time environments
JP2008123211A (ja) * 2006-11-10 2008-05-29 Canon Inc リソース監視装置及びリソース監視方法
JP5157537B2 (ja) * 2008-03-06 2013-03-06 日本電気株式会社 メモリ管理装置、システム、方法、及び、プログラム
CN101354660B (zh) 2008-09-12 2013-07-24 北京中星微电子有限公司 嵌入式软件程序的运行方法、装置及其***
JP2011242890A (ja) * 2010-05-14 2011-12-01 Hitachi Ltd リクエスト処理方法、リクエスト処理プログラム、および、リクエスト処理装置
JP2012221147A (ja) * 2011-04-07 2012-11-12 Hitachi Ltd 計算機及びリソース管理方法

Also Published As

Publication number Publication date
CN104243743B (zh) 2017-12-05
KR20140143336A (ko) 2014-12-16
CN104243743A (zh) 2014-12-24
US9542228B2 (en) 2017-01-10
US20140366034A1 (en) 2014-12-11
KR101702708B1 (ko) 2017-02-06
JP2014239302A (ja) 2014-12-18

Similar Documents

Publication Publication Date Title
JP6223001B2 (ja) 画像処理装置、その制御方法、及びプログラム
US9135533B2 (en) Information processing apparatus configured to establish a workflow using plugins, information processing method, and computer-readable storage medium performing the same
EP2765525B1 (en) Apparatus, non-transitory computer readable information recording medium and information recording method
US11140291B2 (en) Information processing apparatus, control method thereof, and storage medium
CN107783766B (zh) 对应用程序的文件进行清理的方法和装置
US10459775B2 (en) Information processing apparatus, method, and medium
US8767253B2 (en) Information processing apparatus and computer program product
US8250103B2 (en) Image log management device, image log management method, image log management program
CN112579202B (zh) Windows***的服务性程序编辑方法、装置、设备及存储介质
JP5398270B2 (ja) 管理装置、ログ処理方法及びプログラム
US20150089490A1 (en) Information processing system, information processing apparatus, device, software installation method, and storage medium
JP7492839B2 (ja) 構成管理装置、構成管理方法、及び、構成管理プログラム
JP6652297B2 (ja) 情報処理装置及びその制御方法、プログラム
US11811994B2 (en) Information processing system and apparatus to manage combined application
US20230036834A1 (en) Information processing system, apparatus, and storage medium having combinational and non-combinational applications
US20230074397A1 (en) Information processing system, information processing apparatus, and storage medium
US20230020062A1 (en) Information processing system and apparatus to generate description file corresponding to reproduction application based on edit instruction
US11397572B2 (en) Image forming apparatus capable of executing extension application, method of controlling same, and storage medium
JP2014071789A (ja) 情報処理装置およびプログラム
JP5942432B2 (ja) 文書管理システム
JP2010218469A (ja) 情報処理装置、情報処理方法、プログラムおよび記録媒体
JP2008037031A (ja) 画像処理装置及び画像処理システム
CN116302361A (zh) 镜像构建方法、装置、处理器及电子设备
JP2014078175A (ja) 情報処理装置、その制御方法、及びプログラム
CN117633029A (zh) 基于流处理框架的功能添加方法、装置、设备及介质

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160530

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160530

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170424

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170428

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170622

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170904

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171003

R151 Written notification of patent or utility model registration

Ref document number: 6223001

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees