JP6135193B2 - プログラム実行装置、プログラム実行方法、及びプログラム実行プログラム - Google Patents

プログラム実行装置、プログラム実行方法、及びプログラム実行プログラム Download PDF

Info

Publication number
JP6135193B2
JP6135193B2 JP2013041506A JP2013041506A JP6135193B2 JP 6135193 B2 JP6135193 B2 JP 6135193B2 JP 2013041506 A JP2013041506 A JP 2013041506A JP 2013041506 A JP2013041506 A JP 2013041506A JP 6135193 B2 JP6135193 B2 JP 6135193B2
Authority
JP
Japan
Prior art keywords
java
program
cpu
application program
application
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.)
Active
Application number
JP2013041506A
Other languages
English (en)
Other versions
JP2014170353A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2013041506A priority Critical patent/JP6135193B2/ja
Publication of JP2014170353A publication Critical patent/JP2014170353A/ja
Application granted granted Critical
Publication of JP6135193B2 publication Critical patent/JP6135193B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、プログラム実行装置、プログラム実行方法、及びプログラム実行プログラムに関し、特に、仮想マシンによってアプリケーションプログラムを逐次解釈して実行する技術に関する。
特許文献1には、Java(登録商標)仮想マシン上で、Javaアプリケーションを実行する技術が開示されている。しかしながら、Javaアプリケーションは主に起動が遅いことを理由にあまり普及していない。
Javaアプリケーションプロセスは、その起動の際、Java仮想マシン(Java VM)を生成する必要があり、通常のネイティブアプリケーションプロセスに比べて起動が遅い。そのため、Javaアプリケーションは、同じ目的のネイティブアプリケーションよりも実行時間が長くなる。クライアントアプリケーションとしてのJavaアプリケーションは、一般的に、ユーザの要求でJavaプロセスを起動し、比較的短時間で実行を終了するため、起動の遅さが問題になっていた。特に、テキスト処理などの比較的実行時間が短いアプリケーションでは性能差が大きく、実用的ではなかった。
国際公開第2001/084303号公報
本発明の目的は、上述したような課題を解決するために、仮想マシンの生成を必要とするアプリケーションプログラムの実行を高速化することができるプログラム実行装置、プログラム実行方法、及びプログラム実行プログラムを提供することである。
本発明の第1の態様に係るプログラム実行装置は、アプリケーションプログラムの実行を制御する制御プログラムが格納された記憶部と、前記制御プログラムに従って動作することで、前記アプリケーションプログラムを逐次解釈して実行するための仮想マシンを生成し、生成した仮想マシンによって前記アプリケーションプログラムを実行するCPUと、を備え、前記CPUは、前記制御プログラムに従った動作において、前記CPUの負荷が所定の閾値未満である場合に、前記仮想マシンを事前生成しておき、前記アプリケーションプログラムの実行要求に応じて、前記事前生成した仮想マシンによって前記実行要求されたアプリケーションプログラムを実行するものである。
本発明の第2の態様に係るプログラム実行方法は、CPUの負荷が所定の閾値未満である場合、アプリケーションプログラムを逐次解釈して実行するための仮想マシンを事前生成するステップと、前記アプリケーションプログラムの実行要求に応じて、前記事前生成した仮想マシンによって前記実行要求されたアプリケーションプログラムを実行するステップと、を備えたものである。
本発明の第3の態様に係るプログラム実行プログラムは、CPUの負荷が所定の閾値未満である場合、アプリケーションプログラムを逐次解釈して実行するための仮想マシンを事前生成する処理と、前記アプリケーションプログラムの実行要求に応じて、前記事前生成した仮想マシンによって前記実行要求されたアプリケーションプログラムを実行する処理と、をコンピュータに実行させるものである。
上述した本発明の各態様によれば、仮想マシンの生成を必要とするアプリケーションプログラムの実行を高速化することができるプログラム実行装置、プログラム実行方法、及びプログラム実行プログラムを提供することができる。
実施の形態に係るJavaプログラム実行装置の構成図である。 実施の形態に係るプログラム構成の模式図である。 実施の形態に係るJavaプログラム実行装置におけるJavaプロセス事前起動処理を示すフローチャートである。 実施の形態に係るJavaプログラム実行装置におけるJavaアプリケーション実行処理を示すフローチャートである。 実施の形態に係るJavaプログラム実行装置の概略構成図である。
以下に図面を参照しながら、本発明の好適な実施の形態について説明する。以下の実施の形態に示す具体的な数値等は、発明の理解を容易とするための例示にすぎず、特に断る場合を除き、それに限定されるものではない。また、以下の記載及び図面では、説明の明確化のため、当業者にとって自明な事項等については、適宜、省略及び簡略化がなされている。
<発明の実施の形態>
図1を参照して、本発明の実施の形態に係るJavaプログラム実行装置1の構成について説明する。図1は、本発明の実施の形態に係るJavaプログラム実行装置1の構成図である。
Javaプログラム実行装置1は、CPU(Central Processing Unit)2、記憶部3、入力部4、及び通信部5を有する。Javaプログラム実行装置1は、例えばPC及びスマートフォン等のように、ユーザからのJavaアプリケーションプログラム(以下、「Javaアプリケーション」とも呼ぶ)の実行を要求する入力に応じて、Javaアプリケーションを実行する情報処理端末であってもよい。また、Javaプログラム実行装置1は、クライアントからのJavaアプリケーションの実行を要求する情報のネットワークを介した受信に応じて、Javaアプリケーションを実行するアプリケーションサーバであってもよい。この場合、クライアントは、例えば、ユーザによって操作されるPC及びスマートフォン等の情報処理端末が該当する。
CPU2は、記憶部3に格納されたプログラムを実行することによって、Javaプログラム実行装置1としての処理を実行する。すなわち、記憶部3に格納されたプログラムは、本実施の形態に係るJavaプログラム実行装置1における処理を、CPU2に実行させるためのコードを含む。このプログラムには、後述するOS(Operating System)10のプログラム、アプリケーションJarファイル11、ライブラリJarファイル群12、標準ライブラリJarファイル群13、Javaプロセス管理プログラム41、Javaプロセス21〜23のプログラム等が含まれる。
記憶部3は、アプリケーションJarファイル11、ライブラリJarファイル群12、標準ライブラリJarファイル群13、Javaプロセス管理プログラム41、クラスリスト42、及び設定ファイル43等が格納されている。記憶部3は、各種情報(上記のファイル及びプログラム等)を格納可能なメモリ及びハードディスク等の記憶装置の少なくとも1つ以上を含み構成されている。
入力部4は、ユーザからの各種入力を受け付ける。入力部4は、例えばマウス、キーボード及びタッチパネル等の入力装置の少なくとも1つ以上を含んで構成されている。入力部4は、ユーザからの入力に応じて、その入力内容を通知する通知情報をCPU2に出力する。
例えば、Javaプログラム実行装置1が、ユーザからの入力による実行要求に応じて、Javaアプリケーションを実行する情報処理端末である場合、入力部4は、ユーザからのJavaアプリケーションの実行を要求する入力に応じて、その入力内容を通知する通知情報をCPU2に出力する。そして、CPU2は、入力部4からのJavaアプリケーションの実行を要求する入力内容を通知する通知情報の出力に応じて、Javaアプリケーションを起動する。なお、このJavaアプリケーションの実行を要求する入力には、実行対象とするアプリケーションJarファイル11と、そのJavaアプリケーションで利用するライブラリJarファイルを指定する入力が含まれる。
通信部5は、Javaプログラム実行装置1と他の情報処理端末との間でネットワークを介して任意の情報を送受信する。通信部5は、例えばネットワークアダプタ等の通信装置を含み構成されている。通信部5は、CPU2から他の情報処理端末に送信するために出力された情報を、ネットワークを介して他の情報処理端末に送信する。また、通信部5は、他の情報処理端末からネットワークを介して送信された情報を受信し、CPU2に出力する。
例えば、Javaプログラム実行装置1が、クライアントからの実行要求に応じて、Javaアプリケーションを実行するアプリケーションサーバである場合、通信部5は、他の情報処理端末からのJavaアプリケーションの実行を要求する情報を受信した場合、その情報をCPU2に出力する。そして、CPU2は、通信部5からのJavaアプリケーションの実行を要求する情報の出力に応じて、Javaアプリケーションを起動する。なお、このJavaアプリケーションの実行を要求する情報には、クライアントに対するユーザからの入力で指定された実行対象とするアプリケーションJarファイル11と、そのJavaアプリケーションで利用するライブラリJarファイルが示されている。
続いて、図2を参照して、本実施の形態に係るJavaアプリケーションの実行高速化方法について説明する。図2は、本実施の形態に係るプログラム構成の模式図である。
アプリケーションJarファイル11は、Javaアプリケーションプログラムを示すファイルである。ライブラリJarファイル群12は、複数のライブラリJarファイルの集合である。ライブラリJarファイルは、Javaアプリケーションプログラムで使用されるライブラリのプログラムを示すファイルである。標準ライブラリJarファイル群13は、複数の標準ライブラリJarファイルの集合である。標準ライブラリJarファイルは、Javaアプリケーションプログラムで使用される標準ライブラリのプログラムを示すファイルである。ライブラリJarファイルは、ユーザ定義のライブラリのファイルであり、標準ライブラリJarファイルは、Javaにおいて標準で用意されているライブラリのファイルである。
アプリケーションJarファイル11、ライブラリJarファイル、及び標準ライブラリJarファイルは、それぞれ、プログラムを、Java仮想マシン(Java VM)で解釈・実行可能な形式であるバイトコード形式で含んでいる。
Javaプロセス管理プログラム41は、Javaアプリケーションの実行を管理するプログラムである。Javaプロセス管理プログラム41は、OS10上で予め実行されて、Javaプロセス管理プロセス31としてバックグラウンドで動作する。
Javaプロセス管理プロセス31は、Javaアプリケーション(アプリケーションJarファイル11)を実行するためのJavaプロセス21〜23を起動(生成)する。Javaプロセス21〜23のそれぞれは、その内部においてJava VM及びアプリケーションクラスローダを生成し、アプリケーションクラスローダによってアプリケーションJarファイル11のクラスをロードし、ロードしたクラスのmainメソッドをJava VMによって逐次解釈して実行する。これによって、Javaアプリケーションが実行される。
ここで、本実施の形態では、Javaプロセス管理プロセス31は、Javaプログラム実行装置1のCPU2の資源に余裕があるときに、Javaプロセス21〜23を指定された個数まで事前起動しておく。事前起動されたJavaプロセスは、Java VMを生成した後、アプリケーションクラスローダの生成直前まで動作し、ユーザがJavaアプリケーションの実行を要求するまで待機する。Javaプロセス管理プロセス31は、ユーザからのJavaアプリケーションの実行要求に応じて、事前起動されたJavaプロセスの1つを払い出す。払い出されたJavaプロセスは、アプリケーションクラスローダを生成し、実行要求されたJavaアプリケーション(アプリケーションJarファイル11)のクラスをロードし、そのJavaアプリケーションの実行を開始する。
このように、本実施の形態では、Javaアプリケーションを、事前起動してプールされたJavaプロセスで実行することにより、Javaアプリケーション実行時にかかってしまう、Javaプロセス起動時のJava仮想マシン生成の処理時間オーバーヘッドを無くし、Javaアプリケーションの実行を高速化する。
なお、Javaプロセス管理プロセス31は、CPU2の資源に余裕があるか否かを、CPU2の負荷が所定の閾値よりも低いか否かによって判定する。CPU2の負荷の閾値は、設定ファイル43に予め設定されている。したがって、Javaプロセス管理プロセス31は、CPU2の負荷が設定ファイル43で示される閾値未満である場合には、CPU2の資源に余裕があると判定する。Javaプロセス管理プロセス31は、CPU2の負荷が設定ファイル43で示される閾値以上である場合には、CPU2の資源に余裕がないと判定する。ここで、CPU2の負荷として、CPU2の負荷を示すものであれば、CPU2の使用率等の任意のパラメータを計測するようにしてよい。
また、Javaプロセス管理プロセス31は、CPU2の資源に余裕があるときは、Javaプロセスを指定された個数まで事前起動する。Javaプロセスを事前起動する個数は、設定ファイル43においてプール数として予め設定されている。したがって、Javaプロセス管理プロセス31は、CPU2の資源に余裕があるときに、事前起動したJavaプロセス数が、設定ファイル43で示されるプール数未満である場合に、Javaプロセスを起動する。Javaプロセス管理プロセス31は、CPU資源に余裕があるであっても、事前起動したJavaプロセス数が、設定ファイル43で示されるプール数に達している場合には、さらなるJavaプロセスの事前起動を抑止する。例えば、設定ファイル43に示されるプール数が「3」である場合、CPU2の資源に余裕があっても、図2に示すように、3つまでのJavaプロセス21〜23が生成(起動)されることになる。これによれば、CPU資源に余裕があるからといって、必要以上にJavaプロセスを起動してCPU資源を圧迫してしまうことを防止することができる。
また、本実施の形態では、Javaプログラム実行装置1のCPU2の資源に余裕があるときに事前起動されたJavaプロセスは、Java標準ライブラリ(標準ライブラリJarファイル)中のクラスを事前ロードする。すなわち、Javaプロセスは、Java VMの他にブートストラップローダも事前生成し、ブートストラップローダによってJava標準ライブラリのクラスを事前ロードする。
ここで、事前ロードされるクラスは、Java標準ライブラリのクラスのうち、よく使用されるクラスとする。この事前ロードされるクラスは、クラスリスト42によって示される。クラスリスト42は、一般的に使用頻度の高いクラスを所定数だけ示すように予め作成されて記憶部3に格納されている。事前起動されたJavaプロセスは、記憶部3に格納されたクラスリスト42を参照することで、事前ロードするクラスを認識し、認識したクラスを標準ライブラリJarファイル群13の中から選択的に事前ロードする。
また、このクラスリスト42は、Java標準ライブラリのクラスの使用状況に応じて、統計的に使用率が高いクラスのみを示すように更新するようにしてもよい。このクラスリスト42の更新は、CPU2によって、クラスの使用状況に応じて使用頻度の高いクラスだけがクラスリスト42のリストで示されるように更新されるのであれば、任意の手法によって実施するようにしてもよい。例えば、アプリケーションJarファイル11及びライブラリJarファイルのプログラムにおいて標準ライブラリのクラスを使用する毎に、記憶部3に保持したそのクラスの使用回数をカウントアップするようにし、Javaプロセス管理プロセス31が、所定の時間間隔毎に定期的に、記憶部3に保持された各クラスの使用回数に基づいて、使用回数の高い順に上記所定数までのクラスを示すようにクラスリスト42を更新する等してもよい。
続いて、図3及びを参照して、本実施の形態に係るJavaプログラム実行装置1の処理について説明する。図3は、本実施の形態に係るJavaプログラム実行装置1におけるJavaプロセス事前起動処理を示すフローチャートである。図4は、本実施の形態に係るJavaプログラム実行装置1におけるJavaアプリケーション実行処理を示すフローチャートである。
まず、図3を参照して、Javaプログラム実行装置1におけるJavaプロセス事前起動処理について説明する。
Javaプロセス管理プロセス31は、ユーザからJavaアプリケーションの実行要求が行なわれる前におけるバックグラウンドの動作として、OS10からCPU負荷情報を取得し、取得したCPU負荷情報が示すCPU2の負荷が、設定ファイル43に設定された閾値よりも低いか否かを判定する(S1)。すなわち、OS10は、CPU2の負荷を計測し、計測したCPU2の負荷を示すCPU負荷情報を、OS10上で動作するプロセスに提供する機能を有するものとする。Javaプロセス管理プロセス31は、例えば、所定の一定時間間隔毎に、CPU2の負荷が閾値よりも低いか否かを判定する。
CPU2の負荷が閾値よりも低くないと判定した場合(S1:No)、Javaプロセス管理プロセス31は、再度、ステップS1に戻り、CPU2の負荷が閾値よりも低いか否かの判定を繰り返す。
CPU2の負荷が閾値以上であると判定した場合(S1:Yes)、Javaプロセス管理プロセス31は、事前起動しているJavaプロセス数が、設定ファイル43に設定されているプール数未満であるか否かを判定する(S2)。
事前起動しているJavaプロセス数がプール数に達していると判定した場合(S2:No)、Javaプロセス管理プロセス31は、再度、ステップS1に戻り、CPU2の負荷が閾値よりも低いか否かの判定を繰り返す。
事前起動しているJavaプロセス数がプール数未満であると判定した場合(S2:Yes)、Javaプロセス管理プロセス31は、Javaプロセスを事前起動する(S3)。
事前起動されたJavaプロセスは、Java VMを生成(起動)する(S4)。Javaプロセスは、標準ライブラリJarファイル群13の標準ライブラリのクラスのうち、クラスリスト42で示されるクラスを事前ロードする(S5)。そして、Javaプロセスは、アプリケーションクラスローダの起動(生成)前まで処理を進めたところで、待機状態に遷移する(S6)。例えば、Javaプロセスは、アプリケーションクラスローダの起動(生成)前まで処理を進めたところでスリープすることで、待機状態に遷移する。
以上の処理によれば、CPU2の資源に余裕がある限り、プール数に達するまでJavaプロセスを事前起動することができる。これによれば、次に説明するように、ユーザからのJavaアプリケーションの実行要求に応じて、Java VMの起動を待つことなく迅速にJavaアプリケーションの実行を開始することができる。
続いて、図4を参照して、Javaプログラム実行装置1におけるJavaアプリケーション実行処理を説明する。
Javaプロセス管理プロセス31は、ユーザから、実行するアプリケーションJarファイル11と、そのJavaアプリケーションで利用するライブラリJarファイルが指定されたJavaアプリケーションの実行要求を受ける(S11)。このJavaアプリケーションの実行要求は、上述したように、ユーザからの入力部4を介した入力による実行要求、又は、ユーザからのクライアントに対する入力に応じてネットワーク及び通信部5を介して受信した実行要求が該当する。
Javaプロセス管理プロセス31は、ユーザからのJavaアプリケーションの実行要求に応じて、事前起動しているJavaプロセス21〜23のうち、任意のJavaプロセスの待機状態を解除する(S12)。待機状態を解除するJavaプロセスは、ランダムに選択してもよく、最先に起動したものを選択してもよい。なお、Javaプロセスの待機状態の解除は、OS10上で実装可能な任意の手法によって行うようにしてよい。例えば、Javaプロセス管理プロセス31からJavaプロセスに対するプロセス間通信に応じて、Javaプロセスが起床することで、待機状態が解除されるようにしてもよい。この場合、実行するアプリケーションJarファイル11及びライブラリJarファイルも、そのプロセス間通信によって通知するようにしてもよい。
ここで、Javaプロセス管理プロセス31は、Javaプロセス21の待機状態を解除したものとして説明を続ける。待機状態が解除されたJavaプロセス21は、アプリケーションクラスローダを生成する(S13)。そして、Javaプロセス21は、生成したアプリケーションクラスローダによって、実行要求されたアプリケーションJarファイル11のクラスをロードし、Javaアプリケーションの実行を開始する(S14)。
Javaプロセス21は、アプリケーションJarファイルのクラスをロードして実行したmainメソッドの実行が終了することで、Javaアプリケーションの実行が終了したとき、Java VMからロードしたクラスをアンロードすることでJava VMを初期化し、Javaプロセス21をプール状態に戻す(S15)。
なお、ステップS15では、Javaアプリケーションの実行を終了したJavaプロセス21をプール状態に戻すようにしているが、これに限られない。ステップS15で、Javaプロセス21を終了するようにしてもよい。この場合、CPU2の資源に余裕があるのであれば、再度、図3に示したJavaプロセス事前起動処理によって、実行終了したJavaプロセス21に代わるJavaプロセスが事前起動され、待機状態でJavaアプリケーションの実行を待つことになる。
以上に説明したように、本実施の形態では、CPU2の負荷が所定の閾値未満である場合に、Javaプログラムを事前起動(仮想マシンを事前生成)しておき、Javaアプリケーションプログラムの実行要求に応じて、事前起動したJavaプログラム(事前生成した仮想マシン)によって実行要求されたアプリケーションプログラムを実行するようにしている。これによれば、Javaプロセス起動時におけるJava VMの生成のオーバーヘッドがJavaアプリケーション実行時に掛からないため、仮想マシンの生成を必要とするアプリケーションプログラムの実行を高速化することができる。
また、Javaプログラムを事前起動する際に、良く使う標準ライブラリクラスを事前ロードしているのでJavaアプリケーション実行時に標準ライブラリをロードする確率が減り、Javaアプリケーション自体の実行性能も向上することができる。
<発明の他の実施の形態>
JavaプロセスがJava VMレベルの障害に陥ってしまった場合、Javaプロセスを再起動することでJava VMを再生成(再起動)しなければ復旧することができない。しかしながら、Javaプロセスの再起動は、Java VMの再生成も伴うため、時間がかかってしまうという。そのため、例えば、Javaプロセスによって実行さえていたJavaアプリケーションに対して、ユーザからの何らかのリクエスト(何らかの処理を要求する入力)があった場合には、そのリクエストはエラーとなってしまう。
それに対して、上記実施の形態によれば、さらに以下に説明するように処理することで、Javaアプリケーションの再起動を高速化することができる。これによれば、上記で例として挙げたように、Javaアプリケーションがリクエストに対して処理するものであっても、再起動の時間を短縮してエラーとなるリクエストを低減することができる。
具体的には、Javaプロセス管理プロセス31は、Javaアプリケーションを実行中のJavaプロセスが再起動が必要となる障害に陥ってしまった場合、そのJavaプロセスで実行中のJavaアプリケーションを、他の事前起動されているJavaプロセスで実行開始させる。すなわち、Javaプロセス管理プロセス31は、上記ステップS12における説明と同様に、他の事前起動されているJavaプロセスの待機状態を解除してJavaアプリケーションを実行させる。なお、Javaプロセス管理プロセス31による障害に陥ったJavaプロセスが実行中だったJavaアプリケーション(アプリケーションJarファイル11)の特定は、例えば、Javaプロセス管理プロセス31がJavaプロセスにアプリケーションJarファイル11を実行させるときに、そのアプリケーションJarファイル11を示す情報をJavaプロセスと紐付けて記憶部3に記録しておき、その情報を参照することで行うようにすればよい。
なお、Javaプロセス管理プロセス31による、Javaプロセスが再起動が必要となる障害に陥ったことは、Javaプロセスからのプロセス間通信による障害の通知や、Javaプロセスが終了する際に障害を通知する終了コードで終了する等によって、Javaプロセスが任意の手法によってJavaプロセス管理プロセス31に障害の発生を通知することで検出可能とするようにすればよい。
<発明の実施の形態の概要>
続いて、図5を参照して、本発明の実施の形態に係るJavaプログラム実行装置1の概略構成となるプログラム実行装置9の構成について説明する。図5は、本発明の実施の形態に係るJavaプログラム実行装置1の概略構成図(プログラム実行装置9の構成図)である。すなわち、上述した本実施の形態に係るJavaプログラム実行装置1は、その概要構成として、図5に示すプログラム実行装置9のように捉えることもできる。
プログラム実行装置9は、記憶部91及びCPU92を有する。記憶部91は、制御プログラム93が格納されている。制御プログラム93は、アプリケーションプログラムの実行を制御する。制御プログラム93は、Javaプログラム管理プログラム41及びJavaプロセス21〜23のプログラムに対応する。
CPU92は、制御プログラム93に従って動作することで、アプリケーションプログラムを逐次解釈して実行するための仮想マシンを生成し、生成した仮想マシンによってアプリケーションプログラムを実行する。
ここで、CPU92は、制御プログラム93に従った動作において、CPU92の負荷が所定の閾値未満である場合に、仮想マシンを事前生成しておき、アプリケーションプログラムの実行要求に応じて、事前生成した仮想マシンによって実行要求されたアプリケーションプログラムを実行する。
これによれば、Javaプロセス起動時におけるJava VMの生成のオーバーヘッドがJavaアプリケーション実行時に掛からないため、仮想マシンの生成を必要とするアプリケーションプログラムの実行を高速化することができる。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
上記実施の形態では、Javaアプリケーションプログラムを対象とした例について説明したが、本発明の適用対象は、これに限られない。アプリケーションプログラムを実行するときに、そのアプリケーションプログラムを逐次解釈して実行するための仮想マシンの起動が必要となるものであれば、他のプログラミング言語で作成されたアプリケーションプログラムを対象としてもよい。例えば、任意のスクリプト言語で作成されたアプリケーションプログラム(例えばテキスト処理のような簡易なプログラムも含む)について適用してもよい。Rubyであれば、先に起動するプロセスがruby.exeとなり、後からロードされる情報がRubyのクラスとなる。
上述した記憶部3に格納され、CPU2によって実行されるプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータ(Javaプログラム実行装置1)に供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
1 Javaプログラム実行装置
2 CPU
3 記憶部
4 入力部
5 通信部
11 アプリケーションJarファイル
12 ライブラリJarファイル群
13 標準ライブラリJarファイル群
21、22、23 Javaプロセス
31 Javaプロセス管理プロセス
41 Javaプロセス管理プログラム
42 クラスリスト
43 設定ファイル

