JP2017157175A - 情報処理装置及びライブラリ管理方法 - Google Patents

情報処理装置及びライブラリ管理方法 Download PDF

Info

Publication number
JP2017157175A
JP2017157175A JP2016042828A JP2016042828A JP2017157175A JP 2017157175 A JP2017157175 A JP 2017157175A JP 2016042828 A JP2016042828 A JP 2016042828A JP 2016042828 A JP2016042828 A JP 2016042828A JP 2017157175 A JP2017157175 A JP 2017157175A
Authority
JP
Japan
Prior art keywords
library
application
program
class
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
JP2016042828A
Other languages
English (en)
Inventor
健 垂水
Takeshi Tarumi
健 垂水
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 JP2016042828A priority Critical patent/JP2017157175A/ja
Publication of JP2017157175A publication Critical patent/JP2017157175A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】画像形成装置等ではファイルディスクリプタの数には上限があり、消費数が増加していけば、アプリケーションが動作のために使用可能なファイルディスクリプタ(FD)数が少なくなる。
【解決手段】開いたライブラリの数に応じた量のFDを消費するクラスローダー302を用いた情報処理装置において、アプリケーションを起動する前に、ライブラリ管理モジュール304は、そのアプリケーションと既に起動済みのアプリケーションとについて設定されたFDの上限値の合計から、情報処理装置で利用できるFDの総数を差し引いた超過数が0より大きければ、その超過数が、起動するアプリケーションと起動済みのアプリケーションとにより使用されるライブラリの数の合計よりも少ないか判定し、少なければ、アプリケーションにより使用されるライブラリに含まれたクラスを統合ライブラリ305に統合する。
【選択図】図3

Description

