(57)【特許請求の範囲】
【請求項１】
ソフトウェアプラットフォーム上で動作する測定対象モジュールが使用するメモリ消費量を測定するコンピュータによって実行されるメモリ消費量測定方法であって、
前記ソフトウェアプラットフォームを起動し、当該ソフトウェアプラットフォーム上で前記測定対象モジュールと指定された量のメモリを確保するメモリ確保モジュールを動作させるステップと、
前記メモリ確保モジュールにより前記指定された量のメモリが確保された後の前記ソフトウェアプラットフォームの状態を判定するステップと、
前記指定された量を変化させて前記メモリ確保モジュールにメモリを確保させ、前記ソフトウェアプラットフォームの状態が正常であった場合のうち最大の前記指定された量を最大メモリ確保量として取得するステップと、
前記ソフトウェアプラットフォームのメモリ量から前記最大メモリ確保量を引いて前記測定対象モジュールのメモリ消費量を算出するステップと、
を有することを特徴とするメモリ消費量測定方法。
【請求項２】
前記取得するステップは、前記指定された量の初期値を０あるいは前記ソフトウェアプラットフォームの状態が正常となる値とし、測定したいメモリ消費量の粒度に応じて前記指定された量を大きくしていき、前記ソフトウェアプラットフォームの状態が異常となる直前の前記指定された量を最大メモリ確保量とすることを特徴とする請求項１記載のメモリ消費量測定方法。
【請求項３】
前記取得するステップは、前記指定された量の初期値を前記ソフトウェアプラットフォームのメモリ量と同じあるいは前記ソフトウェアプラットフォームの状態が異常となる値とし、測定したいメモリ消費量の粒度に応じて前記指定された量を小さくしていき、前記ソフトウェアプラットフォームの状態が正常となったときの前記指定された量を最大メモリ確保量とすることを特徴とする請求項１記載のメモリ消費量測定方法。
【請求項４】
前記動作させるステップは、待機時間を指定して前記メモリ確保モジュールを動作させるものであって、
前記メモリ確保モジュールは、前記測定対象モジュールが動作してから前記待機時間経過した後で前記指定された量のメモリを確保することを特徴とする請求項１乃至３のいずれかに記載のメモリ消費量測定方法。
【請求項５】
前記メモリ確保モジュールにメモリの確保を指示するステップを有し、
前記メモリ確保モジュールは、前記指示を受けたときに前記指定された量のメモリを確保することを特徴とする請求項１乃至３のいずれかに記載のメモリ消費量測定方法。
【請求項６】
請求項１乃至５のいずれかに記載のメモリ消費量測定方法をコンピュータに実行させることを特徴とするメモリ消費量測定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムのメモリ消費量を測定する技術に関する。
【背景技術】
【０００２】
既存の技術として、図９に示すように、あるハードウェア９に起動したソフトウェアプラットフォーム９１上で１つ以上のプログラムモジュール９２Ａ，９２Ｂ，・・を動作させることがある。例えば、Ｊａｖａ（登録商標）は、ＪａｖａＶＭというプラットフォーム上でＪａｖａプログラムを動作させる。ｖｍｗａｒｅ（登録商標）やｘｅｎ（登録商標）などの仮想化技術を利用したプログラムも、仮想的なマシンとなるソフトウェアプラットフォーム上で、様々なプログラムモジュールを動作させるものである。また、Ｏｐｅｎ  Ｓｅｒｖｉｃｅｓ  Ｇａｔｅｗａｙ  ｉｎｉｔｉａｔｉｖｅ（ＯＳＧｉ）は、ソフトウェアプラットフォームとしてＪａｖａＶＭを利用してＯＳＧｉフレームワークを動作させ、その上でＯＳＧｉバンドルと呼ばれるＪａｖａプログラムモジュールを複数動作させるものである。
【０００３】
ソフトウェアプラットフォームは一般的に起動オプションとしてヒープメモリ量、もしくは最大のヒープメモリ量を設定可能である。ヒープメモリとは、ソフトウェアプラットフォームがプログラムモジュールを動作させるために用意するメモリ領域である。例えば、ソフトウェアプラットフォームがＪａｖａＶＭである場合、Ｊａｖａプログラムが生成するインスタンスを確保する為にヒープメモリが利用される。このヒープメモリをどのような値として確保するかは、ソフトウェアプラットフォームを動作させるハードウェア／ＯＳの設計に関わるため、あるプログラムモジュールを利用するために必要なヒープメモリの大きさを測定することは重要である。
【０００４】
ここで、ソフトウェアプラットフォーム上で動作するプログラムモジュールＡが正常動作するために最小限必要なヒープメモリ量を測定したいとする。測定するヒープメモリ量には、（ａ）ある定常状態においてプログラムモジュールＡが必要とするヒープメモリ量、（ｂ）プログラムモジュールＡにある処理を行わせた際に（ピークとして）必要とするヒープメモリ量、が存在する。
【０００５】
既存のヒープメモリ測定手段として、ソフトウェアプラットフォームに監視ツール向けインタフェースが規定・実装されている場合がある。例えば、ソフトウェアプラットフォームとしてＪａｖａＶＭを利用する場合、ＪＶＭＰＩとして監視ツール向けインタフェースが規定されている（非特許文献１参照）。その場合はそのインタフェースを利用した監視ツールにより測定することができる。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】"Java Virtual Machine Profiler Interface(JVMPI)"，［ｏｎｌｉｎｅ］，［平成２２年５月１７日検索］，インターネット〈ＵＲＬ：http://java.sun.com/j2se/1.3/ja/docs/ja/guide/jvmpi/jvmpi.html〉
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記のようなインタフェースが存在しない、あるいは存在しても実装されていない場合が存在する。例えば、ソフトウェアプラットフォームとして組み込み機器上で組み込み向けＪａｖａＶＭを利用する場合、小型化のために監視ツール向けインタフェースが実装されていないことが多い。
【０００８】
また、測定対象プログラムモジュール自身に手を加えることが可能である場合は、任意の時点で消費ヒープメモリ量を出力させることができるが、測定対象プログラムモジュールには手を加えることができない場合が多く、このような手段は利用できない。
【０００９】
このように、ヒープメモリの消費量を測定する手段に制限がある場合、以下の消費ヒープメモリ量を測定する方法が考えられる。
【００１０】
手順１として、ソフトウェアプラットフォームが利用するヒープメモリ量を設定し、ソフトウェアプラットフォームと測定対象のプログラムモジュールＡを起動する。
【００１１】
手順２として、上記（ａ）についての消費ヒープメモリ量を測定する場合は、プログラムモジュールＡを測定対象の定常状態に遷移させ、十分な時間を経過させる。上記（ｂ）についての消費ヒープメモリ量を測定する場合は、プログラムモジュールＡに測定対象の処理を行わせる。
【００１２】
手順３として、上記の手順２が正常に完了するか否か判定し、正常に完了する場合は、ソフトウェアプラットフォームに設定するヒープメモリ量を小さくし、手順１から処理を繰り返す。一方、上記の処理が正常に完了しない場合、ヒープメモリ量を大きくし、手順１から処理を繰り返す。
【００１３】
このように、手順１，２，３を複数回試行し、手順２が正常に完了する最小のヒープメモリ量を求める。求めたヒープメモリ量が目的である（ａ）あるいは（ｂ）のヒープメモリ量である。
【００１４】
しかしながら、上記の方法には以下に示す課題が存在する。
【００１５】
第１に、ソフトウェアプラットフォームに設定できるヒープメモリ量の粒度が測定したい粒度より大きい場合がある。
【００１６】
第２に、上記（ａ）についての消費ヒープメモリ量を測定する場合、定常状態への遷移までにヒープメモリの使用量ピークがあるときは、その使用量ピークを測定したことになる。これを回避するためには、予め十分大きなヒープメモリ量を設定し、測定対象の定常状態へ遷移した後でヒープメモリ量を小さく変更する、動的なヒープメモリ量の設定が必要となるが、通常のソフトウェアプラットフォームでは起動時に静的に設定するものがほとんどである。
【００１７】
本発明は、上記に鑑みてなされたものであり、ソフトウェアプラットフォームの実装に依存せず、細かな粒度で、任意のタイミングにおけるヒープメモリ使用量を測定することを目的とする。
【課題を解決するための手段】
【００１８】
第１の本発明に係るメモリ消費量測定方法は、ソフトウェアプラットフォーム上で動作する測定対象モジュールが使用するメモリ消費量を測定するコンピュータによって実行されるメモリ消費量測定方法であって、前記ソフトウェアプラットフォームを起動し、当該ソフトウェアプラットフォーム上で前記測定対象モジュールと指定された量のメモリを確保するメモリ確保モジュールを動作させるステップと、前記メモリ確保モジュールにより前記指定された量のメモリが確保された後の前記ソフトウェアプラットフォームの状態を判定するステップと、前記指定された量を変化させて前記メモリ確保モジュールにメモリを確保させ、前記ソフトウェアプラットフォームの状態が正常であった場合のうち最大の前記指定された量を最大メモリ確保量として取得するステップと、前記ソフトウェアプラットフォームのメモリ量から前記最大メモリ確保量を引いて前記測定対象モジュールのメモリ消費量を算出するステップと、を有することを特徴とする。
【００１９】
第２の本発明に係るメモリ消費量測定プログラムは、上記メモリ消費量測定方法をコンピュータに実行させることを特徴とする。
【発明の効果】
【００２０】
本発明によれば、ソフトウェアプラットフォームの実装に依存せず、細かな粒度で、任意のタイミングにおけるヒープメモリ使用量を測定することができる。
【図面の簡単な説明】
【００２１】
【図１】本実施の形態におけるメモリ消費量測定装置の構成を示す機能ブロック図である。
【図２】メモリ消費量を測定する処理の流れを示すフローチャートである。
【図３】メモリ消費量の算出を説明する概略図である。
【図４】メモリ消費量を測定する別の処理の流れの一部を示すフローチャートである。
【図５】メモリ消費量を測定するさらに別の処理の流れの一部を示すフローチャートである。
【図６】実施例１のソフトウェアプラットフォームおよび各プログラムを示す概略図である。
【図７】実施例２のソフトウェアプラットフォームおよび各プログラムを示す概略図である。
【図８】実施例３のソフトウェアプラットフォームおよび各プログラムを示す概略図である。
【図９】ソフトウェアプラットフォームとその上で動作するプログラムモジュールを示す概略図である。
【発明を実施するための形態】
【００２２】
以下、本発明の実施の形態について図面を用いて説明する。
【００２３】
図１は、本実施の形態におけるメモリ消費量測定装置の構成を示す機能ブロック図である。
【００２４】
同図に示すメモリ消費量測定装置１は、起動部１１、設定部１２、操作要求部１３、通信部１４、停止部１５、判定部１６、記憶部１７、計算部１８、および出力部１９を備える。メモリ消費量測定装置１が備える各部は、演算処理装置、記憶装置等を備えたコンピュータにより構成して、各部の処理がプログラムによって実行されるものとしてもよい。このプログラムはメモリ消費量測定装置１が備える記憶装置に記憶されており、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。以下、各部について説明する。
【００２５】
起動部１１は、測定対象プログラム２１を動作させるソフトウェアプラットフォーム２、ソフトウェアプラットフォーム２上で動作するメモリ確保プログラム２２を起動する。起動部１１は、ヒープメモリ量Ｘを指定してソフトウェアプラットフォーム２を、メモリ確保量Ｙを指定してメモリ確保プログラム２２を起動する。なお、ソフトウェアプラットフォーム２は、メモリ消費量測定装置１内で動作させてもよいし、別のコンピュータ上で動作させてもよい。また、実際に確保されるヒープメモリ量は、設定したヒープメモリ量Ｘと同値になっているものとする。そのようなヒープメモリ量Ｘの値は事前に測定し分かっているものとする。以下、ヒープメモリ量Ｘに関しては同様である。
【００２６】
設定部１２は、ヒープメモリ量Ｘ、メモリ確保量Ｙなどの設定を保持する。起動部１１は、ソフトウェアプラットフォーム２、メモリ確保プログラム２２を起動する際に、設定部１２を参照してヒープメモリ量Ｘ、メモリ確保量Ｙを得る。
【００２７】
操作要求部１３は、測定対象プログラム２１が測定対象の状態となるために必要な操作を要求する。操作の要求は、通信部１４により、測定対象プログラム２１を操作する外部ツール３に送信される。あるいは、出力部１９により、ユーザ４に操作内容を提示し、ユーザ４に測定対象プログラム２１を操作させる。
【００２８】
通信部１４は、操作要求部１３が要求する操作を外部ツール３へ送信する。あるいは、ソフトウェアプラットフォーム２上で動作するプログラムとの通信を行う。
【００２９】
停止部１５は、測定対象プログラム２１が測定対象の状態に遷移し、ソフトウェアプラットフォーム２の状態が得られたときに、ソフトウェアプラットフォーム２を停止する。ソフトウェアプラットフォーム２の停止に伴い、測定対象プログラム２１とメモリ確保プログラム２２も停止する。
【００３０】
判定部１６は、測定対象プログラム２１が測定対象の状態に遷移したとき、ソフトウェアプラットフォーム２が正常な状態か異常な状態か判定する。異常な状態とは、例えば、メモリ不足を示すＯｕｔ  ｏｆ  Ｍｅｍｏｒｙ  Ｅｒｒｏｒが出力されている状態である。
【００３１】
記憶部１７は、ヒープメモリ量Ｘ、メモリ確保量Ｙなどの設定と判定部１６の判定結果を記憶する。
【００３２】
計算部１８は、記憶部１７からヒープメモリ量Ｘ、メモリ確保量Ｙ、および判定結果を読み出し、測定対象プログラム２１が使用するヒープメモリ量を計算する。具体的には、測定対象プログラム２１が測定対象の状態に遷移したときに、ソフトウェアプラットフォーム２が正常な状態である最大のメモリ確保量Ｙmaxを求め、ヒープメモリ量Ｘからメモリ確保量Ｙmaxを引くことで、測定対象プログラム２１が使用するヒープメモリ量を計算する。
【００３３】
出力部１９は、計算部１８が計算したヒープメモリ量やユーザに対する指示の表示や出力を行う。
【００３４】
続いて、メモリ確保プログラム２２について説明する。
【００３５】
メモリ確保プログラム２２は、コンピュータを起動部２２１、メモリ確保部２２２、および設定部２２３として機能させる。起動部２２１は、測定対象プログラム２１をソフトウェアプラットフォーム２上で起動する。メモリ確保部２２２は、設定部２２３の保持する設定に従って、ヒープメモリを確保する。設定部２２３は、起動時に指定されたオプションなどの設定を保持する。なお、メモリ確保プログラム２２が測定対象プログラム２１を起動せず、別の方法により測定対象プログラム２１を起動するものでもよい。
【００３６】
次に、処理の流れについて説明する。
【００３７】
図２は、測定対象プログラム２１のメモリ消費量を測定する処理の流れを示すフローチャートである。
【００３８】
まず、設定部１２において、ソフトウェアプラットフォーム２に設定するヒープメモリ量Ｘとメモリ確保プログラム２２に設定するメモリ確保量Ｙを決定する（ステップＳ１０１）。ヒープメモリ量Ｘの初期値には適切な値を指定しておく。メモリ確保量Ｙの初期値は０とする。なお、メモリ確保量Ｙの初期値は、ソフトウェアプラットフォーム２が正常に動作する値であれば０に限るものではない。
【００３９】
続いて、起動部１１が、ヒープメモリ量Ｘを指定してソフトウェアプラットフォーム２を起動し、メモリ確保量Ｙを指定してメモリ確保プログラム２２を実行する（ステップＳ１０２）。
【００４０】
続いて、メモリ確保プログラム２２により機能するメモリ確保部２２２は、メモリ確保量Ｙに基づいて確保すべき配列やインスタンスの量を計算し、ヒープメモリを確保する（ステップＳ１０３）。
【００４１】
そして、メモリ確保プログラム２２により機能する起動部２２１が測定対象プログラム２１を起動する（ステップＳ１０４）。
【００４２】
その後、操作要求部１３は、測定対象プログラム２１が測定対象の状態となるために必要な操作を要求し、測定対象プログラム２１を測定対象の状態へ遷移させる（ステップＳ１０５）。具体的には、操作要求を通信部１４により外部ツール３へ送信する、あるいは、操作要求を出力部１９によりユーザ４へ提示する。そして、外部ツール３あるいはユーザ４が測定対象プログラム２１を操作して測定対象の状態へ遷移させる。
【００４３】
測定対象プログラム２１が測定対象の状態へ遷移した後、判定部１６がソフトウェアプラットフォーム２が正常な状態であるか異常な状態であるか判定する（ステップＳ１０６）。
【００４４】
そして、ヒープメモリ量Ｘ、メモリ確保量Ｙと判定部１６の判定結果を記憶部１７に記録し（ステップＳ１０７）、停止部１５がソフトウェアプラットフォーム２を停止する（ステップＳ１０８）。
【００４５】
そして、判定部１６は、メモリ消費量を求める次の処理を実行する。
【００４６】
まず、判定結果が正常であるか否か判定し（ステップＳ１０９）、判定結果が正常である場合、メモリ確保プログラム２２に設定するメモリ確保量Ｙをより大きな値に設定する（ステップＳ１１０）。測定したい粒度に応じて、メモリ確保量Ｙをより大きな値にし、設定部１２が再設定した値を保持する。そして、ステップＳ１０２に戻り、新たなメモリ確保量Ｙを用いてソフトウェアプラットフォーム２、メモリ確保プログラム２２を起動する。なお、メモリ確保量Ｙをより大きな値に変化させる刻み幅は、必ずしも一定である必要はなく、動的に変化させてもよい。
【００４７】
判定結果が異常の場合、メモリ確保量Ｙが０であるか否か判定する（ステップＳ１１１）。メモリ確保量Ｙが０である場合、ソフトウェアプラットフォーム２に設定したヒープメモリ量Ｘが不足しているので、ヒープメモリ量Ｘをより大きな値に設定し（ステップＳ１１２）、ステップＳ１０２に戻り、新たなヒープメモリ量Ｘを用いてソフトウェアプラットフォーム２、メモリ確保プログラム２２を起動する。
【００４８】
メモリ確保量Ｙが０でない場合、計算部１８が、前回の判定結果が正常である場合のメモリ確保量ＹをＹmaxとして測定対象プログラム２１が使用するヒープメモリ量を計算し（ステップＳ１１３）、出力部１９がその結果を出力あるいは表示する（ステップＳ１１４）。図３に示すように、測定対象プログラム２１が使用するヒープメモリ量は、ソフトウェアプラットフォーム２に設定したヒープメモリ量Ｘからメモリ確保量Ｙmaxを引くことで計算できる。
【００４９】
なお、メモリ確保量Ｙの初期値をヒープメモリ量Ｘと同じ、あるいは、ソフトウェアプラットフォーム２が異常となる値に設定し、ソフトウェアプラットフォーム２が正常に動作するまでメモリ確保量Ｙを小さくしつつ上記ステップＳ１０２〜Ｓ１０８を繰り返し、ソフトウェアプラットフォーム２が正常に動作したときのメモリ確保量Ｙを求めて、その時のメモリ確保量ＹをＹmaxとして測定対象プログラム２１が使用するヒープメモリ量を計算してもよい。
【００５０】
次に、ヒープメモリを確保するタイミングが異なる別の処理の流れについて説明する。ここで説明する処理は、図２で示したものに対して、メモリ確保部２２２がヒープメモリを確保するタイミングが異なる。以下、図２との差異点について説明する。
【００５１】
図４は、測定対象プログラム２１のメモリ消費量を測定する別の処理の流れの一部を示すフローチャートである。
【００５２】
図２のステップＳ１０２の処理の後、メモリ確保部２２２は、一定時間Ｔ待機するタイマーを起動する（ステップＳ２０１）。一定時間Ｔは、設定部１２において設定されており、図２のステップＳ１０２においてメモリ確保プログラム２２を実行する際に指定される。
【００５３】
続いて、図２と同様に、測定対象プログラム２１を起動し（ステップＳ２０２）、測定対象プログラム２１を測定対象の状態へ遷移させる（ステップＳ２０３）。
【００５４】
タイマーが一定時間Ｔに達すると、メモリ確保部２２２はヒープメモリを確保する（ステップＳ２０４）。
【００５５】
その後、図２のステップＳ１０６へ進み、測定対象プログラム２１が使用するヒープメモリ量を計算する。なお、メモリ確保プログラム２２を再起動するときは、一定時間Ｔの値は変化させない。
【００５６】
次に、ヒープメモリを確保するタイミングが異なるさらに別の処理の流れについて説明する。ここで説明する処理では、メモリ確保部２２２が、メモリ消費量測定装置１の指示により、ヒープメモリを確保する。以下、図２との差異点について説明する。
【００５７】
図５は、測定対象プログラム２１のメモリ消費量を測定するさらに別の処理の流れの一部を示すフローチャートである。
【００５８】
図２のステップＳ１０２の処理の後、測定対象プログラムを起動し（ステップＳ３０１）、測定対象プログラムを測定対象の状態へ遷移させる（ステップＳ３０２）。この段階では、メモリ確保部２２２はヒープメモリの確保を行わない。
【００５９】
メモリ消費量測定装置１の通信部１４がメモリ確保部２２２にメモリ確保の指示を出すと、メモリ確保部２２２はヒープメモリを確保する（ステップＳ３０３）。
【００６０】
その後、図２のステップＳ１０６へ進み、測定対象プログラム２１が使用するヒープメモリ量を計算する。
【００６１】
以上説明したように、本実施の形態によれば、ソフトウェアプラットフォーム２上で、測定対象プログラム２１とともにメモリ確保プログラム２２を動作させ、メモリ確保プログラム２２が確保するメモリ確保量Ｙを変化させて、そのときのソフトウェアプラットフォーム２の状態が正常であるか異常であるかを調べ、正常な状態における最大のメモリ確保量Ｙmaxを測定することにより、ソフトウェアプラットフォーム２のヒープメモリ量Ｘからメモリ確保量Ｙmaxを引くことで、ソフトウェアプラットフォーム２に設定できるヒープメモリ量Ｘの粒度に依存せず、より細かな粒度で測定対象プログラム２１が使用するヒープメモリ量を求めることができる。
【００６２】
本実施の形態によれば、測定対象プログラム２１が所望の状態に遷移した後でメモリ確保プログラム２２がヒープメモリを確保することにより、測定対象プログラム２１の起動から測定対象とする定常状態へ遷移するまでの状態に依存することなく、定常状態での消費ヒープメモリ量を測定することができる。
【００６３】
次に、ソフトウェアプラットフォーム２、測定対象プログラム２１、およびメモリ確保プログラム２２の具体的な３つの実施例について説明する。
【００６４】
［実施例１］
図６は、ソフトウェアプラットフォーム６がＪａｖａＶＭ、測定対象プログラム６１とメモリ確保プログラム６２がＪａｖａプログラムである場合のソフトウェアプラットフォームおよび各プログラムを示す概略図である。メモリ確保プログラム６２は、コンピュータを起動部６２１、メモリ確保部６２２、および設定部６２３として機能させる。
【００６５】
ソフトウェアプラットフォーム６、およびメモリ確保プログラム６２は、図示しないメモリ消費量測定装置１により起動される。メモリ確保プログラム６２は、起動する際にメモリ確保量Ｙを指定され、メモリ確保部６２２は、設定部６２３からメモリ確保量Ｙを読み出し、メモリ確保量Ｙ分のメモリを配列やインスタンスなどの形で確保し続ける。メモリ確保部６２２が確保したヒープメモリは、ＪａｖａＶＭのガベージコレクションの対象とならない。なお、メモリ確保量Ｙと確保するメモリ量（配列の大きさ）との対応関係は、事前に従来手法によって測定し、測定点を一次関数などで内挿することにより、指定されたメモリ確保量Ｙ分のメモリを確保する配列の大きさなどを決定し、より小さな粒度での設定を可能とする。
【００６６】
また、起動部６２１は、測定対象プログラム６１のｍａｉｎメソッドを呼び出すランチャープログラムとする。一般的なＪａｖａプログラムは必ずｍａｉｎメソッドを有する。メモリ確保プログラム６２は、メモリ確保部６２２が所定のメモリ確保量Ｙを確保した後、自分自身は動作したまま、測定対象プログラム６１のｍａｉｎメソッドを呼び出すことにより、測定対象プログラム６１を起動する。
【００６７】
［実施例２］
図７は、ソフトウェアプラットフォーム７がＪａｖａＶＭ、測定対象プログラム７１がＯＳＧｉバンドルプログラムであり、メモリ確保プログラム７２がＯＳＧｉフレームワーク７３を起動するＪａｖａプログラムである場合のソフトウェアプラットフォームおよび各プログラムを示す概略図である。メモリ確保プログラム７２は、コンピュータを起動部７２１、メモリ確保部７２２、および設定部７２３として機能させる。
【００６８】
ソフトウェアプラットフォーム７、およびメモリ確保プログラム７２は、図示しないメモリ消費量測定装置１により起動される。メモリ確保プログラム７２は、起動後所定のメモリ確保量Ｙを確保した後、自分自身は動作したまま、ＯＳＧｉフレームワーク７３のｍａｉｎメソッドを呼びＯＳＧｉフレームワーク７３を起動する。そして、ＯＳＧｉフレームワーク７３は、ＯＳＧｉバンドルプログラムである測定対象プログラム７１を起動する。なお、複数の測定対象プログラム７１を起動させてもよい。
【００６９】
この実施例では、測定対象プログラム７１とＯＳＧｉフレームワーク７３が消費するヒープメモリ量を合算して測定できる。
【００７０】
［実施例３］
図８は、ソフトウェアプラットフォーム８がＪａｖａＶＭ、測定対象プログラム８１とメモリ確保プログラム８２がＯＳＧｉバンドルプログラムである場合のソフトウェアプラットフォームおよび各プログラムを示す概略図である。ＯＳＧｉフレームワーク８３が測定対象プログラム８１とメモリ確保プログラム８２を起動し、メモリ確保プログラム８２は、コンピュータをメモリ確保部８２１、および設定部８２２として機能させる。
【００７１】
図示しないメモリ消費量測定装置１が、ソフトウェアプラットフォーム８とＯＳＧｉフレームワーク８３を起動する。メモリ消費量測定装置１は、ＯＳＧｉフレームワーク８３と通信することで、測定対象プログラム８１、メモリ確保プログラム８２を任意のタイミングで起動することができる。測定対象プログラム８１が所望の状態に遷移した後でメモリ確保プログラム８２を起動しメモリを確保させてもよいし、メモリ確保プログラム８２を起動しメモリを確保したあとで測定対象プログラム８１を起動させてもよい。
【００７２】
なお、事前にＯＳＧｉフレームワーク８３のみが消費するヒープメモリ量を測定することで、ＯＳＧｉフレームワーク８３が表紙するヒープメモリ量を除いた測定対象プログラム８１の消費するヒープメモリ量を測定することができる。
【符号の説明】
【００７３】
１…メモリ消費量測定装置
１１…起動部
１２…設定部
１３…操作要求部
１４…通信部
１５…停止部
１６…判定部
１７…記憶部
１８…計算部
１９…出力部
２…ソフトウェアプラットフォーム
２１…測定対象プログラム
２２…メモリ確保プログラム
２２１…起動部
２２２…メモリ確保部
２２３…設定部
３…外部ツール
４…ユーザ
６，７，８…ソフトウェアプラットフォーム
６１，７１，８１…測定対象プログラム
６２，７２，８３…メモリ確保プログラム
６２１，７２１…起動部
６２２，７２２，８２１…メモリ確保部
６２３，７２３，８２２…設定部
７３，８３…ＯＳＧｉフレームワーク
９…ハードウェア
９１…ソフトウェアプラットフォーム
９２Ａ，９２Ｂ…プログラムモジュール
【図１】
0005478368.tif 000002
【図２】
0005478368.tif 000003
【図３】
0005478368.tif 000004
【図４】
0005478368.tif 000005
【図５】
0005478368.tif 000006
【図６】
0005478368.tif 000007
【図７】
0005478368.tif 000008
【図８】
0005478368.tif 000009
【図９】
0005478368.tif 000010