Claims (7)

  1. アプリケーションプログラムの実行を制御する制御プログラム及び仮想マシンのプール数を示す設定情報が格納された記憶部と、
    前記制御プログラムに従って動作することで、前記アプリケーションプログラムを逐次解釈して実行するための仮想マシンを生成し、生成した仮想マシンによって前記アプリケーションプログラムを実行するCPUと、を備え、
    前記CPUは、前記制御プログラムに従った動作において、前記CPUの負荷が所定の閾値未満である場合に、前記仮想マシンを事前生成しておき、前記アプリケーションプログラムの実行要求に応じて、前記事前生成した仮想マシンによって前記実行要求されたアプリケーションプログラムを実行する一方前記制御プログラムに従った動作において、前記CPUの負荷が所定の閾値未満である場合であっても、前記事前生成されている仮想マシンの数が、前記記憶部に格納された設定情報が示すプール数に達しているときには、前記仮想マシンの事前生成を抑止する、
    プログラム実行装置。
  2. 前記CPUは、前記制御プログラムに従った動作において、前記仮想マシンを事前生成する際に、前記アプリケーションプログラムで使用される標準ライブラリを事前ロードしておく、
    請求項1に記載のプログラム実行装置。
  3. 前記記憶部は、さらに、前記プログラム実行装置に用意された標準ライブラリの中から、前記事前ロードする標準ライブラリとして選択された所定数の標準ライブラリのリストを示すリスト情報が格納され、
    前記CPUは、前記制御プログラムに従った動作において、前記記憶部に格納されたリスト情報で示される標準ライブラリを事前ロードし、
    前記CPUは、前記制御プログラムに従った動作において、前記標準ライブラリの使用状況に応じて、より使用頻度の高い標準ライブラリが前記リストに含まれるように前記リスト情報を更新する、
    請求項2に記載のプログラム実行装置。
  4. 前記CPUは、前記制御プログラムに従った動作において、前記アプリケーションプログラムを実行する仮想マシンの異常を検出した場合、当該アプリケーションプログラムを他の事前生成されている仮想マシンによって実行する、
    請求項1乃至のいずれか1項に記載のプログラム実行装置。
  5. 前記アプリケーションプログラムは、Java(登録商標)アプリケーションプログラムであり、
    前記CPUは、前記制御プログラムに従った動作において、前記Javaアプリケーションプログラムの実行要求に応じて、アプリケーションクラスローダを生成し、生成したアプリケーションクラスローダによって前記Javaアプリケーションプログラムのクラスをロードして、前記仮想マシンによって前記Javaアプリケーションプログラムを実行する、
    請求項1乃至のいずれか1項に記載のプログラム実行装置。
  6. CPUの負荷が所定の閾値未満である場合、アプリケーションプログラムを逐次解釈して実行するための仮想マシンを事前生成する一方、前記CPUの負荷が所定の閾値未満である場合であっても、前記事前生成されている仮想マシンの数が、所定の設定情報が示すプール数に達しているときには、前記仮想マシンの事前生成を抑止するステップと、
    前記アプリケーションプログラムの実行要求に応じて、前記事前生成した仮想マシンによって前記実行要求されたアプリケーションプログラムを実行するステップと、
    を備えたプログラム実行方法。
  7. CPUの負荷が所定の閾値未満である場合、アプリケーションプログラムを逐次解釈して実行するための仮想マシンを事前生成する一方、前記CPUの負荷が所定の閾値未満である場合であっても、前記事前生成されている仮想マシンの数が、所定の設定情報が示すプール数に達しているときには、前記仮想マシンの事前生成を抑止する処理と、
    前記アプリケーションプログラムの実行要求に応じて、前記事前生成した仮想マシンによって前記実行要求されたアプリケーションプログラムを実行する処理と、
    をコンピュータに実行させるプログラム実行プログラム。