本発明は、クラスパスに設定されているライブラリを管理する情報処理装置及びライブラリ管理方法に関わる。
Java(登録商標)の実行環境において、クラス(実行に必要なコード)のロードはクラスローダーによって行われる。クラスは、JAR(Java Archive)形式のライブラリの中にあるクラスファイルで定義されている。ライブラリは複数のクラスのクラスファイルから構成されており、特定の機能毎に分けられていることが多い。なお、ライブラリが存在する場所を示すパスはクラスパスとして、あらかじめJava(登録商標)の実行環境に設定しておく必要がある。これはクラスのロード時に、クラスローダーが、クラスパスに設定されているライブラリから、ロードするクラスを探索するためである。ここで、クラスローダーは、ライブラリを参照してクラスを探索するため、ファイルディスクリプタを消費することになる。Java(登録商標)の実行環境では、パフォーマンスを向上させるため、あるいはライブラリへの参照が切れて動作が不安定になることを防ぐために、一度参照したライブラリは、実行環境上で動作するプログラムが終了するまで参照される。そのため、クラスローダーがライブラリを参照するために消費したファイルディスクリプタはプログラムが終了するまで消費され続けることになる。
組込機器において、アプリケーションの実行環境である情報処理装置には、使用可能なリソースに制限がある。ファイルディスクリプタもリソースの一種であり、使用可能なファイルディスクリプタ数に制限がある。そのため、以下のようなことが行われている。まず、アプリケーションの作成者はアプリケーションが使用するリソース量について上限値を定める。そして、管理者ユーザーがアプリケーションを開始する際に、その上限値に基づいて、アプリケーション管理フレームワークは情報処理装置の使用可能なリソース量を超えないことを確認する。従来技術として、全く使用されることのないクラスを検知して、クラスパスから使用されることのないクラスがあるライブラリを削除する技術がある(例えば特許文献1。
特開2005−293084号公報
特許文献1は、クラスパスから使用されるクラスがあるライブラリに対しては、そのまま残している。つまり、クラスパスから使用されるクラスがあるライブラリの数が多いと、ファイルディスクリプタを多く消費する。そのため、ファイルディスクリプタの使用可能な数を超えてしまうと、結果として、起動処理に影響を及ぼす。特に、ソフトウェアのアップデートや機能拡張により、ライブラリの増加が重なっていくと、ファイルディスクリプタの消費数が増えることになる。
そこで本願発明の目的は、使用するライブラリが増加したとしても、ファイルディスクリプタの消費を抑制することにある。
上記課題を解決するために、本発明は以下の構成を有する。
開いたライブラリの数に応じた量のリソースを消費する情報処理装置であって、
インストールされた起動対象プログラムを起動する前に、該起動対象プログラムと起動済みのプログラムとについて設定されたリソースの上限値の合計から、前記情報処理装置で利用できるリソースの総数を差し引いた超過数が0より大きいか判定する第1の判定手段と、
前記第1の判定手段により大きいと判定された場合には、前記超過数が、前記起動対象プログラムと前記起動済みのプログラムとにより使用されるライブラリの数の合計よりも少ないか判定する第2の判定手段と、
前記第2の判定手段により少ないと判定された場合には、前記起動対象プログラムと前記起動済みのプログラムとにより使用されるライブラリに含まれたクラスを統合ライブラリに統合する統合手段とを有する。
本発明によれば、起動の処理に影響を及ぼすことなくクラスロード時のファイルディスクリプタの消費を抑制することが可能となる。
本発明の実施例のシステムの全体構成の一例を示す図である。 画像形成装置のハードウェア構成の一例を示す図である。 本発明の実施例のアプリケーションの実行環境の構成の一例を示す図である。 本発明の実施例における起動オプション設定ファイルの一例を示す図である。 本発明の実施例におけるアプリケーションの構成の一例を示す図である。 画像形成装置におけるライブラリ配置の一例を示した模式図である。 ライブラリ内部の構成の一例を示した模式図である。 本発明の実施例における処理フローの一例を示した図である。 本発明の第二の実施例における処理フローの一例を示した図である。
以下、本発明を実施するための形態について図面を用いて説明する。
[実施例1]
図1は本発明の装置の全体構成を示す図である。画像形成装置100は本実施例を実装した情報処理装置の一例であり、例えば多機能周辺装置(MFP)である。情報処理装置101は画像形成装置100を管理するための管理用情報処理装置である。ネットワーク120は画像形成装置100と管理用情報処理装置101を接続する。管理用情報処理装置101は画像形成装置100をネットワーク120経由で利用するために用いられる。アプリケーションA110は画像形成装置100上で動作するアプリケーションの一つの例である。アプリケーションB111は同様に画像形成装置100上で動作するアプリケーションのもう一つの例である。さらにアプリケーションC112は同様に画像形成装置100上で動作するアプリケーションのさらなる一つの例である。画像形成装置100上では一つ、あるいは複数のアプリケーションを動作させることが可能である。ここではアプリケーションを三つ例示している。以後、「アプリケーション11n」という表現は、アプリケーションA110、アプリケーションB111、アプリケーションC112にて代表されるような一つまたは複数のアプリケーションを指す。一般利用者および管理者は画像形成装置100の基本機能、アプリケーション11n、および、画像形成装置100やアプリケーション11nを管理するためのリソース管理装置を利用することが可能である。利用に当たっては、画像形成装置100を直接操作、もしくはネットワーク120経由で管理用情報処理装置101から操作することが可能である。
<画像形成装置のハードウェア構成>
図2は画像形成装置100のハードウェア構成を図式化したものである。コア部200はプロセッサやメモリなどを含む制御部であり、コア部200に接続された種々のデバイスを、プロセッサとメモリとが共働してプログラムを実行することで制御する。また、アプリケーションの実行環境を実現し、インストールされたアプリケーションを実行する。コア部200には、ユーザーインターフェース部201、記憶装置202、ネットワーク120に接続するためのネットワークインターフェース部203、スキャナー部204、プリンター部205、フィニッシャー部206などが周辺デバイスとして接続されている。コア部200はこれらデバイスを制御し、その機能をユーザーインターフェース部201あるいはネットワーク120を介してユーザに提供するとともに、アプリケーションに対しても提供している。
<アプリケーション実行環境>
図3は本実施例における画像形成装置100の上でアプリケーション11nを実行するためのアプリケーション実行環境である。
アプリケーション実行基盤301は、Java(登録商標)の実行環境である。アプリケーション実行基盤301は、起動モジュール300から指示を以って起動する。クラスローダー302は、アプリケーション実行基盤301で、クラスを実行するために、当該クラスをロードするモジュールを示す。ライブラリ管理モジュール304は、クラスパスに設定されているライブラリを一つの統合ライブラリ305として生成処理を行う。
ユーザーが画像形成装置100の電源を入れると、起動モジュール300は、ライブラリ管理モジュール304に対して、統合ライブラリ305の作成処理を指示する。そして、統合ライブラリ305の生成処理が完了した後で、起動モジュール300はアプリケーション実行基盤301の起動を開始する。
アプリケーション実行基盤301がクラスの実行処理を行う際に、クラスのロードはクラスローダー302によって行われる。クラスのロードを実行する際に、クラスローダー302はクラスパスに設定されているライブラリから、実行処理に必要なクラスを探索する。クラスはアプリケーション実行基盤301が処理を実行するための実行コードであり、ライブラリに定義されている。ライブラリが格納されている場所は、クラスパスに設定されており、クラスローダー302はクラスパスを元にロードするクラスを特定する。
クラスパスには、システムが必要とするシステム用クラスパスと、各アプリケーション11n用のクラスをロードする際に必要なアプリ用クラスパス(以降、アプリクラスパスと称する)が存在する。これらシステム用クラスパスとアプリクラスパスを合わせてクラスパスと呼ぶ。システム用クラスパスには、ブートクラスパスとシステムクラスパスの少なくとも一方が含まれる。ブートクラスパスはJava(登録商標)の実行環境を起動するために必要なクラスを含むライブラリの所在場所を示すパスである。システムクラスパスはアプリケーション実行基盤301、及びアプリ管理フレームワーク303を起動するために必要なクラスを含むライブラリの所在場所を示すパスである。システム用クラスパスは、起動モジュール300がアプリケーション実行基盤301を起動する際に、起動オプションの一部として通知する。そして、アプリケーション実行基盤301は通知されたシステムクラスパスを参照し、起動時に使用する。一方アプリクラスパスは、アプリケーション内に含まれるアプリケーション設定ファイル(以下、アプリ設定ファイルとも呼ぶ。)に存在する。アプリクラスパスはアプリケーション管理フレームワーク303が参照し、開始するアプリケーション専用のクラスパスとして設定する。そのため、アプリクラスパスといっても異なるアプリケーション11n同士に対するアプリクラスパスはまったく異なった種類のクラスパスとなる。
クラスを実行する際には、まず、クラスローダー302はシステム用クラスパスもしくはアプリクラスパスに設定されたライブラリの中からクラスを探索する。そして、ライブラリの中にクラスが存在する場合は、クラスローダー302が該ライブラリから目的のクラスをロードし、アプリケーション実行基盤301がロードしたクラスを実行することとなる。
画像形成装置100のシステムが動き始めてから、ユーザーによって電源が切られるまで、ロードしていないクラスが実行されると、このようなクラスローダー302によるクラスのロード処理が行われる。また、クラスには同名のクラスが衝突しないように、アプリケーション作成者によって、あらかじめ名前空間が与えられている。ライブラリは、一つ以上のクラスをJAR(Java Archive)ファイルとして圧縮したファイルになっている。ライブラリの中でもクラスが衝突するのを防ぐために、JARファイルには名前空間に対応したディレクトリ階層が構成され、その中にクラスのファイルが配置されていることが一般的である。本実施例においても、ライブラリ内が名前空間のディレクトリ階層で構成されている例を使って説明する。
アプリケーション管理フレームワーク303は、アプリケーション11nのインストールとアンインストール、及び、実行・停止を管理する。アプリケーション実行環境内にインストールしたり、アプリケーション実行環境内のアプリケーションの実行を開始したり、停止する際には、アプリケーション管理フレームワーク303を利用する。アプリケーション管理フレームワーク303は、画像形成装置100の管理者からのリクエストに応じて、アプリケーションのインストール処理やアプリケーション開始処理を行う。その際に、アプリケーション管理フレームワーク303はアプリケーション内のアプリ設定ファイルを参照して、該ファイルに宣言されているリソースの上限値を取得する。そして、アプリケーション実行環境内のリソースの空き容量に収まるか否かを判定し、空き容量に収まるようであれば、アプリケーション開始処理を実行する。
統合ライブラリ305は、ライブラリ管理モジュール304によって作成される。ライブラリ管理モジュール304は起動モジュール300から統合ライブラリ作成処理の指示を受信することで動作する。ライブラリ管理モジュール304は、起動オプション設定ファイルのシステム用クラスパスやアプリケーション設定ファイルのアプリクラスパスに設定されているライブラリを解凍する。そして、解凍して展開したクラスを新しい統合ライブラリとしてJARファイル形式で圧縮し直す。その後、ライブラリ管理モジュールは、統合ライブラリを作成した後で、起動オプション設定ファイルのクラスパス、もしくは、アプリケーション設定ファイルのアプリクラスパスの設定を新しく生成した統合ライブラリになるように変更する。
システム用クラスパスもしくはアプリクラスパスとして設定されていた複数ライブラリ内のクラス群をまとめた統合ライブラリのみをクラスパスに設定することで、クラスローダー302は統合ライブラリ305のみを参照して必要なクラスを探索可能となる。統合ライブラリ305に含まれるクラスは、一度クラスローダー302によってロードされると、アプリケーション実行基盤301、アプリケーション管理フレームワーク303、アプリケーション11nから実行可能となる。
<起動オプション設定ファイルの一例>
図4は本実施例における起動オプション設定ファイルの一例を示した図である。図4(a)は、本実施例におけるライブラリ管理モジュール304によって変更される前の起動オプション設定ファイル400を示す図である。起動オプション設定ファイル400は、ライブラリ管理モジュール304が統合ライブラリ305を作成してファイルの内容を変更する前の起動オプション設定ファイルである。パス401は、アプリケーション実行基盤301を起動するための実行ファイルがある所在場所を示すパスである。パス402は、ライブラリの所在場所を示すパスである。ライブラリ403は、第一のクラスパスとして設定されているライブラリである。第一のクラスパス402に設定されたライブラリ403には、アプリケーション実行基盤301やアプリ管理フレームワーク303が処理を実行するのに必要なクラス群を含んでいる。メインプログラム404は、アプリケーション実行基盤301がアプリ管理フレームワーク303を起動するために必要なプログラムである。
図4(b)は本実施例におけるライブラリ管理モジュール304によって変更された後の起動オプション設定ファイル410を示す図である。起動オプション設定ファイル410は、ライブラリ管理モジュール304が統合ライブラリを作成してファイルの内容を変更した後の起動オプション設定ファイルである。起動モジュール300は起動オプション設定ファイル410の内容を読み込み、読み込んだ内容をアプリケーション実行基盤301の起動オプションとして使用する。ライブラリ411は、第一のクラスパスとして設定されている統合ライブラリ305である。図4の例では、図4(a)に示された:/Device/system/lib/libsystem001.jar、:/Device/system/lib/libsystem002.jar、:/Device/system/lib/libsystem003.jar等のライブラリがひとつに統合されたライブラリである。ライブラリ管理モジュール304は統合ライブラリを作成した後、起動オプション設定ファイル400のクラスパス設定に統合ライブラリを追加し、統合ライブラリ以外のライブラリを第一のクラスパス402から削除する。
<アプリケーションファイルの例>
図5(a)は本実施例におけるアプリケーション11nを構成するファイルについて説明するための図である。アプリケーション11nは幾つかの種類のファイルを抱えている。アプリケーション実行コードファイル500は、アプリケーションの実行コードなどを含む。内包ライブラリ501は、アプリケーションの処理を実行するために必要なライブラリを示す。アプリケーション11nの処理の実行時に、クラスパス402に設定されているライブラリ403では特定のクラスが不足し、機能を実現できない場合がある。そのような場合を回避するために、アプリケーション作成者はアプリケーション用のライブラリをアプリケーション内包ライブラリ501として用意する。アプリケーション設定ファイル502は、アプリケーションの基本情報を含む。アプリケーション設定ファイル502にはアプリケーションID等の基本情報や、アプリケーションが使用するファイルディスクリプタ等のリソースの上限値、アプリクラスパスがアプリケーション作成者によって定義されている。
図5(b)は、アプリケーション設定ファイル(アプリ設定ファイル)502の一例を示す図である。アプリケーションID511は、アプリケーション管理フレームワークが303各アプリケーション11nを一意に識別するための識別情報を示す。アプリケーション名512は、アプリケーション11nの名称を示す。アプリケーション名512は画像形成装置100のユーザーインターフェース部201の表示や、アプリケーション管理フレームワーク303がユーザーに対して表示する際に使用する。リソース上限値513は、アプリケーション11nが使用するリソースの上限値を示す。アプリケーションの作成者は予めアプリケーション11nが使用するリソースの上限値を算出しておき、アプリケーション設定ファイル502にリソース上限値513として定義する。リソース上限値513は、リソースの種類ごとにその上限値を示す。図5(b)の例では、たとえばファイルディスクリプタについては8が設定されている。アプリケーション管理フレームワーク303はアプリケーション11nをインストールして開始する際に、リソース上限値513を参照する。そして、現在のアプリケーション実行環境内のリソースの空き容量に収まるか否かを判定し、空き容量の収まるようであれば、アプリケーションを開始する。アプリケーション実行環境内で利用できるリソースの上限は予め定めておくことができる。アプリクラスパス514は、アプリケーション11nの処理を実行する際に必要なアプリケーション実行ファイル500と、アプリケーション内包ライブラリ501の場所を示す経路情報を示す。クラスパスには各ライブラリが存在する場所のパスが記載されていれることを示す。
図5(c)は、ライブラリ管理モジュール304が、アプリクラスパス514に記載されていた内容、たとえば内包ライブラリ501の所在を、統合ライブラリの所在に変更した後のアプリケーション設定ファイルの一例を示した図である。ライブラリ管理モジュール304は統合ライブラリの作成指示を受信すると、アプリケーション設定ファイル502に記載されているアプリクラスパス514を参照する。そして、アプリクラスパスに設定されているすべてのアプリケーション内包ライブラリ501を解凍し、JARファイル形式で再圧縮、統合ライブラリを生成する。統合ライブラリを生成した後で、ライブラリ管理モジュール304は、該アプリクラスパス514の記載を、生成した統合ライブラリに変更する。
アプリケーション設定ファイル520は、アプリクラスパス514の記載を、統合ライブラリのパスへと変更した後のアプリケーション設定ファイルを示す。アプリクラスパス521は、前述のように変更されたアプリクラスパスを示し、アプリケーション実行コードファイル500と、統合ライブラリのパスを記載している。ここでは、アプリクラスパス514で記載していたライブラリ、libpa1.jar、libpa2.jar、libpa3.jar、libpa4.jar、libpa5.jarが、統合ライブラリlibinteg.jarに置き換わっていることを示している。ファイルディスクリプタ数522には、アプリケーションが使用するファイルディスクリプタ数が記載されている。図5(c)では、アプリケーションが使用するファイルディスクリプタ数の最大値は統合前と変わらず8であるが、統合ライブラリへの置き換えによって、使用するファイルディスクリプタ数を書き換えてもよい。ライブラリの統合によって、使用するファイルディスクリプタの数は、統合されたライブラリを使用するアプリケーション全体でひとつになる。そのため、使用するファイルディスクリプタ数の最大値を、統合前の数からクラスパスの数を減じた値に書き換えてよい。図5(c)の例では、5つのライブラリを統合しているので、最大値521を、8−5=3に書き換えてもよい。統合ライブラリから初めてクラスをロードする際にはひとつのファイルディスクリプタが使用されるが、統合ライブラリのパスを図4(b)のように起動オプション設定ファイルに記述しておくことで、アプリケーション設定ファイルでのファイルディスクリプタの宣言値を上述したように変更できる。
<ライブラリ配置の一例>
図6は、画像形成装置100内にあるライブラリ配置の一例をツリー状で示した構成図である。フォルダ601は、クラスパス402に設定されているライブラリを配置するためのフォルダである。図6では、統合されたライブラリが画像形成装置100(図6ではDeviceにより示されている)の内部に残っているが、ストレージの使用リソースを軽減させるために、クラスパス402の設定から統合前のライブラリ403を削除した後に、それらライブラリもライブラリ管理モジュール304が削除しても良い。統合ライブラリ602は、ライブラリ管理モジュール304が作成した統合ライブラリである。ライブラリ管理モジュール304は統合ライブラリ602を作成した後、この統合ライブラリ602をクラスパス411に設定する。フォルダ603は、画像形成装置11nにインストールされたアプリケーション11nを配置するためのフォルダである。アプリケーション管理フレームワーク303は、アプリケーション11nをインストールする際に、アプリケーション内包ライブラリ501をアプリケーション11nから取り出し、アプリ格納用フォルダ603に配置する。本実施例では、簡単にするため、図6でライブラリをまとめて配置した例としているが、起動オプションであるクラスパス402、411や、アプリクラスパス514と整合性が取れていれば、任意の場所に配置しても良い。
<クラスファイルの配置例>
図7は本実施例のライブラリ内にあるクラスファイルの配置の一例をツリー状で示した構成図である。
図7(a)は、ライブラリ管理モジュール304が、クラスファイルを集めて圧縮するために解凍するライブラリ内を示した図である。クラスファイル701〜704はクラスパス402に設定されているライブラリ内のクラスファイルである。クラスファイル705〜706はアプリクラスパス514に設定されているライブラリ内のクラスファイルである。
図7(b)は、ライブラリ管理モジュール304がライブラリを解凍した後、全てのクラスファイルを圧縮して作成した統合ライブラリ内を示した図である。クラスファイル710は、クラスパス411に設定されている統合ライブラリ内のクラスファイルのである。図7(a)に記載されているクラスファイル701〜706は、統合ライブラリ内に全て配置されているため、クラスローダー301はこの統合ライブラリからクラスを探索するだけで、処理の実行に必要なクラスを見つけることが出来る。
<アプリケーション起動時の処理(1)>
本実施例におけるアプリケーション起動時の処理フローについて、図8のフローチャートを用いて説明する。本実施例は、アプリケーション管理フレームワーク303がアプリケーションのインストールを行い、アプリケーション管理フレームワーク303が管理者ユーザーからのリクエストの受信に応じて、もしくは自動的にアプリケーションの起動を行うところから開始する。図8の手順によりこれから起動されるアプリケーションを起動対象アプリケーションまたは起動対象プログラム、図8の開始時点で既に起動されているアプリケーションを起動済みアプリケーションまたは起動済みプログラムと呼ぶことにする。起動済みアプリケーションは、そのアプリケーションが使用するライブラリを開く際にファイルディスクリプタが既に消費されているが、起動対象アプリケーションが使用するライブラリはまだ開かれておらず、そのためのファイルディスクリプタはまだ消費されていない。
アプリケーションの起動処理が開始されると、アプリケーション管理フレームワーク303は、起動対象アプリケーションのアプリケーション設定ファイル502から、該アプリケーションの使用するファイルディスクリプタ(以降、FDと略す)数を取得する(S801)。アプリケーションが使用するFD数は、図5(b)に示したように、アプリ設定ファイル502に宣言(あるいは記述)されているので、S801ではその値を読み取る。
そして、アプリケーション管理フレームワーク303は、起動済みアプリケーションのアプリケーション設定ファイル502又は520から、起動済みアプリケーションの使用FD数を取得する。複数のアプリケーションが起動済みの場合は、各アプリケーションの使用FD数を取得し、それらの総計を取得する(S802)。
そして、ステップS801で取得したFD数と、ステップS802で取得したFD数との合計数と、アプリケーション実行基盤301に定義されているシステムの総FD数とを比較する(S803)。比較により、S801とS802で取得したFD数の合計数がシステムの総FD数を超えないと判定した場合、アプリ管理フレームワークはアプリケーション実行基盤301に、起動対象アプリケーションの開始を指示する。すなわち、起動対象アプリケーションが使用するライブラリをロードしても、その時点での使用済みFD数がシステムで使用できるFD数を超えないと判断できるなら、起動対象アプリケーションをそのまま起動する。アプリケーション実行基盤301は、クラスローダー302を通して、該アプリケーションの実行ファイルとアプリケーション内包ライブラリをロードする。そして、該アプリケーションの実行を開始して(S812)本フローチャートを終了する。なおステップS803では、ステップS801およびS802で取得したFD数の合計からシステムの総FD数を差し引いた値(超過数)が0より大きいか否かを判定していると言い換えることもできる。
一方、ステップS803の比較により、S802とS803で取得したFD数の合計数がシステムの総FD数を超えると判定した場合、システムで使用可能な総FD数に必要な空きがなく、起動対象アプリケーションが即時に起動できない。その場合、アプリケーション管理フレームワーク303は、起動中のアプリケーションの内包ライブラリのロードに使用しているFD数を集計する(S804)。FDはクラスローダー302がクラスをロードする際に使用されている。クラスをロードする際には、クラスを含むライブラリの読み込みが行われ、読み込みの際にFDが一つ使用される。アプリケーション実行基盤301がライブラリを読み込むと、システムとして終了するまでライブラリは読み込み状態となり、一つのFDが使用され続ける。そこでアプリケーション管理フレームワーク303は、起動済みアプリケーションのアプリケーション設定ファイル502のアプリクラスパスに記載されているライブラリ数を取得する。そして、取得したライブラリ数をライブラリのロードに使用しているFD数として取得する(S804)。S804では、起動済みアプリケーションが複数あれば、各アプリケーションのアプリケーション設定ファイル502又は520から、使用しているFD数を集計する。
次に、アプリケーション管理フレームワーク303は、起動対象アプリケーションのアプリケーション設定ファイル502から、起動対象アプリケーションのライブラリのロードに使用するFD数を取得する(S805)。これもS804と同様、起動対象アプリケーションのアプリケーション設定ファイル502に記載されたアプリクラスパスに記載されているライブラリ数をFD数として取得できる。
そして、アプリケーション管理フレームワーク303は、システムの総FD数と、ステップS801およびS802で取得した、アプリケーションにより使用中及び使用予定のFD数の総計との差分を求める。すなわち、起動対象アプリケーションをこのまま起動したとしたら、システム上限を超過するであろうFDの数(超過数)を求める。そして、ステップS804及びステップS805にて集計した、各アプリケーションがクラスのロードのために使用するFDの数の合計と、前記計測した差分(すなわち超過数)とを比較する。ここで、ステップS804及びステップS805にて集計した、各アプリケーションがクラスのロードのために使用するFDの数の合計は、ライブラリを統合することで減らすことができるFD数でもある。この減らすことができるFD数が前述のFDの超過数より少ないと、ライブラリを統合したとしても、アプリケーションにより宣言されたFD数の総計は、システムにおけるFD上限値を超えることになる。そこで、比較の結果、クラスロードのために使用するFD数よりも、FDの超過数が多いと判定した場合は、アプリケーションが使用するライブラリを統合したとしても、アプリケーションで使用されるFDの数が足りないと判断する。そして、アプリケーション管理フレームワーク303が該アプリケーションの起動処理を行わず(S811)、本フローチャートを終了する。
一方、ステップS806の比較の結果、クラスロードのために使用するFD数よりも、FDの超過数の方が少ないと判定した場合は、使用しているFD数をライブラリの統合により削減すれば、起動対象アプリケーションの起動が可能な状態となると判断できる。すなわち、ライブラリを統合することで、アプリケーションがライブラリをロードするために使用されるFD数は、システム上限以内に収まる。そこでアプリケーション管理フレームワーク303は、ライブライ管理モジュール304に対して、全アプリケーションのアプリケーション内包ライブラリの統合処理を指示し、ステップS807へ進む。
統合処理の指示を受信したライブラリ管理モジュール304は、アプリケーション管理フレームワーク303が管理しているアプリケーションのリストの順に、ライブラリの統合処理を進める(S807)。統合処理としては、まず、起動オプション設定ファイル400に記載されているクラスパスを参照し、クラスパスに記載されているライブラリを、動作に影響しない場所に解凍する。そして、次に全アプリケーションのアプリケーション設定ファイル502に記載されているアプリクラスパスを参照し、前述と同様に動作に影響しない場所に、アプリクラスパスに記載されているライブラリをすべて解凍する。ここでは、動作に影響しない場所に対して、統合ライブラリのベースとなるパスを定める。そして、ライブラリの解凍処理を行い、含まれるクラスを統合ライブラリのベースとなるパスにコピーする。解凍処理を行ったライブラリのクラスをコピーした後は、ライブラリのクローズ処理を行う。ライブラリの解凍処理のために使用するFDは、アプリケーション実行基盤301のライブラリ読み込みと異なり、ライブラリのクローズ処理によって解放される。アプリケーション管理フレームワーク303が管理するアプリケーションのリストの順に、対象となるライブラリを遂次処理することで、統合処理を行い際のFDの使用数を限定的にする。そして、起動中アプリケーションのクラスパスに記載されているライブラリと、アプリクラスパスに記載されているライブラリの解凍が全て完了したら、統合ライブラリのベースとなるパスを基準に、JAR形式に再圧縮し、統合ライブラリを生成する。
そして、次にライブラリ管理モジュールは、統合したライブラリを対象としたアプリケーション設定ファイルを生成する(S808)。このアプリケーション設定ファイルには、統合ライブラリが、統合前のライブラリに代えてクラスパスに記載されているファイルとなる。ライブラリ管理モジュール304がライブラリの統合処理を完了すると、アプリケーション管理フレームワーク303は、統合ライブラリを管理対象とする。
そして、アプリケーション管理フレームワーク303は、画像形成装置100の再起動が行われた際に、既存のライブラリが統合ライブラリに置き換わるように設定する(S809)。ここでは、統合ライブラリを既存のライブラリが配置されているパスと同様の箇所に配置する。そして、既存のクラスパス及びアプリクラスパスに記載されているライブラリを統合ライブラリに置き換えた起動オプション設定ファイル及び統合ライブラリ用のアプリケーション設定ファイルを、起動時に差し替えるよう起動モジュール300に指示する。
そして、画像形成装置100を再起動させ、画像形成装置100の再起動が行われた後で、統合ライブラリの起動処理を行い、起動対象アプリケーションの起動を行い(S810)、本フローチャートを終了する。
本実施例のステップS807以降で示すように、ライブラリ管理モジュール304が統合ライブラリを生成し、その統合ライブライをアプリ設定ファイルのアプリクラスパスに設定する。これにより、アプリケーション実行基盤301が該アプリケーションのクラスをロードする際に、クラスローダー302は統合ライブラリのみを探索することで、該当クラスを見つけることが可能となる。アプリケーションに複数の内包ライブラリが存在する場合に比べて、ファイルディスクリプタの消費を1に抑えることが可能となる。
また、前述の統合ライブラリの生成処理を、アプリケーションの実行開始前に行うことで、画像形成装置100のリソース容量が確保される場合は、画像形成装置の起動処理に影響を与えることなく、ファイルディスクリプタの消費を抑えることが出来る。
さらに、画像形成装置100のリソース容量が確保できずアプリケーションの即時開始が困難な場合でも、画像形成装置内の全てのアプリケーションの統合ライブラリを生成することで、ファイルディスクリプタの消費を抑えることが可能となる。この場合、本実施例では画像形成装置の再起動を必要としているが、インストールしたアプリケーションの実行できないといった現象を回避する方法があることも示すことが出来ている。
なお、ステップS801で取得したFD数が0の場合には、S803ではFD数の合計がシステムの総数より大きくなることはないので、S801の直後に取得したFD数が0であるか判定し、0であればS812に分岐してもよい。
[実施例2]
本発明における二つ目の実施例について、図9のフローチャートを用いて説明する。本実施例は、図8のフローチャート同様に、アプリケーション管理フレームワーク303がアプリケーションのインストールを行い、アプリケーション管理フレームワーク303が管理者ユーザーからのリクエストを受信、もしくは自動的にアプリケーションの起動を行うところから開始する。そして、図8のステップS801〜S803で同様の処理を行い、ステップS803の判定により、FDの該合計数が該システムの総FD数を超えないと判定した際に、ステップS913へと進む。
ステップS913では、アプリケーション管理フレームワーク303が、起動対象アプリケーションのアプリケーション設定ファイルから、複数のアプリクラスパスが登録されているか否かを判定する。アプリクラスパスの記載が一つ、もしくは、存在しない場合にS812へ進み、前述と同様に該アプリケーションの起動処理を行う。
アプリクラスパスに、二つ以上のライブラリが記載されている場合、アプリケーション管理フレームワーク303は、ライブラリ管理モジュール304に対して、該アプリケーションの統合ライブラリ生成を指示する。
統合ライブラリ生成の指示を受信したライブラリ管理モジュール304は、起動するアプリケーションに含まれるライブラリを解凍し、再圧縮を行い、統合ライブラリを生成する(S914)。そして、起動するアプリケーションのアプリケーション設定ファイルのアプリクラスパスの記載を、統合ライブラリのみの記載に変更し、統合ライブラリを生成する。アプリケーション管理フレームワークは、アプリケーション実行基盤301に対して、該生成した統合ライブラリを実行するように指示する。
そして、アプリケーション実行基盤301は、クラスローダー302を通して生成した統合ライブラリをロードし、該アプリケーションを起動し(S915)、本フローチャートを終了する。
このようにFD数の不足が発生しない場合でも、アプリケーション内に複数ライブラリが含まれるか否かを判定し、複数のライブラリが含まれる場合には該アプリケーションのみを対象とした統合ライブラリを生成することで、FDの使用数を削減することが可能となる。
[その他の実施例]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピューターにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路例えば、ASICによっても実現可能である。
100 画像形成装置、101 管理用情報処理装置、130 ネットワーク、302 アプリケーション管理フレームワーク、304 リソースサービス、402 リソース宣言ファイル、412 リソース上限値、413 使用リソース初期値

Claims (13)

  1. 開いたライブラリの数に応じた量のリソースを消費する情報処理装置であって、
    インストールされた起動対象プログラムを起動する前に、該起動対象プログラムと起動済みのプログラムとについて設定されたリソースの上限値の合計から、前記情報処理装置で利用できるリソースの総数を差し引いた超過数が0より大きいか判定する第1の判定手段と、
    前記第1の判定手段により大きいと判定された場合には、前記超過数が、前記起動対象プログラムと前記起動済みのプログラムとにより使用されるライブラリの数の合計よりも少ないか判定する第2の判定手段と、
    前記第2の判定手段により少ないと判定された場合には、前記起動対象プログラムと前記起動済みのプログラムとにより使用されるライブラリに含まれたクラスを統合ライブラリに統合する統合手段と
    を有することを特徴とする情報処理装置。
  2. 前記ライブラリは、1つ以上のクラスを圧縮したファイルであり、
    前記統合手段は、前記ライブラリを解凍し、前記統合ライブラリに統合して圧縮することを特徴とする請求項1に記載の情報処理装置。
  3. 前記統合手段によるクラスの統合の後に、前記情報処理装置を再起動することを特徴とする請求項1又は2に記載の情報処理装置。
  4. 前記第1の判定手段により、前記超過数が0より大きくないと判定された場合には、前記起動対象プログラムをそのまま起動することを特徴とする請求項1乃至3のいずれか一項に記載の情報処理装置。
  5. 前記起動対象プログラムについて設定されたリソースの上限値が0の場合には、前記起動対象プログラムをそのまま起動することを特徴とする請求項1乃至4のいずれか一項に記載の情報処理装置。
  6. 前記起動対象プログラムを実行する際に、該プログラムで用いられるクラスを含むライブラリを開いて当該クラスをロードするロード手段を更に有することを特徴とする請求項1乃至5のいずれか一項に記載の情報処理装置。
  7. 前記第1の判定手段により、前記超過数が0より大きくないと判定された場合に、前記起動対象プログラムにより使用されるライブラリの数が複数であるか判定する第3の判定手段を更に有し、
    前記統合手段は、前記第3の判定手段により複数であると判定された場合にも、前記起動対象プログラムと前記起動済みのプログラムとにより使用されるライブラリに含まれたクラスを統合し、複数でないと判定された場合には、前記起動対象プログラムをそのまま起動することを特徴とする請求項1乃至3のいずれか一項に記載の情報処理装置。
  8. 前記第2の判定手段によりは、前記起動対象プログラムと前記起動済みのプログラムとにより使用されるライブラリの数を、前記起動対象プログラムと前記起動済みプログラムのそれぞれの設定ファイルに記述された、ライブラリの所在を示すクラスパスに基づいて特定することを特徴とする請求項1乃至7のいずれか一項に記載の情報処理装置。
  9. 前記リソースにはファイルディスクリプタが含まれることを特徴とする請求項1乃至8のいずれか一項に記載の情報処理装置。
  10. 開いたライブラリの数に応じた量のリソースを消費する情報処理装置によるライブラリ管理方法であって、
    インストールされた起動対象プログラムを起動する前に、該起動対象プログラムと起動済みのプログラムとについて設定されたリソースの上限値の合計から、前記情報処理装置で利用できるリソースの総数を差し引いた超過数が0より大きいか判定する第1の判定工程と、
    前記第1の判定工程により大きいと判定された場合には、前記超過数が、前記起動対象プログラムと前記起動済みのプログラムとにより使用されるライブラリの数の合計よりも少ないか判定する第2の判定工程と、
    前記第2の判定工程により少ないと判定された場合には、前記起動対象プログラムと前記起動済みのプログラムとにより使用されるライブラリに含まれたクラスを統合ライブラリに統合する統合工程と
    を有することを特徴とするリソース管理方法。
  11. 前記ライブラリは、1つ以上のクラスを圧縮したファイルであり、
    前記統合工程では、前記ライブラリを解凍し、前記統合ライブラリに統合して圧縮することを特徴とする請求項10に記載のリソース管理方法。
  12. 開いたライブラリの数に応じた量のリソースを消費するコンピューターを、
    インストールされた起動対象プログラムを起動する前に、該起動対象プログラムと起動済みのプログラムとについて設定されたリソースの上限値の合計から、前記コンピューターで利用できるリソースの総数を差し引いた超過数が0より大きいか判定する第1の判定手段と、
    前記第1の判定手段により大きいと判定された場合には、前記超過数が、前記起動対象プログラムと前記起動済みのプログラムとにより使用されるライブラリの数の合計よりも少ないか判定する第2の判定手段と、
    前記第2の判定手段により少ないと判定された場合には、前記起動対象プログラムと前記起動済みのプログラムとにより使用されるライブラリに含まれたクラスを統合ライブラリに統合する統合手段と
    して機能させるためのプログラム。
  13. 前記ライブラリは、1つ以上のクラスを圧縮したファイルであり、
    前記統合手段は、前記ライブラリを解凍し、前記統合ライブラリに統合して圧縮することを特徴とする請求項12に記載のプログラム。
JP2016042828A 2016-03-04 2016-03-04 情報処理装置及びライブラリ管理方法 Pending JP2017157175A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016042828A JP2017157175A (ja) 2016-03-04 2016-03-04 情報処理装置及びライブラリ管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016042828A JP2017157175A (ja) 2016-03-04 2016-03-04 情報処理装置及びライブラリ管理方法

Publications (1)

Publication Number Publication Date
JP2017157175A true JP2017157175A (ja) 2017-09-07

Family

ID=59809931

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016042828A Pending JP2017157175A (ja) 2016-03-04 2016-03-04 情報処理装置及びライブラリ管理方法

Country Status (1)

Country Link
JP (1) JP2017157175A (ja)

Similar Documents

Publication Publication Date Title
JP5294892B2 (ja) 画像形成装置、装置、制御方法、及びプログラム
KR20140046402A (ko) 라이브러리 운영체제들과의 애플리케이션 호환성
US8463950B2 (en) Information processing apparatus, execution control method, and recording medium storing execution control program
US9916149B2 (en) Information processing apparatus, control method for information processing apparatus, and storage medium of program for executing control method
US9086938B2 (en) Information processing apparatus, control method thereof, and storage medium
US10169022B2 (en) Information processing apparatus and resource management method
CN112214388A (zh) 内存监控方法、装置、设备及计算机可读存储介质
KR102067974B1 (ko) 화상 형성장치 및 어플리케이션의 삭제방법
US9588755B2 (en) Information processing apparatus capable of controlling installation of application, method of controlling the same, and storage medium
EP4290376A1 (en) Reducing deployment time for container clones in computing environments
US20220374256A1 (en) Information processing system, information processing apparatus, method of controlling the same, and storage medium
US9753775B2 (en) Resource management apparatus and resource management method
JP2017157175A (ja) 情報処理装置及びライブラリ管理方法
CN107153554B (zh) 信息处理装置和库管理方法
JP2008059482A (ja) 情報処理装置、情報処理方法
JP2006286003A (ja) 機能を追加するように、移動通信機器にてアプリケーションを拡張するシステム、およびその方法
JP6873772B2 (ja) 情報処理装置、情報処理装置の制御方法及びアプリケーション管理方法
US11586723B2 (en) Information processing apparatus, control method for information processing apparatus, and storage medium
JP2010066872A (ja) アプリケーション実行装置
JP2008191786A (ja) プログラム管理装置、プログラム管理方法及びプログラム
JP2021184208A (ja) 情報処理装置、情報処理方法、及びプログラム
CN117707551A (zh) 一种目标软件包的安装方法及装置
JP2021189487A (ja) 管理装置およびその制御方法
CN113076109A (zh) 一种跨平台的部署脚本语言的方法
CN117762447A (zh) 软件功能包的自动更新方法、装置、设备及存储介质