プログラムを格納するメモリと、前記メモリに格納されたプログラムを所定処理単位毎に実行するプロセッサと、を備え、前記所定処理単位で実行している処理による計算機リソースの使用量を計算する計算機であって、前記計算機リソースは、当該プログラムの実行時に重複して使用される重複リソースと、当該プログラムの実行時に重複して使用されない非重複リソースとを含むものであり、前記プロセッサは、前記所定処理単位で実行している処理による前記計算機リソースの使用量を計算する場合に、前記計算機リソースを解析することによって、前記重複リソースのうちの当該処理によって使用されるリソースと、前記非重複リソースのうちの当該処理によって使用されるリソースとを判定し、前記判定結果に基づいて、当該処理による前記計算機リソースの使用量を計算することを特徴とする計算機。前記プロセッサは、仮想マシン上において、前記メモリに格納されたプログラムをスレッド単位で実行するものであり、前記計算機リソースは、前記プログラムの実行時に重複して使用される重複オブジェクトが格納されるメモリ領域と、前記プログラムの実行時に重複して使用されない非重複オブジェクトが格納されるメモリ領域とを含む前記メモリであり、前記プロセッサは、前記スレッド単位で実行している処理による前記メモリの使用量を計算する場合に、前記メモリに格納された各オブジェクトの参照関係を解析することによって、前記重複オブジェクトのうちの当該処理によって使用されるオブジェクトと、前記非重複オブジェクトのうちの当該処理によって使用されるオブジェクトとを判定し、前記判定結果に基づいて、当該処理による前記メモリの使用量を計算することを特徴とする請求項1に記載の計算機。前記重複オブジェクトは、同一のスレッドにおける異なる複数のスタックフレームが重複して使用しているオブジェクト及び異なる複数のスレッドが重複して使用しているオブジェクトであることを特徴とする請求項2に記載の計算機。前記プロセッサは、各スレッドで実行している処理による前記メモリの使用量を計算し、計算された前記各スレッドで実行している処理によるメモリ使用量に基づいて、所定のスレッドで実行している処理を取り消し可能か否か判定し、取り消し可能であると判定された場合に、前記所定のスレッドで実行している処理を取り消すことを特徴とする請求項2に記載の計算機。前記プロセッサは、前記判定結果に基づいて、当該処理を終了させた場合の前記メモリの解放量を計算することを特徴とする請求項2に記載の計算機。前記プロセッサは、各スレッドで実行している処理による前記メモリの使用量を計算し、計算された前記各スレッドで実行している処理によるメモリ使用量を出力するためのデータを生成することを特徴とする請求項2に記載の計算機。プログラムを格納するメモリと、前記メモリに格納されたプログラムを所定処理単位毎に実行するプロセッサと、を備えた計算機において、前記所定処理単位で実行している処理による計算機リソースの使用量を計算するリソース使用量計算方法であって、前記計算機リソースは、当該プログラムの実行時に重複して使用される重複リソースと、当該プログラムの実行時に重複して使用されない非重複リソースとを含むものであり、前記方法は、前記プロセッサが、前記所定処理単位で実行している処理による前記計算機リソースの使用量を計算する場合に、前記計算機リソースを解析することによって、前記重複リソースのうちの当該処理によって使用されるリソースと、前記非重複リソースのうちの当該処理によって使用されるリソースとを判定する手順と、前記プロセッサが、前記判定結果に基づいて、当該処理による前記計算機リソースの使用量を計算する手順と、を含むことを特徴とするリソース使用量計算方法。前記プロセッサは、仮想マシン上において、前記メモリに格納されたプログラムをスレッド単位で実行するものであり、前記計算機リソースは、前記プログラムの実行時に重複して使用される重複オブジェクトが格納されるメモリ領域と、前記プログラムの実行時に重複して使用されない非重複オブジェクトが格納されるメモリ領域とを含む前記メモリであり、前記判定する手順において、前記プロセッサは、前記スレッド単位で実行している処理による前記メモリの使用量を計算する場合に、前記メモリに格納された各オブジェクトの参照関係を解析することによって、前記重複オブジェクトのうちの当該処理によって使用されるオブジェクトと、前記非重複オブジェクトのうちの当該処理によって使用されるオブジェクトとを判定し、前記計算する手順において、前記プロセッサは、前記判定結果に基づいて、当該処理による前記メモリの使用量を計算することを特徴とする請求項7に記載のリソース使用量計算方法。前記方法は、さらに、前記プロセッサが、各スレッドで実行している処理による前記メモリの使用量を計算する手順と、前記プロセッサが、計算された前記各スレッドで実行している処理によるメモリ使用量に基づいて、所定のスレッドで実行している処理を取り消し可能か否か判定する手順と、前記プロセッサが、取り消し可能であると判定された場合に、前記所定のスレッドで実行している処理を取り消す手順と、を含むことを特徴とする請求項8に記載のリソース使用量計算方法。前記方法は、さらに、前記プロセッサが、前記判定結果に基づいて、当該処理を終了させた場合の前記メモリの解放量を計算する手順を含むことを特徴とする請求項8に記載のリソース使用量計算方法。前記方法は、さらに、前記プロセッサが、各スレッドで実行している処理による前記メモリの使用量を計算する手順と、前記プロセッサが、計算された前記各スレッドで実行している処理によるメモリ使用量を出力するためのデータを生成する手順と、を含むことを特徴とする請求項8に記載のリソース使用量計算方法。プログラムを格納するメモリと、前記メモリに格納されたプログラムを所定処理単位毎に実行するプロセッサと、を備えた計算機において実行され、前記所定処理単位で実行している処理による計算機リソースの使用量を計算するリソース使用量計算プログラムであって、前記計算機リソースは、当該プログラムの実行時に重複して使用される重複リソースと、当該プログラムの実行時に重複して使用されない非重複リソースとを含むものであり、前記プログラムは、前記所定処理単位で実行している処理による前記計算機リソースの使用量を計算する場合に、前記計算機リソースを解析することによって、前記重複リソースのうちの当該処理によって使用されるリソースと、前記非重複リソースのうちの当該処理によって使用されるリソースとを判定する手順と、前記判定結果に基づいて、当該処理による前記計算機リソースの使用量を計算する手順と、を前記プロセッサに実行させることを特徴とするリソース使用量計算プログラム。前記プロセッサは、仮想マシン上において、前記メモリに格納されたプログラムをスレッド単位で実行するものであり、前記計算機リソースは、前記プログラムの実行時に重複して使用される重複オブジェクトが格納されるメモリ領域と、前記プログラムの実行時に重複して使用されない非重複オブジェクトが格納されるメモリ領域とを含む前記メモリであり、前記プログラムは、前記スレッド単位で実行している処理による前記メモリの使用量を計算する場合に、前記メモリに格納された各オブジェクトの参照関係を解析することによって、前記重複オブジェクトのうちの当該処理によって使用されるオブジェクトと、前記非重複オブジェクトのうちの当該処理によって使用されるオブジェクトとを判定する手順と、前記判定結果に基づいて、当該処理による前記メモリの使用量を計算する手順と、を前記プロセッサに実行させることを特徴とする請求項12に記載のリソース使用量計算プログラム。前記プログラムは、さらに、各スレッドで実行している処理による前記メモリの使用量を計算する手順と、計算された前記各スレッドで実行している処理によるメモリ使用量に基づいて、所定のスレッドで実行している処理を取り消し可能か否か判定する手順と、取り消し可能であると判定された場合に、前記所定のスレッドで実行している処理を取り消す手順と、を前記プロセッサに実行させることを特徴とする請求項13に記載のリソース使用量計算プログラム。前記プログラムは、さらに、前記判定結果に基づいて、当該処理を終了させた場合の前記メモリの解放量を計算する手順を前記プロセッサに実行させることを特徴とする請求項13に記載のリソース使用量計算プログラム。前記プログラムは、さらに、各スレッドで実行している処理による前記メモリの使用量を計算する手順と、計算された前記各スレッドで実行している処理によるメモリ使用量を出力するためのデータを生成する手順と、を前記プロセッサに実行させることを特徴とする請求項13に記載のリソース使用量計算プログラム。しかしながら、特許文献1に開示されている方法では、特定の処理例えば上記スレッドで実行している処理が任意の時点で実際に使用しているリソース量例えば上記メモリ量を計算することができないという問題があった。これは、特定の処理だけが使用しているリソース、特定の処理及び他の処理によって重複して使用しているリソース等が不明であるためである。本発明は、上述した課題を考慮したものであって、特定の処理が任意の時点で実際に使用しているリソース量を効率的、かつ、正確に計算することが可能な計算機、リソース使用量計算方法及びリソース使用量計算プログラムを提供することを目的とする。本願において開示される発明の代表的な一例を示せば以下の通りである。すなわちプログラムを格納するメモリと、前記メモリに格納されたプログラムを所定処理単位毎に実行するプロセッサと、を備え、前記所定処理単位で実行している処理による計算機リソースの使用量を計算する計算機であって、前記計算機リソースは、当該プログラムの実行時に重複して使用される重複リソースと、当該プログラムの実行時に重複して使用されない非重複リソースとを含むものであり、前記プロセッサは、前記所定処理単位で実行している処理による前記計算機リソースの使用量を計算する場合に、前記計算機リソースを解析することによって、前記重複リソースのうちの当該処理によって使用されるリソースと、前記非重複リソースのうちの当該処理によって使用されるリソースとを判定し、前記判定結果に基づいて、当該処理による前記計算機リソースの使用量を計算することを特徴とする。本発明によれば、特定の処理が実際に使用しているリソース量を効率的、かつ、正確に計算することができる。以下、本発明を実施するための形態について図面を参照して説明する。なお、以下の実施の形態では、本発明をJavaVM32が動作する計算機システム1に適用した場合を例に説明する。図1は、本発明の実施の形態のJavaVM32が動作する計算機システム1の構成例を示す図である。図1では、計算機システム1におけるデータの入出力を矢印で示している。計算機システム1情報処理装置、計算機では、JavaVM32がJavaクラスファイル41を実行することによって、所定の業務処理を実行する。すなわちJavaクラスファイル41は、所定の業務処理を実行するためのプログラムである。このJavaクラスファイル41は、JavaVM32が、インタプリタの実行により解釈及び実行可能な形式であるバイトコードで記述される。また、このJavaクラスファイル41は、Java言語によって記述され、JavaAPI31の呼び出しを記述できるJavaソースファイル不図示が、Javaコンパイラ不図示によってコンパイルされることによって生成される。計算機システム1は、プロセッサ制御部2、主記憶装置記憶部3、補助記憶装置記憶部4、入力装置5及び出力装置6を備える。プロセッサ2、主記憶装置3、補助記憶装置4、入力装置5及び出力装置6は、バス7を介して互いに接続される。プロセッサ2は、主記憶装置3に記憶された各種プログラムを実行することによって各種処理を実行する。主記憶装置3は、プログラム、プログラムの実行に必要な情報及びプログラムの処理結果を記憶する。主記憶装置3は、揮発性メモリであってもよいし、不揮発性メモリであってもよい。主記憶装置3は、JavaAPI31、JavaVM32、スタック領域33、データ領域34及びオペレーティングシステム35を記憶する。補助記憶装置4は、Javaクラスファイル41、設定ファイル42、メモリ情報ファイル43、コマンド44を記憶する。Javaクラスファイル41は、業務処理を実行するためのプログラムである。設定ファイル42は、JavaVM32の動作を制御する設定を記録するファイルである。メモリ情報ファイル43は、メモリ使用量の計算結果を保存するファイルである。コマンド44は、JavaVM32の動作を制御するためのコマンドである。入力装置5は、計算機システム1に必要な情報を入力するためのインタフェースである。入力装置5は、例えば、キーボード、又は、マウスなどである。出力装置6は、処理結果などの情報を外部に出力する装置である。出力装置6は、例えば、ディスプレイなどである。スタック領域33は、スレッドの実行に必要な情報及びスレッドの処理結果が記憶される領域である。スレッドが生成されると、スレッドに対し固有のスタック領域例えばスタック領域33-1が割り当てられる。データ領域34は、プログラムの実行に必要な情報及びプログラムの処理結果が記憶される領域である。データ領域34は、オブジェクト格納領域341及びメモリ情報テーブル342を含む。オブジェクト格納領域341は、JavaVM32によって生成されたオブジェクトを格納する。メモリ情報テーブル342は、オブジェクト格納領域341に格納されたオブジェクトのメモリ使用量や参照関係に係る情報等を格納する。メモリ情報テーブル342の詳細については、図2~図5を用いて後述する。ここで、主記憶装置3に記憶される各プログラムについて説明する。JavaAPIApplicationProgrammingInterface31は、Javaが提供する基本的な機能例えばライブラリ群のインタフェースである。このJavaAPI31では、例えばメモリ使用量計算部324を呼出すためのメソッドが用意される。メソッド実行部321は、当該メソッドを実行することによってメモリ使用量計算部324を呼出すことができる。JavaVM32は、メソッド実行部321、スレッド制御部322、GC実行部323、メモリ使用量計算部324及びメモリ情報出力部325を含む。メソッド実行部321、スレッド制御部322、GC実行部323、メモリ使用量計算部324及びメモリ情報出力部325は、プロセッサ2によって実行されるプログラムである。このJavaVM32は、不要なメモリ領域を動的に解放するメモリ管理機構を備える言語処理実行システムである。メソッド実行部321は、Javaクラスファイル41に記述されたバイトコードの各命令に従い、メソッドをスレッド単位で実行する。命令がオブジェクト生成命令の場合には、オブジェクト格納領域341にオブジェクトを生成する。オブジェクト格納領域341に空き領域がなく、オブジェクトの生成に失敗した場合には、GC実行部323にGC処理を要求するGC処理要求。GC実行部323は、GC処理要求を受け付けると、GC処理を実行し、オブジェクト格納領域341において不要なメモリ領域を解放する。その後、メソッド実行部321は、再びオブジェクトの生成を実行し、さらに失敗した場合にはメモリ不足エラーを発生させる。スレッド制御部322は、メソッド実行部321によって実行されるスレッドの制御を実行する。具体的には、メソッド実行部321によって生成されたスレッドに対し、例えばスタック領域33の割り当てを実行する。GC実行部323は、メソッド実行部321からGC処理要求を受け付けると、オブジェクト格納領域341に対しGC処理を実行する。メモリ使用量計算部324は、メモリ情報テーブル342を用いて、オブジェクト格納領域341におけるメモリ使用量を計算する。このメモリ使用量計算部324は、メソッド実行部321によって呼び出されても、GC実行部323によって呼び出されてもよい。メモリ情報出力部325は、メモリ使用量計算部324による計算結果を例えばディスプレイなどの出力装置6に出力する。また、ログデータとして出力してもよい。なお、JavaVM32は、JavaVM32の動作を制御するためのフラグ以下、設定フラグという。やパラメータの閾値以下、設定閾値という。を備える。そして、設定フラグや設定閾値のデフォルト値は、設定ファイル42、入力装置5及びコマンド44で指定することによって変更することができる。また、JavaVM32で実行されるメモリ使用量計算部324やメモリ情報出力部325の機能を備えたプログラムは、USBUniversalSerialBusメモリ、SDメモリカード等の記録媒体に記録されてもよい。図2は、本発明の実施の形態のメモリ情報テーブル342の一例を示す図である。メモリ情報テーブル342は、フレーム専有メモリ情報テーブル342a、フレーム共有メモリ情報テーブル342b及びスレッド共有メモリ情報テーブル342cを含む。フレーム専有メモリ情報テーブル342a、フレーム共有メモリ情報テーブル342b及びスレッド共有メモリ情報テーブル342cの詳細は、それぞれ、図3、図4及び図5で説明する。図3は、本発明の実施の形態のフレーム専有メモリ情報テーブル342aの一例を示す図である。フレーム専有メモリ情報テーブル342aの各エントリ以下、フレーム専有メモリ情報という。は、フレーム専有メモリ情報ID301、スレッドID302、メソッド名303、フレーム専有メモリ使用量304、参照先フレーム共有メモリ情報ID305及び参照先スレッド共有メモリ情報ID306を含む。フレーム専有メモリ情報とは、スレッドID302で識別されるスレッドにおいて、メソッド名303で識別されるメソッドに係るスタックフレームが専有で使用しているメモリ、すなわちスレッドで実行している各処理が専有で使用しているフレーム専有メモリに関する情報である。フレーム専有メモリ情報ID301は、フレーム専有メモリ情報毎に割当てられ、各フレーム専有メモリ情報を識別するための一意の値識別子である。スレッドID302は、スレッドを識別するための識別子である。メソッド名303は、スタックフレームを識別するための情報である。なお、スタックフレームを識別するための情報であれば、メソッド名303に限定されるものではない。メソッド名303にパッケージ名やクラス名を付加することによって、識別性を高めてもよい。また、スタックフレームを識別するための情報は、スタックフレームのIDでもよい。本発明の実施の形態では、便宜上、スタックフレームを識別するための情報として、メソッド名303を使用する。フレーム専有メモリ使用量304は、スレッドID302及びメソッド名303で識別されるスタックフレームが専有で使用しているメモリ、すなわちフレーム専有メモリの使用量である。参照先フレーム共有メモリ情報ID305は、フレーム専有メモリ情報が参照しているフレーム共有メモリ情報図4参照のフレーム共有メモリ情報ID401である。参照先スレッド共有メモリ情報ID306は、フレーム専有メモリ情報が参照しているスレッド共有メモリ情報図5参照のスレッド共有メモリ情報ID501である。図4は、本発明の実施の形態のフレーム共有メモリ情報テーブル342bの一例を示す図である。フレーム共有メモリ情報テーブル342bの各エントリ以下、フレーム共有メモリ情報という。は、フレーム共有メモリ情報ID401、アドレス402、クラス名403、フレーム共有メモリ使用量404、参照先フレーム共有メモリ情報ID405及び参照先スレッド共有メモリ情報ID406を含む。フレーム共有メモリ情報とは、同じスレッドにおける異なるスタックフレームが共有で使用しているメモリ、すなわち同じスレッドで実行している異なる複数の処理が共有で使用しているフレーム共有メモリに関する情報である。フレーム共有メモリ情報ID401は、フレーム共有メモリ情報毎に割当てられ、各フレーム共有メモリ情報を識別するための一意の値識別子である。アドレス402は、フレーム共有メモリに含まれるオブジェクトにおいて参照関係のルートであるオブジェクトのアドレスである。クラス名403は、フレーム共有メモリに含まれるオブジェクトにおいて参照関係のルートであるオブジェクトのクラス名である。なお、クラス名403にパッケージ名を付加することによって、識別性を高めてもよい。また、クラス名403は、アドレス402によって指定されるオブジェクトから取得可能であるため、省略してもよい。本発明の実施の形態の説明では、便宜上、クラス名403を省略しない。フレーム共有メモリ使用量404は、同じスレッドにおける異なるスタックフレームが共有で使用しているメモリ、すなわちフレーム共有メモリの使用量である。参照先フレーム共有メモリ情報ID405は、フレーム共有メモリ情報が参照しているフレーム共有メモリ情報のフレーム共有メモリ情報ID401である。参照先スレッド共有メモリ情報ID406は、フレーム共有メモリ情報が参照しているスレッド共有メモリ情報図5参照のスレッド共有メモリ情報ID501である。図5は、本発明の実施の形態のスレッド共有メモリ情報テーブル342cの一例を示す図である。スレッド共有メモリ情報テーブル342cの各エントリ以下、スレッド共有メモリ情報という。は、スレッド共有メモリ情報ID501、アドレス502、クラス名503、スレッド共有メモリ使用量504、参照先フレーム共有メモリ情報ID505及び参照先スレッド共有メモリ情報ID506を含む。スレッド共有メモリ情報とは、異なる複数のスレッドが共有で使用しているメモリ、すなわちスレッド共有メモリに関する情報である。スレッド共有メモリ情報ID501は、スレッド共有メモリ情報毎に割当てられ、各スレッド共有メモリ情報を識別するための一意の値識別子である。アドレス502は、スレッド共有メモリに含まれるオブジェクトにおいて参照関係のルートであるオブジェクトのアドレスである。クラス名503は、スレッド共有メモリに含まれるオブジェクトにおいて参照関係のルートであるオブジェクトのクラス名である。なお、クラス名503にパッケージ名を付加することによって、識別性を高めてもよい。また、アドレス502によって指定されるオブジェクトからクラス名503を取得できるため、クラス名503は省略してもよい。本発明の実施の形態の説明では、便宜上、クラス名503を省略していない。スレッド共有メモリ使用量504は、異なる複数のスレッドが共有で使用しているメモリ、すなわちスレッド共有メモリの使用量である。参照先フレーム共有メモリ情報ID505は、スレッド共有メモリ情報が参照しているフレーム共有メモリ情報図4参照のフレーム共有メモリ情報ID401である。参照先スレッド共有メモリ情報ID506は、スレッド共有メモリ情報が参照しているスレッド共有メモリ情報のスレッド共有メモリ情報ID501である。図6は、本発明の実施の形態のオブジェクト601のデータ構造の一例を示す図である。ここでは、オブジェクト格納領域341図1参照に格納されるオブジェクト601のデータ構造の一例を説明する。オブジェクト601は、オブジェクトヘッダ602と、オブジェクトデータ603とを含む。オブジェクトヘッダ602は、オブジェクト601の管理情報である。本発明の実施の形態では、オブジェクトヘッダ602には、オブジェクト601の種別未解析、必要、フレーム共有、スタック共有のいずれかを示す情報例えば図7のオブジェクト種別ビットが格納される。なお、オブジェクト601の種別を示す情報は、オブジェクトデータ603に格納されてもよいし、オブジェクトヘッダ602及びオブジェクトデータ603以外の領域に格納されてもよい。オブジェクトデータ603は、オブジェクト601のデータ本体である。図7は、本発明の実施の形態のオブジェクト種別とオブジェクト種別ビットとの対応の一例を示す図である。図7のオブジェクト種別テーブル701に示すように、オブジェクト種別毎に、オブジェクト種別ビットここでは2ビットの値が対応付けられている。本発明の実施の形態では、オブジェクトヘッダ602図6参照に格納された2ビットの値が、オブジェクト種別ビットとして使用される。具体的には、オブジェクト種別ビットが00の場合には、オブジェクト種別が未解析、すなわち当該オブジェクトはオブジェクト解析処理図9参照において、未解析のオブジェクトであることを示す。また、オブジェクト種別ビットが01の場合には、オブジェクト種別が必要、すなわち当該オブジェクトはオブジェクト解析処理において、プログラムの実行に必要なオブジェクトであると判定済みであることを示す。同様に、オブジェクト種別ビットが10の場合には、オブジェクト種別がフレーム共有、すなわち当該オブジェクトはオブジェクト解析処理において、同じスレッドにおける複数の異なるスタックフレームから参照されているオブジェクトであると判定済みであることを示す。さらに、オブジェクト種別ビットが11の場合には、オブジェクト種別がスレッド共有、すなわち当該オブジェクトは、オブジェクト解析処理において、異なる複数のスレッドから参照されているオブジェクトであると判定済みであることを示す。[メモリ使用量計算処理]図8は、本発明の実施の形態のメモリ使用量計算処理の手順を示すフローチャートである。メモリ使用量計算部324は、本処理を実行することによって、スレッドで実行している処理のメモリ使用量を計算する。スレッドで実行している処理とは、スレッド単体で実行している処理や、スレッド中のスタックフレーム単位で実行している処理や、複数のスレッドで実行している処理を含む。まずステップ801において、メモリ使用量計算部324は、スレッド制御部322に、当該メモリ使用量計算処理を実行するスレッド以外の全スレッドの停止を要求するS801。スレッド制御部322は、当該要求に応じてスレッドを停止する。次にステップ802において、メモリ使用量計算部324は、オブジェクト解析処理を実行するS802。これにより、オブジェクト格納領域341内の各オブジェクトの種別を特定する。オブジェクト解析処理の詳細については、図9を参照して後述する。次にステップ803において、メモリ使用量計算部324は、未処理のスタックフレームの各々について、ステップ804及びステップ805の処理を実行する。すなわち全てのスタックフレームについて、ステップ804及びステップ805の処理を実行する。ステップ804では、メモリ使用量計算部324は、未処理のスタックフレームに対応するフレーム専有メモリ情報を、フレーム専有メモリ情報テーブル342aに登録するS804。具体的には、フレーム専有メモリ情報ID301、スレッドID302、メソッド名303及びフレーム専有メモリ使用量初期値は0304を登録する。ステップ805では、メモリ使用量計算部324は、未処理のスタックフレームのフレーム専有メモリ使用量304を計算するS805。具体的には、当該未処理のスタックフレーム内のオブジェクト参照を再帰的に辿りながら、当該未処理のスタックフレームのフレーム専有メモリ使用量304を計算する。フレーム専有メモリ使用量304の計算処理の詳細については、図16を参照して後述する。以上のステップ803~805の処理により、メモリ使用量計算部324は、フレーム専有メモリ情報テーブル342a図3参照に、全てのスタックフレームに対応するフレーム専有メモリ情報を登録する。その後ステップ806では、メモリ使用量計算部324は、未処理のフレーム共有メモリ情報と未処理のスレッド共有メモリ情報の各々について、ステップ807及びステップ808の処理を実行する。すなわち全てのフレーム共有メモリ情報と全てのスレッド共有メモリ情報について、ステップ807及びステップ808の処理を実行する。ステップ807では、メモリ使用量計算部324は、未処理のフレーム共有メモリ情報のフレーム共有メモリ使用量計算処理を実行するS807。具体的には、当該未処理のフレーム共有メモリ情報のアドレス402が指し示す参照先オブジェクトのメモリ使用量を、当該未処理のフレーム共有メモリ情報のフレーム共有メモリ使用量404に加算する。その後、処理対象を参照先オブジェクトに移動変更し、オブジェクト参照を図19に示す手順で再帰的に辿りながら、当該未処理のフレーム共有メモリ情報のフレーム共有メモリ使用量404を計算する。フレーム共有メモリ使用量計算処理の詳細については、図19を参照して後述する。ステップ808では、メモリ使用量計算部324は、未処理のスレッド共有メモリ情報のスレッド共有メモリ使用量計算処理を実行するS808。具体的には、当該未処理のスレッド共有メモリ情報のアドレス502が指し示す参照先オブジェクトのメモリ使用量を、当該未処理のスレッド共有メモリ情報のスレッド共有メモリ使用量504に加算する。その後、処理対象を参照先オブジェクトに移動し、オブジェクト参照を図20に示す手順で再帰的に辿りながら、当該未処理のスレッド共有メモリ情報のスレッド共有メモリ使用量504を計算する。スレッド共有メモリ使用量計算処理の詳細については、図20を参照して後述する。以上に示すステップ806~808の処理により、メモリ使用量計算部324は、フレーム共有メモリ情報テーブル342b図4参照に、全てのフレーム共有メモリ情報を登録する。また、スレッド共有メモリ情報テーブル342c図5参照に、全てのスレッド共有メモリ情報を登録する。その後ステップ809において、メモリ使用量計算部324は、スレッド制御部322にスレッドの再開を要求し、ステップ801で停止された全スレッドを再開させるS809。その後ステップ810において、メモリ使用量計算部324は、目的別メモリ使用量計算処理を実行することによって、目的に応じたメモリ使用量を計算するS810。目的別メモリ使用量計算処理の詳細については、図21~28を参照して後述する。以上に示す処理により、メモリ使用量計算部324は、スレッドで実行している処理のメモリ使用量を計算することができる。なお、ステップ810の処理を、ステップS809の処理より前に実行してもよい。また、ステップ810の処理では、メモリ使用量のみならず、1以上のスレッドを終了させた場合のメモリ解放量を計算してもよい。[オブジェクト解析処理]図9は、本発明の実施の形態のオブジェクト解析処理の手順を示すフローチャートである。メモリ使用量計算部324は、本処理を実行することによって、オブジェクト格納領域341内の各オブジェクトの種別を特定する。なお、当該オブジェクト解析処理の実行前に、メモリ使用量計算部324は、オブジェクト格納領域341に格納された全オブジェクトのオブジェクトヘッダ602に、オブジェクト種別未解析を設定する初期化処理。まずステップ901において、メモリ使用量計算部324は、未処理のオブジェクト参照について、ステップ902~907の処理を実行する。すなわち全てのスレッドにおける全てのスタックフレーム内のオブジェクト参照について、ステップ902~907の処理を実行する。ステップ902では、メモリ使用量計算部324は、参照先オブジェクトのオブジェクト種別を判定するS902。参照先オブジェクトのオブジェクト種別が未解析の場合は、メモリ使用量計算部324は、参照先オブジェクトのオブジェクト種別を必要に設定するS903。その後、処理対象を参照先オブジェクトに移動しS904、当該参照先オブジェクトに対して当該オブジェクト解析処理図9を再帰的に実行するS905。また、参照先オブジェクトのオブジェクト種別が必要の場合は、メモリ使用量計算部324は、必要オブジェクト解析処理を実行するS906。オブジェクト種別をフレーム共有又はスレッド共有に変更すべきか否かを解析するためである。その後、ステップ901に戻って、処理対象を当該オブジェクト参照とは別の未処理のオブジェクト参照に移動する。なお、必要オブジェクト解析処理の詳細については、図10を参照して後述する。また、参照先オブジェクトのオブジェクト種別がフレーム共有の場合は、メモリ使用量計算部324は、フレーム共有オブジェクト解析処理を実行するS907。オブジェクト種別をスレッド共有に変更すべきか否かを解析するためである。その後、ステップ901に戻って、処理対象を当該オブジェクト参照とは別の未処理のオブジェクト参照に移動する。なお、フレーム共有オブジェクト解析処理の詳細については、図11を参照して後述する。また、参照先オブジェクトのオブジェクト種別がスレッド共有の場合は、オブジェクト種別は変更されない。そのため、メモリ使用量計算部324は、処理を実行せずに、ステップS901に戻って、処理対象を当該オブジェクト参照とは別の未処理のオブジェクト参照に移動する。以上に示す処理により、メモリ使用量計算部324は、全スレッドにおける全スタックフレーム内の全オブジェクト参照について、当該オブジェクト参照を再帰的に辿りながら、参照先オブジェクトにオブジェクト種別を特定設定する。図10は、本発明の実施の形態の必要オブジェクト解析処理の手順を示すフローチャートである。図9のステップ906において、メモリ使用量計算部324は本処理を実行する。まずステップ1001において、メモリ使用量計算部324は、処理対象の参照先オブジェクトが、どのスタックフレームから辿り済みのオブジェクトであるかを判定するS1001。すなわち現在のオブジェクト解析処理を実行時の辿り元参照元のスタックフレームと、過去にオブジェクト解析処理を実行時の辿り元のスタックフレームとを比較する。同じスタックフレームから辿り済みのオブジェクトの場合は、メモリ使用量計算部324は、参照先オブジェクトのオブジェクト種別を変更しない。同じスレッドにおける異なるスタックフレームから辿り済みのオブジェクトの場合は、メモリ使用量計算部324は、参照先オブジェクトのオブジェクト種別をフレーム共有に設定変更するS1002。異なるスレッドのスタックフレームから辿り済みのオブジェクトの場合は、メモリ使用量計算部324は、参照先オブジェクトのオブジェクト種別をスレッド共有に設定するS1003。以上に示す処理により、メモリ使用量計算部324は、参照先オブジェクトのオブジェクト種別が必要の場合に、当該参照先オブジェクトがどのスタックフレームから辿り済みのオブジェクトであるかに応じて、当該参照先オブジェクトのオブジェクト種別を設定変更する。図11は、本発明の実施の形態のフレーム共有オブジェクト解析処理の手順を示すフローチャートである。図9のステップ907において、メモリ使用量計算部324は本処理を実行する。まずステップ1101において、メモリ使用量計算部324は、処理対象の参照先オブジェクトが、どのスタックフレームから辿り済みのオブジェクトであるかを判定するS1101。すなわち現在のオブジェクト解析処理を実行時の辿り元参照元のスタックフレームと、過去にオブジェクト解析処理を実行時の辿り元のスタックフレームとを比較する。同じスタックフレームから辿り済みのオブジェクトの場合及び同じスレッドの異なるスタックフレームから辿り済みのオブジェクトの場合は、メモリ使用量計算部324は、参照先オブジェクトのオブジェクト種別を変更しない。異なるスレッドのスタックフレームから辿り済みのオブジェクトの場合は、メモリ使用量計算部324は、参照先オブジェクトのオブジェクト種別をスレッド共有に設定変更するS1102。以上に示す処理により、メモリ使用量計算部324は、参照先オブジェクトのオブジェクト種別がフレーム共有の場合に、当該参照先オブジェクトがどのスタックフレームから辿り済みのオブジェクトであるかに応じて、当該参照先オブジェクトのオブジェクト種別を設定変更する。[オブジェクト解析処理中の各オブジェクトのオブジェクト種別]続いて、図9に示すオブジェクト解析処理中のオブジェクト格納領域341に格納された各オブジェクトに設定されるオブジェクト種別の変化の様子について説明する。図12は、本発明の実施の形態のオブジェクト解析処理中のオブジェクト格納領域341の第1例を示す図である。図12では、Class1.methodAを実行中のスタックフレームについてのオブジェクト解析処理が完了したときに、各オブジェクトに設定されるオブジェクト種別を示している。図13は、本発明の実施の形態のオブジェクト解析処理中のオブジェクト格納領域341の第2例を示す図である。図13では、Class1.methodBを実行中のスタックフレームまでのオブジェクト解析処理が完了したときに、各オブジェクトに設定されるオブジェクト種別を示している。図14は、本発明の実施の形態のオブジェクト解析処理中のオブジェクト格納領域341の第3例を示す図である。図14では、Class2.methodCを実行中のスタックフレームまでのオブジェクト解析処理が完了したときに、各オブジェクトに設定されるオブジェクト種別を示している。図15は、本発明の実施の形態のオブジェクト解析処理中のオブジェクト格納領域341の第4例を示す図である。図15では、全スタックフレームについてオブジェクト解析処理が完了したときに、各オブジェクトに設定されるオブジェクト種別を示している。なお、図12~15において、各オブジェクトは丸印で示されている。丸印の内部に文字が付されていないオブジェクトの種別は未解析である。Nの文字が付されているオブジェクトの種別は必要である。また、Fの文字が付されているオブジェクトの種別はフレーム共有である。Tの文字が付されているオブジェクトの種別はスレッド共有である。また、オブジェクトの右上に付されたFで始まる文字は、フレーム共有メモリ情報ID401図4参照を示す。また、Tで始まる文字は、スレッド共有メモリ情報ID501図5参照を示す。さらに、オブジェクトの右下に付された数字は、当該オブジェクトのメモリ使用量を示す。また、二重線の枠で示すスタックフレーム例えば、Class2.methodEは、固定スタックフレーム例えば、システムプログラムである。一方、その他のスタックフレーム例えば、Class1.methodAは、変動スタックフレーム例えばユーザプログラムである。すなわちスタックフレームは、固定スタックフレーム及び変動スタックフレームを含んでもよい。また、スタックフレームの種別は、図29を用いて後述するスレッド制御処理のキャンセル実行条件の判定等、選択や判定の条件に使用してもより。そうすると、図15に示すように、オブジェクト格納領域341内の各オブジェクトは、スレッド単位ここではスレッド1~Nで実行されるプログラムにおいて、重複して使用されるF又はTの文字が付されているオブジェクト重複オブジェクト、重複リソースと、原則的に重複して使用されないNの文字が付されているオブジェクト非重複オブジェクト、非重複リソースと、その他のオブジェクトとに分けられる。また、重複オブジェクトは、Fの文字が付されているオブジェクト同じスレッドで実行している異なる複数の処理が共有で使用しているオブジェクトと、Tの文字が付されているオブジェクト異なる複数のスレッドが共有で使用しているオブジェクトとを含む。また、図15に示す各オブジェクトの種別に基づいて、図8のステップ803~808の処理が実行されると、図3のフレーム専有メモリ情報テーブル342a、図4のフレーム共有メモリ情報テーブル342b及び図5のスレッド共有メモリ情報テーブル342cが生成される。図16は、本発明の実施の形態のフレーム専有メモリ使用量計算処理の手順を示すフローチャートである。図8のステップ805において、メモリ使用量計算部324は本処理を実行することによって、所定スタックフレーム以下、本処理の説明において、スタックフレームSという。のフレーム専有メモリ使用量を計算する。まずステップ1601において、メモリ使用量計算部324は、未処理の参照先オブジェクトについて、ステップ1602~1607の処理を実行する。すなわちスタックフレームSの全ての参照先オブジェクトについて、ステップ1602~1607の処理を実行する。ステップ1602では、メモリ使用量計算部324は、未処理の参照先オブジェクトのオブジェクト種別を判定するS1602。未処理の参照先オブジェクトのオブジェクト種別が必要の場合は、未処理の参照先オブジェクトが使用しているメモリは、スタックフレームSの専有メモリである。そのため、メモリ使用量計算部324は、当該未処理の参照先オブジェクトのメモリ使用量を、フレーム専有メモリ情報テーブル342aに格納されているスタックフレームSに対応するフレーム専有メモリ情報のフレーム専有メモリ使用量304に加算するS1603。その後、処理対象を当該未処理の参照先オブジェクトの参照先オブジェクトに移動するS1604。その後、移動後の参照先オブジェクトに対して、当該フレーム専有メモリ使用量計算処理図16を再帰的に実行するS1605。未処理の参照先オブジェクトのオブジェクト種別がフレーム共有の場合は、当該未処理の参照先オブジェクトが使用しているメモリは、スタックフレームSと他のスタックフレームとの共有メモリ、すなわちフレーム共有メモリである。そのため、メモリ使用量計算部324は、フレーム専有メモリ情報テーブル342aを登録対象としたフレーム共有メモリ情報ID登録処理を実行するS1606。その後、ステップ1601に戻って、処理対象を当該未処理の参照先オブジェクトとは別の未処理の参照先オブジェクトに移動する。フレーム共有メモリ情報ID登録処理の詳細については、図17を参照して後述する。未処理の参照先オブジェクトのオブジェクト種別がスレッド共有の場合は、当該未処理の参照先オブジェクトが使用しているメモリは、スタックフレームSに係るスレッドと他のスレッドとの共有メモリ、すなわちスレッド共有メモリである。そのため、メモリ使用量計算部324は、フレーム専有メモリ情報テーブル342aを登録対象としたスレッド共有メモリ情報ID登録処理を実行するS1607。その後、ステップ1601に戻って、処理対象を当該未処理の参照先オブジェクトとは別の未処理の参照先オブジェクトに移動する。スレッド共有メモリ情報ID登録処理の詳細については、図18を参照して後述する。以上に示す処理により、メモリ使用量計算部324は、スタックフレームS内のオブジェクト参照を再帰的に辿りながら、スタックフレームSのフレーム専有メモリ使用量304を計算する。例えば図15において、スレッド1のClass1.methodBで示されるスタックフレームのフレーム専有メモリ使用量は、オブジェクト種別が必要である参照先オブジェクト、すなわち当該スタックフレームの参照先オブジェクトのメモリ使用量12と、当該参照先オブジェクトの参照先オブジェクトのメモリ使用量24とを加算した36となる。図17は、本発明の実施の形態のフレーム共有メモリ情報ID登録処理の手順を示すフローチャートである。メモリ使用量計算部324は、本処理を実行することによって、登録対象のテーブルに、オブジェクトの種別がフレーム共有である参照先オブジェクト以下、本処理の説明において、参照先オブジェクトFOという。のフレーム共有メモリ情報IDを登録する。登録対象のテーブルとは、フレーム専有メモリ情報テーブル342a、フレーム共有メモリ情報テーブル342b、スレッド共有メモリ情報テーブル342cのいずれかである。まずステップ1701において、メモリ使用量計算部324は、フレーム共有メモリ情報テーブル342bにおいて、参照先オブジェクトFOに対応するフレーム共有メモリ情報が登録済みか否か判定するS1701。具体的には、参照先オブジェクトFOの参照関係のルートであるオブジェクトのアドレスと、フレーム共有メモリ情報テーブル342bに登録された各フレーム共有メモリ情報のアドレス402との比較によって、上記判定を実行する。登録済みである場合にはS1701でYES、ステップ1703に進む。一方、未登録である場合にはS1701でNO、メモリ使用量計算部324は、参照先オブジェクトFOに対応するフレーム共有メモリ情報を、フレーム共有メモリ情報テーブル342bに登録するS1702。具体的には、フレーム共有メモリ情報ID401、アドレス402、クラス名403及びフレーム共有メモリ使用量404初期値は0を登録する。ステップ1703では、メモリ使用量計算部324は、参照先オブジェクトFOに対応するフレーム共有メモリ情報のフレーム共有メモリ情報ID401を、登録対象のテーブルの参照先フレーム共有メモリ情報IDに設定登録するS1703。ステップ1703において、具体的には、まずフレーム共有メモリ情報テーブル342bから、参照先オブジェクトFOに対応するフレーム共有メモリ情報のフレーム共有メモリ情報ID401を取得する。その後、取得されたフレーム共有メモリ情報ID401を、登録対象のテーブルの参照先フレーム共有メモリ情報IDに設定する。すなわち図16のステップ1606のように、登録対象のテーブルがフレーム専有メモリ情報テーブル342aの場合は、フレーム専有メモリ情報テーブル342aに格納されているスタックフレームSに対応するフレーム専有メモリ情報の参照先フレーム共有メモリ情報ID305に設定する。また、図19のステップ1907のように、登録対象のテーブルがフレーム共有メモリ情報テーブル342bの場合は、フレーム共有メモリ情報Fの参照先フレーム共有メモリ情報ID405に設定する。さらに、図20のステップ2007のように、登録対象のテーブルがスレッド共有メモリ情報テーブル342cの場合は、スレッド共有メモリ情報Tの参照先フレーム共有メモリ情報ID505に設定する。以上に示す処理により、メモリ使用量計算部324は、登録対象のテーブルに、フレーム共有メモリを使用している参照先オブジェクトFOのフレーム共有メモリ情報IDを登録する。図18は、本発明の実施の形態のスレッド共有メモリ情報ID登録処理の手順を示すフローチャートである。メモリ使用量計算部324は、本処理を実行することによって、登録対象のテーブルに、オブジェクトの種別がスレッド共有である参照先オブジェクト以下、本処理の説明において、参照先オブジェクトSOとする。のスレッド共有メモリ情報IDを登録する。登録対象のテーブルとは、フレーム専有メモリ情報テーブル342a、フレーム共有メモリ情報テーブル342b、スレッド共有メモリ情報テーブル342cのいずれかである。まずステップ1801において、メモリ使用量計算部324は、スレッド共有メモリ情報テーブル342cにおいて、参照先オブジェクトSOに対応するスレッド共有メモリ情報が登録済みか否か判定するS1801。具体的には、参照先オブジェクトSOの参照関係のルートであるオブジェクトのアドレスと、スレッド共有メモリ情報テーブル342cに登録された各スレッド共有メモリ情報のアドレス502との比較によって、上記判定を実行する。登録済みである場合にはS1801でYES、ステップ1803に進む。一方、未登録である場合にはS1801でNO、メモリ使用量計算部324は、参照先オブジェクトSOに対応するスレッド共有メモリ情報を、スレッド共有メモリ情報テーブル342cに登録するS1802。具体的には、スレッド共有メモリ情報ID501、アドレス502、クラス名503及びスレッド共有メモリ使用量504初期値は0を登録する。ステップ1803では、メモリ使用量計算部324は、参照先オブジェクトSOに対応するスレッド共有メモリ情報のスレッド共有メモリ情報ID501を、登録対象の参照先スレッド共有メモリ情報IDに設定登録するS1803。ステップ1803において、具体的には、まずスレッド共有メモリ情報テーブル342cから、参照先オブジェクトSOに対応するスレッド共有メモリ情報のスレッド共有メモリ情報ID501を取得する。その後、取得されたスレッド共有メモリ情報ID501を、登録対象のテーブルの参照先フレーム共有メモリ情報IDに設定する。すなわち図16のステップ1607のように、登録対象のテーブルがフレーム専有メモリ情報テーブル342aの場合は、フレーム専有メモリ情報テーブル342aに格納されているスタックフレームSに対応するフレーム専有メモリ情報の参照先スレッド共有メモリ情報ID306に設定する。また、図19のステップ1908のように、登録対象のテーブルがフレーム共有メモリ情報テーブル342bの場合は、フレーム共有メモリ情報Fの参照先スレッド共有メモリ情報ID406に設定する。さらに、図20のステップ2008のように、登録対象のテーブルがスレッド共有メモリ情報テーブル342cの場合は、スレッド共有メモリ情報Tの参照先スレッド共有メモリ情報ID506に設定する。以上に示す処理により、メモリ使用量計算部324は、登録対象のテーブルに、スレッド共有メモリを使用している参照先オブジェクトSOのスレッド共有メモリ情報IDを登録する。図19は、本発明の実施の形態のフレーム共有メモリ使用量計算処理の手順を示すフローチャートである。図8のステップ807において、メモリ使用量計算部324は本処理を実行することによって、所定フレーム共有メモリ情報以下、本処理の説明において、フレーム共有メモリ情報Fという。のフレーム共有メモリ使用量を計算する。まずステップ1901において、メモリ使用量計算部324は、フレーム共有メモリ情報Fのアドレス402が指し示す参照先オブジェクト以下、本処理の説明において、参照先オブジェクトFRという。のメモリ使用量を、フレーム共有メモリ情報Fのフレーム共有メモリ使用量404に加算し、処理対象を参照先オブジェクトFRに移動するS1901。その後ステップ1902において、メモリ使用量計算部324は、未処理の参照先オブジェクトについて、ステップ1903~1908の処理を実行する。すなわち参照先オブジェクトFRの全ての参照先オブジェクトについて、ステップ1903~1908の処理を実行する。ステップ1903では、メモリ使用量計算部324は、未処理の参照先オブジェクトのオブジェクト種別を判定するS1903。未処理の参照先オブジェクトのオブジェクト種別が必要の場合は、当該未処理の参照先オブジェクトが使用しているメモリは、参照先オブジェクトFRと同じフレーム共有メモリである。そのため、メモリ使用量計算部324は、当該未処理の参照先オブジェクトのメモリ使用量を、フレーム共有メモリ情報Fのフレーム共有メモリ使用量404に加算するS1904。その後、処理対象を当該未処理の参照先オブジェクトの参照先オブジェクトに移動するS1905。その後、移動後の参照先オブジェクトに対して、当該フレーム共有メモリ使用量計算処理図19を再帰的に実行するS1906。未処理の参照先オブジェクトのオブジェクト種別がフレーム共有の場合は、当該未処理の参照先オブジェクトが使用しているメモリは、参照先オブジェクトFRと異なるフレーム共有メモリである。そのため、メモリ使用量計算部324は、フレーム共有メモリ情報テーブル342bを登録対象としたフレーム共有メモリ情報ID登録処理を実行するS1907。その後、ステップ1901に戻って、処理対象を当該未処理の参照先オブジェクトとは別の未処理の参照先オブジェクトに移動する。フレーム共有メモリ情報ID登録処理の詳細については、図17を参照して前述した通りである。未処理の参照先オブジェクトのオブジェクト種別がスレッド共有の場合は、当該未処理の参照先オブジェクトが使用しているメモリは、スレッド共有メモリである。そのため、メモリ使用量計算部324は、フレーム共有メモリ情報テーブル342bを登録対象としたスレッド共有メモリ情報ID登録処理を実行するS1908。その後、ステップ1901に戻って、処理対象を当該未処理の参照先オブジェクトとは別の未処理の参照先オブジェクトに移動する。スレッド共有メモリ情報ID登録処理の詳細については、図18を参照して前述した通りである。以上に示す処理により、メモリ使用量計算部324は、フレーム共有メモリ情報Fのアドレス402が指し示す参照先オブジェクトFR内のオブジェクト参照を再帰的に辿りながら、フレーム共有メモリ情報Fのフレーム共有メモリ使用量404を計算する。例えば図15において、フレーム共有メモリ情報IDがF3で示されるフレーム共有メモリ情報のフレーム共有メモリ使用量は、当該フレーム共有メモリ情報の参照先オブジェクトのメモリ使用量76と、当該参照先オブジェクトの参照先のオブジェクトであって、オブジェクト種別が必要である参照先オブジェクトのメモリ使用量8とを加算した84となる。図20は、本発明の実施の形態のスレッド共有メモリ使用量計算処理の手順を示すフローチャートである。図8のステップ808において、メモリ使用量計算部324は本処理を実行することによって、所定スレッド共有メモリ情報以下、本処理の説明において、スレッド共有メモリ情報Tという。のスレッド共有メモリ使用量を計算する。まずステップ2001において、メモリ使用量計算部324は、スレッド共有メモリ情報Tのアドレス502が指し示す参照先オブジェクト以下、本処理の説明において、参照先オブジェクトTRという。のメモリ使用量を、スレッド共有メモリ情報Tのスレッド共有メモリ使用量504に加算し、処理対象を参照先オブジェクトTRに移動するS2001。その後ステップ2002において、メモリ使用量計算部324は、未処理の参照先オブジェクトについて、ステップ2003~2008の処理を実行する。すなわち参照先オブジェクトTRの全ての参照先オブジェクトについて、ステップ2003~2008の処理を実行する。ステップ2003では、メモリ使用量計算部324は、未処理の参照先オブジェクトのオブジェクト種別を判定するS2003。未処理の参照先オブジェクトのオブジェクト種別が必要の場合は、当該未処理の参照先オブジェクトが使用しているメモリは、参照先オブジェクトTRと同じスレッド共有メモリである。そのため、メモリ使用量計算部324は、当該未処理の参照先オブジェクトのメモリ使用量を、スレッド共有メモリ情報Tのスレッド共有メモリ使用量504に加算するS2004。その後、処理対象を当該未処理の参照先オブジェクトの参照先オブジェクトに移動するS2005。その後、移動後の参照先オブジェクトに対して、当該スレッド共有メモリ使用量計算処理図20を再帰的に実行するS2006。未処理の参照先オブジェクトのオブジェクト種別がフレーム共有の場合は、当該未処理の参照先オブジェクトが使用しているメモリは、フレーム共有メモリである。そのため、メモリ使用量計算部324は、スレッド共有メモリ情報テーブル342cを登録対象としたフレーム共有メモリ情報ID登録処理を実行するS2007。その後、ステップ2001に戻って、処理対象を当該未処理の参照先オブジェクトとは別の未処理の参照先オブジェクト参照に移動する。フレーム共有メモリ情報ID登録処理の詳細については、図17を参照して前述した通りである。未処理の参照先オブジェクトのオブジェクト種別がスレッド共有の場合は、当該未処理の参照先オブジェクトが使用しているメモリは、参照先オブジェクトTRと異なるスレッド共有メモリである。そのため、メモリ使用量計算部324は、スレッド共有メモリ情報テーブル342cを登録対象としたスレッド共有メモリ情報ID登録処理を実行するS2008。その後、ステップ2001に戻って、処理対象を当該未処理の参照先オブジェクトとは別の未処理の参照先オブジェクトに移動する。スレッド共有メモリ情報ID登録処理の詳細については、図18を参照して前述した通りである。以上に示す処理により、メモリ使用量計算部324は、スレッド共有メモリ情報Tのアドレス502が指し示す参照先オブジェクトTR内のオブジェクト参照を再帰的に辿りながら、スレッド共有メモリ情報Tのスレッド共有メモリ使用量504を計算する。例えば図15において、スレッド共有メモリ情報IDがT1で示されるスレッド共有メモリ情報のスレッド共有メモリ使用量は、当該スレッド共有メモリ情報の参照先オブジェクトのメモリ使用量72となる。[目的別メモリ使用量計算の例]以下、図21~図28を用いて、図8のステップ810における目的別メモリ使用量計算処理の例を説明する。[1.特定スレッドの総メモリ使用量の計算]図21は、本発明の実施の形態の特定スレッドの総メモリ使用量の計算処理の手順を示すフローチャートである。メモリ使用量計算部324は、本処理を実行することによって、特定スレッドの総メモリ使用量を計算することができる。なお、特定スレッドの専有メモリ使用量図25参照と共有メモリ使用量図26参照が既に計算されている場合には、専有メモリ使用量と共有メモリ使用量の和として、総メモリ使用量を計算することができる。特定スレッドの総メモリ使用量は、以下のS_SUM、F_SUM及びT_SUMの和として計算することができる。S_SUM:フレーム専有メモリ情報テーブル342aに登録されているスレッドID302が同じフレーム専有メモリ情報Sのフレーム専有メモリ使用量304の合計値。F_SUM:フレーム専有メモリ情報Sの参照先フレーム共有メモリ情報ID305や参照先スレッド共有メモリ情報ID306から直接、又は、間接的に参照しているフレーム共有メモリ情報ID401の集合Fが示すフレーム共有メモリ情報のフレーム共有メモリ使用量404の合計値。T_SUM:フレーム専有メモリ情報Sの参照先フレーム共有メモリ情報ID305や参照先スレッド共有メモリ情報ID306から直接、又は、間接的に参照しているスレッド共有メモリ情報ID501の集合Tが示すスレッド共有メモリ情報のスレッド共有メモリ使用量504の合計値。以下、図21のフローチャートについて説明する。なお、以下では、具体例として、スレッドID302図3参照が1のスレッドの総メモリ使用量を計算する場合を例に説明する。まずステップ2101において、メモリ使用量計算部324は、スレッドID302が同じ1である各フレーム専有メモリ情報以下、本処理の説明においてフレーム専有メモリ情報Sという。について、ステップ2102~2104の処理を繰り返す。なお、上記具体例でいうフレーム専有メモリ情報Sとは、図3に示すフレーム専有メモリ情報ID301が1のフレーム専有メモリ情報と、フレーム専有メモリ情報ID301が2のフレーム専有メモリ情報とを示す。ステップ2102において、メモリ使用量計算部324は、フレーム専有メモリ情報Sのフレーム専有メモリ使用量を、合計値S_SUMに加算するS2102。すなわち合計値S_SUMは、フレーム専有メモリ情報ID301が1のフレーム専有メモリ使用量84と、フレーム専有メモリ情報ID301が2のフレーム専有メモリ使用量36との和120となる。すなわちこのステップ2102によって、メモリ使用量計算部324は、対象スレッドここではスレッドID302が1のスレッドから参照されている各オブジェクトの参照関係に基づいて、当該対象スレッドによって専有して使用されるすなわち重複して使用されないオブジェクトを判定し、当該オブジェクトのメモリ使用量を計算している。ステップ2103において、メモリ使用量計算部324は、フレーム専有メモリ情報Sの参照先フレーム共有メモリ情報ID305に対し、参照先フレーム共有メモリ情報ID展開処理を実行するS2103。ステップ2103の処理により、フレーム専有メモリ情報Sの参照先フレーム共有メモリ情報ID305から直接、又は、間接的に参照しているフレーム共有メモリ情報ID401やスレッド共有メモリ情報ID501の情報を取得する。参照先フレーム共有メモリ情報ID展開処理の詳細については、図22を用いて後述する。ステップ2104において、メモリ使用量計算部324は、フレーム専有メモリ情報Sの参照先スレッド共有メモリ情報ID306に対し、参照先スレッド共有メモリ情報ID展開処理を実行するS2104。ステップ2104の処理により、フレーム専有メモリ情報Sの参照先スレッド共有メモリ情報ID306から直接、又は、間接的に参照しているフレーム共有メモリ情報ID401やスレッド共有メモリ情報ID501の情報を取得する。参照先スレッド共有メモリ情報ID展開処理の詳細については、図23を用いて後述する。その後ステップ2105において、メモリ使用量計算部324は、スレッドID302が同じ各フレーム専有メモリ情報Sについて、フレーム共有メモリ情報ID401の集合Fと、スレッド共有メモリ情報ID501の集合Tとを計算するS2105。すなわち各フレーム専有メモリ情報Sの参照先フレーム共有メモリ情報ID305や参照先スレッド共有メモリ情報ID306から直接、又は、間接的に参照しているフレーム共有メモリ情報ID401の集合F{F1、F2}と、スレッド共有メモリ情報ID501の集合T{T1}とを計算する図24参照。なお、ステップ2105では、フレーム共有メモリ情報ID401の集合Fやスレッド共有メモリ情報ID501の集合Tを計算している。これは、複数のスタックフレームや複数のスレッドから参照されているフレーム共有メモリ及びスレッド共有メモリのメモリ使用量が、総メモリ使用量に重複して加算されるのを防ぐためである。すなわちこのステップ2105によって、メモリ使用量計算部324は、対象スレッドから参照されている各オブジェクトの参照関係に基づいて、重複して使用されているオブジェクトを判定している。その後ステップ2106において、メモリ使用量計算部324は、集合Fが示すフレーム共有メモリ情報のフレーム共有メモリ使用量404の合計値F_SUMを計算するS2106。上記具体例では、集合Fは{F1、F2}である。そのため、ステップ2106において、合計値F_SUMは、フレーム共有メモリ情報ID401がF1のフレーム共有メモリ使用量60と、フレーム共有メモリ情報ID401がF2のフレーム共有メモリ使用量12との和である72となる。すなわちこのステップ2106によって、メモリ使用量計算部324は、ステップ2105で重複して使用されていると判定されたオブジェクトのうちの、対象スレッドにおける異なるスタックフレームが共有で重複して使用しているオブジェクトが格納されたメモリ領域の大きさメモリ使用量を計算している。その後ステップ2107において、メモリ使用量計算部324は、集合Tが示すスレッド共有メモリ情報のスレッド共有メモリ使用量504の合計値T_SUMを計算するS2107。上記具体例では、集合Tは{T1}である。そのため、ステップ2107において、合計値T_SUMは、スレッド共有メモリ情報ID501がT1のスレッド共有メモリ使用量72となる。すなわちこのステップ2107によって、メモリ使用量計算部324は、ステップ2105で重複して使用されていると判定されたオブジェクトのうちの、異なる複数のスレッド対象スレッドを含むが共有で重複して使用しているオブジェクトが格納されたメモリ領域の大きさを計算している。ステップ2108において、メモリ使用量計算部324は、合計値S_SUMと合計値F_SUMと合計値T_SUMの和を計算するS2108。上記具体例では、スレッドIDが1のスレッドの総メモリ使用量は、120と72と72との和である264となる。以上に示す処理により、メモリ使用量計算部324は、特定スレッドここでは、スレッドID302が1のスレッドの総メモリ使用量を計算することができる。なお、スレッドの総メモリ使用量は、言い換えると、当該スレッドを終了した場合に解放される最大メモリ解放量である。図22は、本発明の実施の形態の参照先フレーム共有メモリ情報ID展開処理の手順を示すフローチャートである。図21のステップ2103において、メモリ使用量計算部324は本処理を実行する。まずステップ2201において、メモリ使用量計算部324は、処理対象のフレーム専有メモリ情報Sの参照先フレーム共有メモリ情報ID305図3参照に登録されている各フレーム共有メモリ情報ID401について、ステップ2202の処理を実行する。ステップ2202において、メモリ使用量計算部324は、各フレーム共有メモリ情報ID401から直接、又は、間接的に参照しているフレーム共有メモリ情報ID401とスレッド共有メモリ情報ID501とを展開する2202。例えば、処理対象のフレーム専有メモリ情報Sのフレーム専有メモリ情報ID301が3図3参照である場合を考える。この場合、フレーム専有メモリ情報テーブル342aにおいて、当該フレーム専有メモリ情報Sの参照先フレーム共有メモリ情報ID305にはF3が登録されている。一方、フレーム共有メモリ情報テーブル342b図4参照において、フレーム共有メモリ情報ID401がF3であるフレーム共有メモリ情報の参照先スレッド共有メモリ情報ID406にはT1が登録されている。また、スレッド共有メモリ情報テーブル342c図5参照において、スレッド共有メモリ情報ID501がT1であるスレッド共有メモリ情報の参照先フレーム共有メモリ情報ID505にはF2が登録されている。これは、フレーム共有メモリ情報ID401がF3のフレーム共有メモリ情報に対応するフレーム共有メモリが、スレッド共有メモリ情報ID501がT1であるスレッド共有メモリ情報に対応するスレッド共有メモリを直接的に参照していることを示している。また、フレーム共有メモリ情報ID401がF2のフレーム共有メモリ情報に対応するフレーム共有メモリを間接的に参照していることを示している。以上に示す処理により、メモリ使用量計算部324は、処理対象のフレーム専有メモリ情報Sの参照先フレーム共有メモリ情報ID305に登録されているフレーム共有メモリ情報ID401から直接、又は、間接的に参照しているフレーム共有メモリ情報ID401とスレッド共有メモリ情報ID501とを展開する。すなわちフレーム専有メモリ情報Sの参照先フレーム共有メモリと、他のフレーム共有メモリ及びスレッド共有メモリとの間の参照関係を取得している。図23は、本発明の実施の形態の参照先スレッド共有メモリ情報ID展開処理の手順を示すフローチャートである。図21のステップ2104において、メモリ使用量計算部324は本処理を実行する。まずステップ2301において、メモリ使用量計算部324は、処理対象のフレーム専有メモリ情報Sの参照先スレッド共有メモリ情報ID306図3参照に登録されている各スレッド共有メモリ情報ID501について、ステップ2302の処理を実行する。ステップ2302において、メモリ使用量計算部324は、各スレッド共有メモリ情報ID501から直接、又は、間接的に参照しているフレーム共有メモリ情報ID401とスレッド共有メモリ情報ID501とを展開する2302。以上に示す処理により、メモリ使用量計算部324は、処理対象のフレーム専有メモリ情報Sの参照先スレッド共有メモリ情報ID306に登録されているスレッド共有メモリ情報ID501から直接、又は、間接的に参照しているフレーム共有メモリ情報ID401とスレッド共有メモリ情報ID501とを展開する。すなわちフレーム専有メモリ情報Sの参照先スレッド共有メモリと、フレーム共有メモリ及び他のスレッド共有メモリとの参照関係を取得している。図24は、本発明の実施の形態の展開後のフレーム専有メモリ情報テーブル342aの一例を示す図である。図24に示す展開後のフレーム専有メモリ情報テーブル342aにおける参照先フレーム共有メモリ情報ID805、参照先スレッド共有メモリ情報ID806は、図3に示すフレーム専有メモリ情報テーブル342aにおける参照先フレーム共有メモリ情報ID305、参照先スレッド共有メモリ情報ID306に対応する。なお、前述の図3と同じ構成要素については、同一の符号を付して重複する説明を省略する。参照先フレーム共有メモリ情報ID805は、参照先フレーム共有メモリ情報ID305が、図22に示す参照先フレーム共有メモリ情報ID展開処理によって展開されたものである。例えば、フレーム専有メモリ情報ID301が3の参照先フレーム共有メモリ情報ID805には、F3→T1→F2が登録されている。これは、フレーム共有メモリ情報ID401がF3のフレーム共有メモリ情報に対応するフレーム共有メモリが、スレッド共有メモリ情報ID501がT1のスレッド共有メモリ情報に対応するスレッド共有メモリを直接的に参照していることを示している。また、フレーム共有メモリ情報ID401がF2のフレーム共有メモリ情報に対応するフレーム共有メモリを間接的に参照していることを示している。参照先スレッド共有メモリ情報ID806は、参照先スレッド共有メモリ情報ID306が、図23に示す参照先スレッド共有メモリ情報ID展開処理によって展開されたものである。例えば、フレーム専有メモリ情報ID301が2の参照先スレッド共有メモリ情報ID806には、T1→F2が登録されている。これは、スレッド共有メモリ情報ID501がT1のスレッド共有メモリ情報に対応するスレッド共有メモリが、フレーム共有メモリ情報ID401がF2のフレーム共有メモリ情報に対応するフレーム共有メモリを直接的に参照していることを示している。[2.特定スレッドの専有メモリ使用量の計算]図25は、本発明の実施の形態の特定スレッドの専有メモリ使用量の計算処理の手順を示すフローチャートである。メモリ使用量計算部324は、本処理を実行することによって、特定スレッドの専有メモリ使用量を計算することができる。なお、特定スレッドの総メモリ使用量図21参照と共有メモリ使用量図26参照が既に計算されている場合には、総メモリ使用量と共有メモリ使用量の差として、専有メモリ使用量を計算することができる。特定スレッドの専有メモリ使用量は、以下のS_SUM及びF_SUMの和として計算することができる。S_SUM:フレーム専有メモリ情報テーブル342aに登録されているスレッドID302が同じフレーム専有メモリ情報Sのフレーム専有メモリ使用量304の合計値。F_SUM:フレーム専有メモリ情報Sの参照先フレーム共有メモリ情報ID305や参照先スレッド共有メモリ情報ID306から直接、又は、間接的に参照しているフレーム共有メモリ情報ID401の集合Aのうち、スレッド共有メモリ情報ID501を経由して参照しているフレーム共有メモリ情報ID401の集合Bを除く集合Fが示すフレーム共有メモリ情報のフレーム共有メモリ使用量404の合計値。以下、図25のフローチャートについて説明する。なお、以下では、具体例として、スレッドID302図3参照が1のスレッドの専有メモリ使用量を計算する場合を例に説明する。前述の図21と同じ構成要素については、同一の符号を付して重複する説明を省略する。ステップ2501において、メモリ使用量計算部324は、スレッドID302が同じ各フレーム専有メモリ情報Sについて、フレーム共有メモリ情報ID401の集合Aのうち、スレッド共有メモリ情報ID501を経由しているフレーム共有メモリ情報ID401の集合Bを除く集合Fを計算するS2501。すなわちまず各フレーム専有メモリ情報Sの参照先フレーム共有メモリ情報ID305や参照先スレッド共有メモリ情報ID306から直接、又は、間接的に参照しているフレーム共有メモリ情報ID401の集合A{F1、F2}を計算する図24参照。次に、集合Aのうち、スレッド共有メモリ情報ID501に対応するスレッド共有メモリを経由して参照しているフレーム共有メモリ情報ID401の集合B{F2}を計算する。その結果、集合Aのうち集合Bを除く集合F{F1}を計算する。なお、ステップ2501では、集合Aのうち集合Bを除く集合Fを計算している。これは、異なる複数のスレッドで共有しているフレーム共有メモリのメモリ使用量が、専有メモリ使用量に加算されるのを防ぐためである。例えば、フレーム共有メモリ情報ID401がF2のフレーム共有メモリ情報に対応するフレーム共有メモリは、スレッド共有メモリ情報ID501がT1のスレッド共有メモリ情報に対応するスレッド共有メモリから参照されている。本発明の実施の形態では、このようにスレッド共有メモリから参照されているフレーム共有メモリを、スレッド共有メモリではなく、フレーム共有メモリとして種別している。そこで、ステップ2501の処理によって、このようにスレッド共有メモリから参照されているフレーム共有メモリのメモリ使用量が、専有メモリ使用量に加算されるのを防いでいる。なお、このように異なる複数のスレッドから参照されているフレーム共有メモリを、スレッド共有メモリとして種別してもよい。この場合、ステップ2501で計算される集合Fは、フレーム専有メモリ情報Sの参照先フレーム共有メモリ情報ID305や参照先スレッド共有メモリ情報ID306から直接、又は、間接的に参照しているフレーム共有メモリ情報ID401の集合となる。すなわちこのステップ2501によって、メモリ使用量計算部324は、対象スレッドから参照されている各オブジェクトの参照関係に基づいて、重複して使用されているオブジェクトを判定している。その後ステップ2502において、メモリ使用量計算部324は、集合Fが示すフレーム共有メモリ情報のフレーム共有メモリ使用量404の合計値F_SUMを計算するS2502。上記具体例では、集合Fは{F1}である。そのため、ステップ2502において、合計値F_SUMは、フレーム共有メモリ情報ID401がF1のフレーム共有メモリ使用量60となる。すなわちこのステップ2502によって、メモリ使用量計算部324は、ステップ2501で重複して使用されていると判定されたオブジェクトのうちの、対象スレッドにおける異なるスタックフレームが共有で重複して使用しているオブジェクトが格納されたメモリ領域の大きさを計算している。その後ステップ2503において、メモリ使用量計算部324は、合計値S_SUMと合計値F_SUMの和を計算するS2503。上記具体例では、スレッドIDが1のスレッドの専有メモリ使用量は、120と60との和である180となる。以上に示す処理により、メモリ使用量計算部324は、特定スレッドここでは、スレッドID302が1のスレッドの専有メモリ使用量を計算することができる。なお、スレッドの専有メモリ使用量は、言い換えると、当該スレッドを終了した場合に必ず解放されるメモリ解放量である。[3.特定スレッドの共有メモリ使用量の計算]図26は、本発明の実施の形態の特定スレッドの共有メモリ使用量の計算処理の手順を示すフローチャートである。メモリ使用量計算部324は、本処理を実行することによって、特定スレッドの共有メモリ使用量を計算することができる。なお、特定スレッドの総メモリ使用量図21参照と専有メモリ使用量図25参照が既に計算されている場合は、総メモリ使用量と専有メモリ使用量の差として、共有メモリ使用量を計算することができる。特定スレッドの共有メモリ使用量は、以下のT_SUM及びF_SUMの和として計算することができる。T_SUM:フレーム専有メモリ情報テーブル342aに登録されているスレッドID302が同じフレーム専有メモリ情報Sの参照先フレーム共有メモリ情報ID305や参照先スレッド共有メモリ情報ID306から直接、又は、間接的に参照しているスレッド共有メモリ情報ID501の集合Tが示すスレッド共有メモリ情報のスレッド共有メモリ使用量504の合計値。F_SUM:フレーム専有メモリ情報Sの参照先フレーム共有メモリ情報ID305や参照先スレッド共有メモリ情報ID306から直接、又は、間接的に参照しているフレーム共有メモリ情報ID401の集合Aのうち、スレッド共有メモリ情報ID501を経由して参照しているフレーム共有メモリ情報ID401の集合Fが示すフレーム共有メモリ情報のフレーム共有メモリ使用量404の合計値。以下、図26のフローチャートについて説明する。なお、以下では、具体例として、スレッドID302図3参照が1のスレッドの共有メモリ使用量を計算する場合を例に説明する。前述の図21と同じ構成要素については、同一の符号を付して重複する説明を省略する。ステップ2601において、メモリ使用量計算部324は、スレッドID302が同じ各フレーム専有メモリ情報Sについて、スレッド共有メモリ情報ID501の集合Tを計算するS2601。すなわちスレッドID302が同じ1である各フレーム専有メモリ情報Sの参照先スレッド共有メモリ情報ID306から直接、又は、間接的に参照しているスレッド共有メモリ情報ID501の集合T{T1}を計算する図24参照。すなわちこのステップ2601によって、メモリ使用量計算部324は、対象スレッドから参照されている各オブジェクトの参照関係に基づいて、異なる複数のスレッド対象スレッドを含むが共有で重複して使用しているオブジェクトを判定している。その後ステップ2602において、メモリ使用量計算部324は、スレッドID302が同じ各フレーム専有メモリ情報Sについて、フレーム共有メモリ情報ID401の集合Aのうち、スレッド共有メモリ情報ID501を経由しているフレーム共有メモリ情報ID401の集合Fを計算するS2602。すなわちまず各フレーム専有メモリ情報Sの参照先フレーム共有メモリ情報ID305や参照先スレッド共有メモリ情報ID306から直接、又は、間接的に参照しているフレーム共有メモリ情報ID401の集合A{F1、F2}を計算する図24参照。次に、集合Aのうち、スレッド共有メモリ情報ID501に対応するスレッド共有メモリを経由して参照しているフレーム共有メモリ情報ID401の集合F{F2}を計算する。なお、ステップ2602では、集合Aのうちの集合Fを計算している。これは、異なる複数のスレッドで共有しているフレーム共有メモリのメモリ使用量を、共有メモリ使用量に加算するためである。すなわちこのステップ2602によって、メモリ使用量計算部324は、対象スレッドから参照されている各オブジェクトの参照関係に基づいて、対象スレッドにおける異なるスタックフレームが共有で重複して使用しているオブジェクトを判定している。その後ステップ2603において、メモリ使用量計算部324は、集合Tが示すスレッド共有メモリ情報のスレッド共有メモリ使用量504の合計値T_SUMを計算するS2603。上記具体例では、集合Tは{T1}である。そのため、ステップ2603において、合計値T_SUMは、スレッド共有メモリ情報ID501がT1のスレッド共有メモリ使用量72となる。すなわちこのステップ2603によって、メモリ使用量計算部324は、ステップ2601で重複して使用されていると判定されたオブジェクトが格納されたメモリ領域の大きさを計算している。その後ステップ2604において、メモリ使用量計算部324は、集合Fが示すフレーム共有メモリ情報のフレーム共有メモリ使用量404の合計値F_SUMを計算するS2604。上記具体例では、集合Fは{F2}である。そのため、ステップ2604において、合計値F_SUMは、フレーム共有メモリ情報ID401がF2のフレーム共有メモリ使用量12となる。すなわちこのステップ2604によって、メモリ使用量計算部324は、ステップ2602で重複して使用されていると判定されたオブジェクトが格納されたメモリ領域の大きさを計算している。その後ステップ2605において、メモリ使用量計算部324は、合計値T_SUMと合計値F_SUMの和を計算するS2605。上記具体例では、スレッドIDが1のスレッドの共有メモリ使用量は、72と12との和である84となる。以上に示す処理により、メモリ使用量計算部324は、特定スレッドここでは、スレッドID302が1のスレッドの共有メモリ使用量を計算することができる。なお、スレッドの共有メモリ使用量は、当該スレッドの終了により必ず解放されるとは限らないメモリ解放量である。図27は、本発明の実施の形態の各スレッドの目的別メモリ使用量の一例を示す図である。図27に示す例では、図15に示す各スレッド1~nの専有メモリ使用量、共有メモリ使用量及び総メモリ使用量を示している。すなわちスレッドID2701と、専有メモリ使用量2702と、共有メモリ使用量2703と、総メモリ使用量2704とを対応付けて示している。専有メモリ使用量2702は、図25に示す処理によって計算される。共有メモリ使用量2703は、図26に示す処理によって計算される。総メモリ使用量2704は、図21に示す処理によって計算される。[4.複数スレッドのメモリ使用量及びメモリ解放量の計算]次に、メモリ使用量計算部324が、複数スレッドのメモリ使用量及びメモリ解放量を計算する処理について説明する。まず、複数スレッドのメモリ使用量について説明する。メモリ使用量計算部324は、複数スレッドのメモリ使用量を計算する場合には、当該複数スレッドが共有しているフレーム共有メモリとスレッド共有メモリの参照関係を考慮する。なお、参照関係は、前述の参照先フレーム共有メモリ情報ID展開処理図22参照及び参照先スレッド共有メモリ情報ID展開処理図23参照によって取得される。例えば、図24に示す展開後のフレーム専有メモリ情報テーブル342dにおいて、スレッドID302が1であるスレッドは、スレッド共有メモリ情報ID501がT1であるスレッド共有メモリ情報に対応するスレッド共有メモリを参照している。同様に、スレッドID302が2であるスレッドは、スレッド共有メモリ情報ID501がT1であるスレッド共有メモリ情報に対応するスレッド共有メモリを参照している。また、スレッドID302が3であるスレッドは、スレッド共有メモリ情報ID501がT1、T2であるスレッド共有メモリ情報に対応するスレッド共有メモリを参照している。また、スレッドID302がnであるスレッドは、スレッド共有メモリ情報ID501がT2であるスレッド共有メモリ情報に対応するスレッド共有メモリを参照している。すなわちスレッドID302が1、2、3であるスレッドは、スレッド共有メモリ情報ID501がT1であるスレッド共有メモリ情報に対応するスレッド共有メモリを共有している。同様に、スレッドID302が3、nであるスレッドは、スレッド共有メモリ情報ID501がT2であるスレッド共有メモリ情報に対応するスレッド共有メモリを共有している。そのため、メモリ使用量計算部324は、複数スレッドのメモリ使用量を計算する場合には、上記参照関係に基づいて、当該複数スレッドが共有しているフレーム共有メモリ情報及びスレッド共有メモリの使用量が重複して加算されないように計算する。また、他のスレッドとスレッド共有メモリTを共有するスレッドXを新たに実行する場合、メモリ使用量計算部324は、スレッドXによるメモリ使用量の増加量を計算することができる。例えば、スレッドXが新たに実行されたときに、スレッド共有メモリTを参照している他のスレッドが存在しない場合には、スレッドXによるメモリ使用量の増加量は、スレッドXの専有メモリ使用量とスレッド共有メモリTの使用量との和である。一方、スレッド共有メモリTを参照している他のスレッドが存在する場合には、スレッドXによるメモリ使用量の増加量は、スレッドXの専有メモリ使用量である。メモリ使用量計算部324は、複数スレッドを終了させた場合のメモリ解放量を計算することができる。図28は、本発明の実施の形態の複数スレッドを終了させた場合のメモリ解放量の一例を示す図である。図28では、図15に示すスレッド1~nのうちの任意の2つのスレッドを終了させた場合のスレッド専有メモリ解放量、スレッド共有メモリ解放量及び総メモリ解放量を示している。すなわちスレッドID2801と、スレッド専有メモリ解放量2802と、スレッド共有メモリ解放量2803と、総メモリ解放量2804とを対応付けて示している。スレッド専有メモリ解放量2802は、スレッドID2801に示す複数スレッドを終了させた場合のスレッド専有メモリの解放量である。このスレッド専有メモリ解放量2802は、スレッドID2801に示す各スレッドのスレッド専有メモリ使用量の合計値として計算される。例えば、スレッドID2801が{1、2}である場合に、スレッド専有メモリ解放量2802は、スレッドID2701図27参照が1のフレーム専有メモリ使用量180と、スレッドID2701が2のフレーム専有メモリ使用量120との和300となる。スレッド共有メモリ解放量2803は、スレッドID2801に示す複数スレッドを終了させた場合のスレッド共有メモリの解放量である。このスレッド共有メモリ解放量2803は、スレッドID2801に示す複数スレッドのみによって共有されるスレッド共有メモリのスレッド共有メモリ使用量として計算される。例えば、スレッドID2801が{1、2}である場合には、これら2つのスレッドのみによって共有されるスレッド共有メモリは存在しない。そのため、スレッド共有メモリ解放量2803は、0となる。一方、スレッドID2801が{3、n}である場合に、スレッド共有メモリ解放量2803は、これら2つのスレッドのみによって共有されるスレッド共有メモリ情報ID501図5参照がT2であるスレッド共有メモリのスレッド共有メモリ使用量504120となる。総メモリ解放量2804は、スレッドID2801に示す複数スレッドを終了させた場合の総メモリ解放量である。この総メモリ解放量2804は、スレッド専有メモリ解放量2802とスレッド共有メモリ解放量2803の和として計算される。以上説明してきたように、本発明の実施の形態のメモリ使用量計算部324は、スレッドで実行している処理が任意の時点で実際に使用しているメモリ量を効率的、かつ、正確に計算することができる。スレッドで実行している処理の制御図29は、本発明の実施の形態のメモリ不足発生時のスレッド制御処理の手順を示すフローチャートである。JavaVM32は、メモリ不足発生時に本処理を実行する。まずステップ2901において、JavaVM32は、メモリ使用量計算処理を実行するS2901。これにより、各スレッドのメモリ使用状況を取得する。メモリ使用量計算処理については、図8を参照して前述した通りである。次にステップ2902において、JavaVM32は、計算機システム1の制御ポリシーに基づいて、制御対象スレッドの候補を決定するS2902。なお、制御対象スレッドの候補は、制御ポリシーに応じて1つでもよいし、複数でもよい。また、制御ポリシーは、設定ファイル42によって指定してもよいし、他の方法によって指定してもよい。その後ステップ2903において、JavaVM32は、設定ファイル42に設定された情報に基づいて、ステップ2902で決定された制御対象スレッドの候補が、キャンセル終了、取り消しを許可されたスレッドか否かを判定するS2903。なお、設定ファイル42では、キャンセルを許可するスレッドを、例えばスレッドXのように直接的に設定してもよいし、メソッドXを実行しているスレッドのように間接的に設定してもよい。その後ステップ2904において、JavaVM32は、設定ファイル42に設定された情報に基づいて、スレッドをキャンセルするための実行条件を満たしているか否かを判定するS2904。スレッドをキャンセルするための実行条件とは、例えば制御対象スレッドの候補をキャンセルすることによって解放されるメモリ量が所定閾値以上であるという条件である。ステップ2903においてYES及びステップ2904においてYESの場合には、JavaVM32メモリ使用量計算部324は、スレッド制御部322に制御対象スレッドのキャンセルを要求し、スレッド制御部322は制御対象スレッドをキャンセルするS2905。その後ステップ2906において、JavaVM32は、GC実行部323にGC実行を要求し、GC実行部323はGCを実行するS2906。これにより、不要なメモリ領域を解放する。その後ステップ2907において、JavaVM32は、メソッド実行を再開するS2907。一方、ステップ2903においてNO、又は、ステップ2904においてNOの場合には、JavaVM32は、メモリ不足エラーを通知するS2908。以上に示す処理により、JavaVM32は、メモリ不足発生時に、メモリ不足の原因であるスレッドを特定してキャンセルし、不要なメモリをGCにより再利用可能にしている。これにより、メモリ不足によるJavaVM32の停止を効率的に回避し、かつ、メソッド実行を継続することができる。なお、図29では、制御対象がスレッドである場合について説明してきたが、この場合には限らない。制御対象は例えばスレッドで実行される処理でもよい。図30は、本発明の実施の形態のメモリ使用量計算結果の出力例を示す図である。メモリ情報出力部325図1参照は、メモリ使用量計算部324による計算結果に基づいて、例えば出力画面3000を生成し、ディスプレイ出力装置6に出力する。なお、ログデータとして出力してもよい。図30に示す出力画面3000は、図27に示す各スレッドのメモリ使用量の計算結果に対応する。すなわち出力内容3001、3002及び3003は、それぞれ各スレッドの専有メモリ使用量2702、共有メモリ使用量2703及び総メモリ使用量2704を、メモリ使用量に基づいて順位付けしてソートした情報である。なお、図30において、変数Rankは順位を示す。変数TIDは、スレッドIDを示す。変数Usageはメモリ使用量を示す。変数TotalUsageは、メモリ使用量の合計値を示す。変数NumberofThreadsは、スレッドの数を示す。変数AverageUsageは、メモリ使用量の平均値、すなわちスレッド1つ当りのメモリ使用量を示す。また、出力画面3000では、各スレッドのメモリ使用量を示す情報例えば出力情報3004が選択可能である。ユーザは入力装置5を用いて出力情報3004を選択する例えばマウスのクリック。そうすると、メモリ情報出力部325は、選択された出力情報3004に関する詳細な出力画面3100図31参照を生成し、ディスプレイに出力する。これにより、出力画面を遷移させる。出力画面3100については、図31を参照して後述する。図31は、本発明の実施の形態のメモリ使用量計算結果の第1の詳細出力例を示す図である。図31に示す出力画面3100は、図30で選択された出力情報3004の詳細情報に係る出力画面である。ここでいう詳細情報とは、出力情報3004に係るスレッドここでは、スレッドIDが1のスレッドについてのフレーム専有メモリ情報である。すなわち出力内容3101及び3102は、それぞれフレーム専有メモリ情報ID301が1及び2のフレーム専有メモリ情報である。なお、図31において、変数FPMIIDは、フレーム専有メモリ情報ID301を示す。変数Methodnameは、メソッド名303を示す。変数Usageは、フレーム専有メモリ使用量304を示す。変数RFSMIIDは、参照先フレーム共有メモリ情報ID305を示す。変数RTSMIIDは、参照先スレッド共有メモリ情報ID306を示す。また、出力画面3100では、参照先スレッド共有メモリ情報ID306を示す情報例えば出力情報3103が選択可能である。ユーザは入力装置5を用いて出力情報3103を選択する。そうすると、メモリ情報出力部325は、選択された出力情報3103に関する詳細な出力画面3200図32参照を生成し、ディスプレイに出力する。出力画面3200については、図32を参照して後述する。図32は、本発明の実施の形態のメモリ使用量計算結果の第2の詳細出力例を示す図である。図32に示す出力画面3200は、図31で選択された出力情報3103の詳細情報に係る出力画面である。ここでいう詳細情報とは、出力情報3103に係る参照先スレッド共有メモリ情報IDここでは、T1についてのスレッド共有メモリ情報である。すなわち出力内容3201は、スレッド共有メモリ情報ID501がT1のスレッド共有メモリ情報である。なお、図32において、変数TSMI_IDは、スレッド共有メモリ情報ID501を示す。変数Addressは、アドレス502を示す。変数Classnameは、クラス名503を示す。変数Usageは、スレッド共有メモリ使用量504を示す。変数RFSMI_IDは、参照先フレーム共有メモリ情報ID505を示す。変数RTSMI_IDは、参照先スレッド共有メモリ情報ID506を示す。また、出力画面3200では、参照先フレーム共有メモリ情報ID505を示す情報例えば出力情報3202及びアドレス502を示す情報例えば出力情報3203が選択可能である。ユーザは入力装置5を用いて出力情報3202、3203を選択する。そうすると、メモリ情報出力部325は、選択された出力情報3202、3203に関する詳細な出力画面3300、3400を生成し、ディスプレイに出力する。出力画面3300、3400については、それぞれ図33、図34を参照して後述する。図33は、本発明の実施の形態のメモリ使用量計算結果の第3の詳細出力例を示す図である。図33に示す出力画面3300は、図32で選択された出力情報3202の詳細情報に係る出力画面である。ここでいう詳細情報とは、出力情報3202に係る参照先フレーム共有メモリ情報IDここでは、F2についてのフレーム共有メモリ情報である。すなわち出力内容3301は、フレーム共有メモリ情報ID401がF2のフレーム共有メモリ情報である。なお、図33において、変数FSMI_IDは、フレーム共有メモリ情報ID401を示す。変数Addressは、アドレス402を示す。変数Classnameは、クラス名403を示す。変数Usageは、フレーム共有メモリ使用量404を示す。変数RFSMI_IDは、参照先フレーム共有メモリ情報ID405を示す。変数RTSMI_IDは、参照先スレッド共有メモリ情報ID406を示す。また、出力画面3300では、クラス名を示す情報例えば出力情報3302が選択可能である。ユーザは入力装置5を用いて出力情報3302を選択する。そうすると、メモリ情報出力部325は、選択された出力情報3302に関する詳細な出力画面3500図35参照を生成し、ディスプレイに出力する。出力画面3500については、図35を用いて後述する。図34は、本発明の実施の形態のメモリ使用量計算結果の第4の詳細出力例を示す図である。図34に示す出力画面3400は、図32で選択された出力情報3203の詳細情報に係る出力画面である。ここでいう詳細情報とは、出力情報3203に係るアドレスに対するオブジェクト参照である。図35は、本発明の実施の形態のメモリ使用量計算結果の第5の詳細出力例を示す図である。図35に示す出力画面3500は、図33で選択された出力情報3302の詳細情報に係る出力画面である。ここでいう詳細情報とは、出力情報3302に係るクラス名に対するオブジェクト参照である。図36は、本発明の実施の形態のメモリ解放量計算結果の出力例を示す図である。メモリ情報出力部325図1参照は、メモリ使用量計算部324による計算結果に基づいて、例えば出力画面3600を生成し、ディスプレイ出力装置6に出力する。なお、ログデータとして出力してもよい。図36に示す出力画面3600は、図28に示す各スレッドを終了させた場合のメモリ解放量の計算結果に対応する。すなわち出力内容3601、3602及び3603は、それぞれスレッドID2801で示す複数スレッドを終了させた場合のスレッド専有メモリ解放量2802、スレッド共有メモリ解放量2803及び総メモリ解放量2804を、メモリ解放量に基づいて順位付けしてソートした情報である。なお、図30において、変数Rankは順位を示す。変数TIDは、スレッドIDを示す。変数Releaseはメモリ解放量を示す。変数TotalReleaseは、メモリ解放量の合計値を示す。変数Numberofcombinationsは、複数スレッドの組み合わせの数を示す。変数AverageReleaseは、メモリ解放量の平均値、すなわち複数スレッドの組み合わせ1つ当りのメモリ解放量を示す。以上説明してきたように、本発明の実施の形態のメモリ情報出力部325は、メモリ使用量計算部324の計算結果を出力することができる。これにより、計算結果を利用してスレッドを監視することができる。例えば、スレッドのメモリ使用量に応じて流量を制御できる。また、計算結果を利用してスレッドを制御することができる。例えば、メモリ使用量が多いスレッドを特定し、特定されたスレッドの実行をキャンセルすることによって、メモリを解放する。これにより、メモリ不足によるシステムの全体ダウンを効率的に抑止できる。なお、本発明の実施の形態では、本発明を、スレッドで実行している処理のメモリ使用量メモリ解放量の計算に適用した場合について説明してきたが、本発明はこの場合に限らず、これ以外の処理にも適用することができる。例えば、リソースのように参照関係を構築するものを利用する全ての処理に適用することができる。広義にはプログラムの処理を含み、狭義には、スレッドで実行している処理、プロセスで実行している処理及びCPUで実行している処理等も含む。同様に、使用量解放量を計算するリソースとして、参照関係を構築するもの全てを適用することができる。広義には、データ構造、モジュール及びライブラリを含み、狭義にはオブジェクト、メモリ及びファイルディスクリプタ等も含む。以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。