JP2013041506A 2013-03-04 2013-03-04 プログラム実行装置、プログラム実行方法、及びプログラム実行プログラム Active JP6135193B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013041506A JP6135193B2 (ja) 2013-03-04 2013-03-04 プログラム実行装置、プログラム実行方法、及びプログラム実行プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013041506A JP6135193B2 (ja) 2013-03-04 2013-03-04 プログラム実行装置、プログラム実行方法、及びプログラム実行プログラム

Publications (2)

Publication Number Publication Date
JP2014170353A JP2014170353A (ja) 2014-09-18
JP6135193B2 true JP6135193B2 (ja) 2017-05-31

Family

ID=51692711

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013041506A Active JP6135193B2 (ja) 2013-03-04 2013-03-04 プログラム実行装置、プログラム実行方法、及びプログラム実行プログラム

Country Status (1)

Country Link
JP (1) JP6135193B2 (ja)

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS643741A (en) * 1987-06-25 1989-01-09 Fujitsu Ltd Recovery control system for virtual computer system
JPH04337836A (ja) * 1991-05-15 1992-11-25 Nec Corp ジョブ投入方法
JPH06348500A (ja) * 1993-06-11 1994-12-22 Nec Corp ジョブ実行制御方式
JPH09223035A (ja) * 1996-02-19 1997-08-26 Toshiba Corp 計算機システム
JP2001256207A (ja) * 2000-03-08 2001-09-21 Mitsubishi Electric Corp コンピュータ装置及び記録媒体
JP2003316584A (ja) * 2002-04-24 2003-11-07 Matsushita Electric Ind Co Ltd プレロードクラスの生成/更新装置、及び方法
JP4155403B2 (ja) * 2004-02-18 2008-09-24 株式会社日立製作所 システム構成制御方法及びその処理プログラム並びにその実施システム
JP2007206869A (ja) * 2006-01-31 2007-08-16 Seiko Epson Corp 情報処理装置、情報処理方法、プログラムおよび記録媒体
JP2008186208A (ja) * 2007-01-30 2008-08-14 Hitachi Ltd Cpu負荷低減方法および監視/制御サーバ
JP2008209982A (ja) * 2007-02-23 2008-09-11 Casio Comput Co Ltd サーバ装置、クライアント装置、リモート接続システム及びプログラム
JP2008305021A (ja) * 2007-06-05 2008-12-18 Canon Inc 情報処理装置及びアプリケーション管理方法
JP2010237793A (ja) * 2009-03-30 2010-10-21 Nec System Technologies Ltd 稼働状況監視システム、方法、及び、プログラム

Also Published As

Publication number Publication date
JP2014170353A (ja) 2014-09-18

Similar Documents

Publication Publication Date Title
US10552210B2 (en) Method and apparatus for migrating virtual machine
US20180150306A1 (en) Systems and methods for eliminating reboot during initial machine configuration of operating systems
CA2974820C (en) System and method for introducing functionality to an application for use with a network service
US8782643B2 (en) Device and method for controlling communication between BIOS and BMC
US20140282495A1 (en) Deploying, monitoring, and controlling multiple components of an application
WO2017193964A1 (zh) 一种组件升级方法、装置和系统
EP3526674B1 (en) Time-parallelized integrity testing of software code
KR20180122593A (ko) 클라우드 컴퓨팅 환경에서 클라우드 호스트를 삭제하는 방법, 장치, 서버 및 저장 매체
CN107729042A (zh) 移动应用升级方法及装置、存储介质、电子设备
JP6135193B2 (ja) プログラム実行装置、プログラム実行方法、及びプログラム実行プログラム
US20180373512A1 (en) Method and device for simulating synchronous blocking in asynchronous environment, storage medium, server and terminal
CN116431358A (zh) 一种资源访问方法、装置、电子设备及存储介质
JP6751231B2 (ja) ジョブスケジューラ試験プログラム、ジョブスケジューラ試験方法及び並列処理装置
CN108289114B (zh) 云端服务系统及处理云端服务异常的方法
CN112685063B (zh) 特征库更新方法、装置、网络设备及可读存储介质
JP6379599B2 (ja) 適用判定プログラム、適用判定方法、及び適用判定装置
CN111190693B (zh) 一种基于鲲鹏平台搭建云平台的方法及装置
CN111258954B (zh) 数据迁移方法、装置、设备及存储介质
CN106713453B (zh) 一种应用信息监控方法和装置
JP5056346B2 (ja) 情報処理装置、情報処理システム、仮想サーバの移動処理の制御方法、及び、プログラム
US11941432B2 (en) Processing system, processing method, higher-level system, lower-level system, higher-level program, and lower-level program
CN114356214B (zh) 一种针对kubernetes系统提供本地存储卷的方法及系统
CN114047933B (zh) 多开Android应用的方法、装置、设备和介质
CN111078658B (zh) 一种集群文件系统挂载的方法和设备
JP2008129709A (ja) タスク制御方法、データ処理システム、タスク制御プログラム及びその記憶媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160719

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20161122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170217

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20170301

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: 20170328

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170410

R150 Certificate of patent or registration of utility model

Ref document number: 6135193

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150