(57)【要約】【課題】コンピュータアプリケーションのメモリ使用状況を最適化する方法を提供すること。【解決手段】コンピュータアプリケーションのメモリ使用状況を最適化する方法を提供する。タイミング情報を含むメモリ使用状況データ（７２０）を受信する（２１５）。メモリ使用状況データ（７２０）グラフ表示（７４０）を生成する（２２５）。少なくとも１つのヒープパラメータを受信する（２３０）。メモリ使用状況シミュレーションが、メモリ使用状況データ（７２０）およびとヒープパラメータ（７２５）に基づいて実行される（２４５）。【選択図】図７
2004005486.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータアプリケーションのメモリ使用状況を最適化する方法であって、
ａ）タイミング情報を含むアプリケーションメモリ使用状況データを受信することと、
ｂ）前記アプリケーションメモリ使用状況データのグラフ表示を生成することと、
ｃ）少なくとも１つのヒープパラメータを受信することと、
ｄ）前記アプリケーションメモリ使用状況データおよび前記ヒープパラメータに基づいてメモリ使用状況シミュレーションを行うことと、
を含む方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明の各種実施形態は、コンピュータプログラミングの分野に関する。
【０００２】
【従来の技術】
近代の多くのプログラミング言語は、ランタイムでアプリケーションによって作成されるオブジェクトまたは他のデータ構造インスタンスにメモリを動的に割り当てる機能を提供する。言語によっては、ＣおよびＣ＋＋等、このように動的に割り当てられたメモリを再度請求する明示的なユーザアクションが必要であるものもあれば、ＪａｖａおよびＣ＃等、動的に割り当てられたメモリの自動再請求が可能な、メモリ管理のためのサポートを提供するものもある。たとえば、Ｊａｖａプログラミング言語は、Ｊａｖａ仮想マシン（ＪＶＭ）ヒープ内でオブジェクトを割り当てる。オブジェクトがもはや必要ではない場合、ヒープから明示的に解放または除去されない。使用されないオブジェクトを除去するために、Ｊａｖａは、本明細書では“ガーベッジ”と呼ぶ、動的に割り当てられた、参照されないオブジェクトを集める組み込み機能を提供する。自動メモリ管理機能は、一般に、“ガーベッジコレクション”と呼ばれる。
【０００３】
ガーベッジコレクションは、メモリがもはや必要ない場合にそのメモリを解放し再請求する機能を提供し、ひいてはより効率的なアプリケーションの作成を可能にするパラダイムを提供する。しかし、ガーベッジコレクション自体は、パフォーマンスオーバヘッドを多くのＪａｖａアプリケーションに付加する。特に、かなりのシステムメモリ資源を利用するＪａｖａエンタープライズアプリケーションは、処理中の作業負荷が増大するにつれて、生成するガーベッジコレクションアクティビティに基づいてパフォーマンスまたは容量を低下させ得る。これにより、Ｊａｖａエンタープライズアプリケーションの動作が低速になり、かつ時には信頼性がなくなる。
【０００４】
ガーベッジコレクションオーバヘッドの直接的な原因がソフトウェアの欠陥である状況を除き、最適ではないヒープメモリの使用状況およびガーベッジコレクタへの不正確なポリシー選定が、ガーベッジコレクションオーバヘッド増大の主な原因である。メモリ使用状況を最適にするようにヒープを構成しガーベッジコレクタポリシーを微調整するプロセスは“ガーベッジコレクタ調整”と呼ばれる。
【０００５】
ガーベッジコレクタ調整は、ヒープメモリ使用状況を最適化し、ガーベッジコレクションに費やされる総時間を低減することによって、特定のエンタープライズアプリケーションに非常に大きなパフォーマンスペイオフ（たとえば、１００パーセントまたはそれよりもかなり大きい）をもたらすことができる。これにより、Ｊａｖａや同様のプログラミング言語で書かれたアプリケーションの予測可能でありかつ最適なパフォーマンスを達成することが可能になる。
【０００６】
現在のガーベッジコレクションツールは、Ｊａｖａプロファイリングまたはモニタリングソリューションの一部として統合される。これらツールは通常、刊行されたＪａｖａインタフェースを使用してヒープ容量（ｈｅａｐ　ｃａｐａｃｉｔｙ）を測定すること、あるいはＪＶＭの実装で利用可能なガーベッジコレクション追跡オプションによる。これらツールは、ガーベッジコレクションの最適化についていくらかの指針をユーザに提供するが、いくつかの欠点がある。最も重要なことに、これらツールは、実際の最適なガーベッジコレクションパラメータについていずれの指針も提供せず、後述する高価なプロセスの軽減も提供しない。
【０００７】
図１は、従来技術によるガーベッジコレクション調整プロセス１００を示すフローチャート図である。ステップ１０５において、ガーベッジコレクションの構成に使用されるメモリ割り当て挙動追跡が、インタプリタに対して指定される。ステップ１１０において、アプリケーションが書かれたプログラミング言語についてアプリケーションが実行される。ステップ１１５において、追跡データが解析される。ステップ１２０において、所望の結果が達成されたか否かが判定される。達成された場合、プロセス１００は終了する。代替として、所望の結果が達成されなかった場合、ステップ１２５に示すように、ヒープパラメータが解析に基づいて調整され、プロセス１００はステップ１０５に戻る。
【０００８】
通常、ガーベッジコレクションは、ユーザ入力もしくはデフォルトのパラメータを必要とする。どのパラメータを挿入するかを決定するために、ユーザはアプリケーションを実行し、Ｊａｖａヒープ挙動の結果を解析しなければならない。たとえば、ユーザは、アプリケーションの実行を行って、ヒープ挙動データを収集し結果を解析することができる。全体のガーベッジコレクション時間は短い場合もあるが、ガーベッジコレクションには、エンタープライズアプリケーション等大型アプリケーションの全実行時間の相当量を占め得る。たとえば、大型アプリケーションでのガーベッジコレクションは、全実行時間の大方を占める。アプリケーションの実行が完了すると、ヒープ挙動データが解析され、この解析に基づいて新しいパラメータがユーザによって指定される。このプロセスは、所望のパラメータが入力されるまで繰り返される。
【０００９】
さらに、ガーベッジコレクションを最適化するために、ユーザは、アプリケーションを変更する都度、またはプラットフォームを変更する都度、新しいパラメータを決定しなければならない。アプリケーションの実行、ヒープ挙動データの収集、および結果の解析に費やされる時間は相当になる可能性があり、アプリケーション実行コストにかなりのコストを生じさせることになる。
【００１０】
解析中のアプリケーションがオフサイトで診断される場合に、さらなる問題が生じる。通常、特に第三者のコンピュータシステムにアプリケーションをインストールするのはあまりに面倒である。さらに、アプリケーションの所有者は、プライバシーに対する懸念により第三者のコンピュータシステムにアプリケーションをインストールしたくない場合がある。この場合、第三者はユーザにどのパラメータを入力するか教えてから、アプリケーションが実行されヒープ挙動データが収集されるまで待たなければならない。これは、アプリケーション所有者の計算資源を消費し、アプリケーションの実行に直接関連するコストを越えてさらなるコストを課すことになり得る（たとえば、ネットワークダウンタイムおよび他のアプリケーションのパフォーマンス低下）。
【００１１】
【発明が解決しようとする課題】
本発明の目的は、コンピュータアプリケーションのメモリ使用状況を最適化する方法を提供することである。
【００１２】
【課題を解決するための手段】
タイミング情報を含むメモリ使用状況データを受信する。メモリ使用状況データのグラフ表示を生成する。少なくとも１つのヒープパラメータを受信する。メモリ使用状況データおよびヒープパラメータに基づいてメモリ使用状況シミュレーションを実行する。
【００１３】
本明細書に組み込まれ、本発明の一部をなす添付図面は、本発明の実施形態を示し、説明とともに本発明の原理を説明する役割を果たす。
【００１４】
【発明の実施の形態】
次に、本発明の好ましい実施形態を詳細に参照し、本発明の好ましい実施形態の例を添付図面に示す。本発明について好ましい実施形態と併せて説明するが、本発明をこれら実施形態に限定する意図はないことを理解されよう。本発明は反対に、併記の特許請求の範囲によって定義される本発明の精神および範囲内に含めることができる代替、変更、および同等物を網羅するものと意図される。さらに、以下の本発明の詳細な説明には、本発明の完全な理解を提供するために多くの具体的な詳細を記載する。しかし、本発明はこれらの具体的な詳細なしで実施し得ることが当業者には理解されよう。他の場合、本発明の態様を不必要に不明瞭にしないように、周知の方法、手順、コンポーネント、構造、および装置については詳細に説明しない。
【００１５】
図２Ａおよび図２Ｂは、本発明の実施形態によるプログラミング言語メモリ使用状況をシミュレートするプロセス２００を示すフローチャート図である。一実施形態では、プロセス２００は、コンピュータが読み取り可能でありかつ実行可能な命令の制御下で、プロセッサおよび電子コンポーネントによって実行される。コンピュータ読み取り可能でありかつ実行可能な命令は、たとえば、コンピュータ使用可能揮発性メモリおよび／またはコンピュータ使用可能不揮発性メモリ等のデータ記憶機構に常駐する。しかし、コンピュータ読み取り可能でありかつ実行可能な命令は、任意のタイプのコンピュータ読み取り可能媒体に常駐し得る。特定のステップをプロセス２００に開示するが、このようなステップは例示的なものである。すなわち、本発明の実施形態は、他の各種ステップまたは図２Ａおよび図２Ｂに記載のステップを変形したものの実行によく適している。
【００１６】
図２Ａのステップ２０５において、ガーベッジコレクションの構成に使用されるメモリ割り当て挙動追跡がインタプリタに対して指定される。一実施形態では、インタプリタはＪａｖａ仮想マシン（ＪＶＭ）である。メモリ割り当て挙動追跡は、オフラインシミュレーションの実行に必要かつ十分であり、また実行中のアプリケーションへの侵入を最小にして収集することのできる情報を捕捉するメカニズムである。一実施形態では、メモリ割り当て挙動追跡は、ＨＰ−ＵＸにおける−Ｘｖｅｒｂｏｓｅｇｃオプションである。一実施形態では、メモリ割り当て挙動追跡データは、ガーベッジの収集に関連する情報を含み、本明細書ではメモリ使用状況データとも呼ばれる。明瞭にするために、本明細書では、メモリ使用状況データは、ガーベッジコレクションデータ、メモリ割り当て挙動追跡、および詳細なガーベッジコレクション追跡データとも呼ばれる。概して、メモリ使用状況データは、ガーベッジコレクション中に発生するイベントおよび動作に関連する詳細な情報を含む表形式のファイルである。一実施形態では、メモリ使用状況データとしては以下が挙げられるが、これらに限定されない。
【００１７】
・ガーベッジコレクションが行われた理由
・ガーベッジコレクションにかかる時間
・ガーベッジコレクションが行われた時間
・この特定のガーベッジコレクションによって収集されたメモリの量（たとえば、この特定のガーベッジコレクションがどの程度効率的であったか）
・ヒープ容量についての詳細な情報
・ガーベッジコレクション前に使用された個々の各セグメントの部分
・ガーベッジコレクション後に使用された個々の各セグメントの部分
・“ｏｌｄ”とみなすに適したオブジェクトの年齢
一実施形態では、アプリケーションがＪａｖａベースの場合、メモリ使用状況データは、ＪＶＭガーベッジコレクタにおいて−Ｘｖｅｒｂｏｓｅｇｃオプションを選択することによって生成される。
【００１８】
ステップ２１０において、アプリケーションが書かれたプログラミング言語についてアプリケーションが実行される。一実施形態では、アプリケーションはエンタープライズアプリケーションである。一実施形態では、アプリケーションは、Ｊａｖａベースのプログラミング言語で書かれたＪａｖａベースのアプリケーションである。本実施形態では、インタプリタはＪＶＭである。本出願では、インタプリタはＪａｖａベースのプログラミング言語の場合はＪＶＭと呼ばれるが、本発明は、参照されない動的に割り当てられたオブジェクト（たとえば、ガーベッジ）の収集を利用して未使用のメモリをフリーにする任意のプログラミング言語との併用を意図することを理解されたい。
【００１９】
ステップ２１５において、ガーベッジコレクションデータ（たとえば、メモリ割り当て挙動追跡データ、メモリ使用状況データ、参照されていないオブジェクト収集データ）をガーベッジコレクションシミュレータで受信する。一実施形態では、ガーベッジコレクションシミュレータがＪＶＭに常駐する場合、メモリ使用状況データに直接アクセスする。別の実施形態では、メモリ使用状況データは、電子メールへの添付としてガーベッジコレクションシミュレータに伝送される。別の実施形態では、メモリ使用状況データはフロッピーディスク中のファイルとして伝送される。メモリ使用状況データは概して小さなファイルであり、コンピュータシステム間で容易に転送されることを理解されたい。
【００２０】
ステップ２２０において、ガーベッジコレクションシミュレータにアクセスする。ガーベッジコレクションシミュレータは、ヒープパラメータを解析し調整すると共に、ガーベッジコレクションシミュレーションの結果を閲覧するためのユーザフレンドリなメカニズムを提供するグラフィカルユーザインタフェースを備える。一実施形態では、ガーベッジコレクションシミュレータは、ＪＶＭと同じコンピュータシステム上に常駐する。別の実施形態では、ネットワーク接続を介してガーベッジコレクションシミュレータにアクセスする。
【００２１】
ステップ２２５において、メモリ使用状況データのグラフ表示が生成される。上述したように、メモリ使用状況データは表形式であり、複数のデータプロットの生成に適している。一実施形態では、ガーベッジコレクションの異なる態様を示すために、複数のデータプロットが生成される。
【００２２】
特に、メモリ使用状況データで捕捉されたタイミング情報により、各種情報とアプリケーション実行の全体的な時間との間の関係をプロットすることができる。図３は、本発明の一実施形態によるガーベッジコレクションシミュレータのグラフィカルユーザインタフェースによって生成されたガーベッジコレクション所要時間データプロット３０５の例示的な画面ショット３００である。
【００２３】
データプロット３０５は、秒単位での全体的なアプリケーション実行時間を含むｘ軸３１０と、秒単位での特定のガーベッジコレクションルーチンの実行時間を含むｙ軸３１５とを含む。さらに、データプロット３０５は、４つのタイプのガーベッジコレクションルーチン、すなわちｓｃａｖｅｎｇｅ、ｓｙｓｔｅｍ．ｇｃ、ｏｌｄ　ｆｕｌｌ、およびｏｌｄ　ｔｏｏ　ｆｕｌｌの所要時間を示す。特に、データプロット３０５は、ガーベッジコレクションが行われた時間、行われたガーベッジコレクションのタイプ、および実行にかかった時間を示す。ｓｃａｖｅｎｇｅガーベッジコレクションの平均所要時間およびｆｕｌｌガーベッジコレクションの平均所要時間等の全体的なタイミング情報が、タイミング情報３２０に示される。
【００２４】
図２Ａのステップ２２５を参照すると、メモリ使用状況データを用いて多種多様のデータプロットすなわちグラフ表示を生成することができる。一実施形態では、さらなるデータプロットは以下を含むが、これらに限定されない。すなわち、ヒープ使用状況と時間との間の関係、解放された累積バイトと時間との間の関係、および作成率である。本発明の実施形態は、ユーザ定義でのデータのグラフ表示を可能にすることを対象とする。特定のガーベッジコレクション情報を所望するユーザは、要求された入力に基づいてデータプロットを生成することができる。
【００２５】
一実施形態では、メモリ使用状況データは、アプリケーション実行時間中のガーベッジコレクションアクティビティの要約を示すテキストの形態で提示される。図４は、本発明の一実施形態によるガーベッジコレクションシミュレータのグラフィカルユーザインタフェースによって生成される要約ビュー４０５の例示的な画面ショット４００である。要約ビュー４０５は、ＪＶＭのヒープ容量、ガーベッジコレクションアクティビティ、および全体的な統計に関する詳細な情報を示す。タイミング情報４１０は、ガーベッジコレクションに費やされた時間について詳述する情報を含む。パイチャート４１５は、ガーベッジコレクションに費やされた全体実行時間の一部の別のグラフ表示である。
【００２６】
図２Ａのステップ２２５を参照すると、ユーザにガーベッジコレクション情報のいくつかのグラフ表示が提示される。これらグラフ表示を使用して、ユーザはアプリケーションのガーベッジコレクションアクティビティを解析することができる。グラフ表示で提示された情報に基づいて、ユーザは、アプリケーションのパラメータを最適化するために、各種入力パラメータを変更したいと思うことがある。
【００２７】
図２Ｂのステップ２３０において、少なくとも１つのヒープパラメータ（たとえば、パラメータ、メモリ基準、またはヒープ入力）をガーベッジコレクションシミュレータで受信する。一実施形態では、ユーザ入力のヒープパラメータをガーベッジコレクションシミュレータで受信する。ヒープパラメータはコンピュータ生成することができ、また、本発明はヒープパラメータについてユーザ生成入力に限定されないことを理解されたい。
【００２８】
図５は、本発明の一実施形態によるガーベッジコレクションシミュレータのグラフィカルユーザインタフェースによって生成されるヒープパラメータ入力ビュー５０５の例示的な画面ショット５００である。ヒープパラメータ入力図では、各種ヒープパラメータを変更することによってユーザがアプリケーションのガーベッジコレクションを構成することができる。一実施形態では、４つのヒープパラメータがある。すなわち、総ヒープサイズ（ｔｏｔａｌ　ｈｅａｐ　ｓｉｚｅ）５１０、新しい生成サイズ（ｎｅｗ　ｇｅｎｅｒａｔｉｏｎ　ｓｉｚｅ）５１５、生き残り比（ｓｕｒｖｉｖｏｒ　ｒａｔｉｏ）５２０、およびｓｙｓｔｅｍ．ｇｃへの呼び出しインジケータ５２５である。
【００２９】
一実施形態では、ヒープパラメータ入力ビュー５０５は、実行時にアプリケーションに存在するヒープパラメータを提示する。次いで、ユーザは元の値に相対してヒープパラメータの値を変更する。たとえば、ＪＶＭが６４ＭＢの総ヒープサイズ５１０を有する場合、ヒープパラメータ入力ビューは、総ヒープサイズ５１０に関連して値６４ＭＢを示す。次いで、ユーザは、元の値を汲み取った上で総ヒープサイズ５１０の値を変更することができる。
【００３０】
一実施形態では、総ヒープサイズ５１０、新しい生成サイズ５１５、および生き残り比５２０についてのヒープパラメータ値は、テキストをテキストボックス（たとえば、テキストボックス５１２ａ〜５１２ｃ）に直接入力することによって変更することが可能である。一実施形態では、総ヒープサイズ５１０、新しい生成サイズ５１５、および生き残り比５２０についてのヒープパラメータ値は、スライダ（たとえば、スライダ５１４ａ〜５１４ｃ）を移動させることによって変更することが可能である。一実施形態では、スライダ５１４が移動されると、テキストボックス５１２において示される値が更新される。別の実施形態では、スライダ５１４によって示される値は、新しい値がテキストボックス５１２に入力されるときに更新される。
【００３１】
一実施形態では、インジケータ５２５は、メモリ管理実行要求を発したアプリケーションがアプリケーション実行されるかどうかを示すチェックボックスである。追跡データに基づいてアプリケーションがこのような要求を開始していない場合、このボックスは最初チェックされている。ユーザは、アプリケーションの性質に応じてボックスをチェックしても、またチェックを外してもよい。
【００３２】
一実施形態では、ヒープパラメータ入力ビュー５０５は、ＪＶＭセレクタ５３０を含む。一実施形態では、ＪＶＭセレクタ５３０は、複数のＪＶＭバージョンを含むプルダウンメニューである。ＪＶＭセレクタはまず、どのＪＶＭバージョン／タイプがアプリケーション実行において使用されたかを示し、他のＪＶＭバージョン／タイプについてＪＶＭオプションを生成する能力を有する。ユーザは、異なるＪＶＭバージョンを選択することによってアプリケーションを再実行するために必要なＪＶＭバージョン／タイプオプションを変更することができる。ユーザが所望のヒープパラメータに入力すると、シミュレーションアクチベータ５４０を起動することによってシミュレーションが実行される。
【００３３】
一実施形態では、ヒープパラメータ入力ビュー５０５は、ＪＶＭオプション５３５を含む。ＪＶＭオプション５３５は、総ヒープサイズ５１０、新しい生成サイズ５１５、生き残り比５２０、およびｓｙｓｔｅｍ．ｇｃへの呼び出しインジケータ５２５に選択された値を含む文字列である。所望のヒープパラメータが達成されると、ＪＶＭオプション５３５をＪＶＭに直接コピーすることができる。
【００３４】
図２Ｂのステップ２３５において、作業負荷特性が変更される。ステップ２３５はオプションであり、作業負荷特性は同じままであってもよいことを理解されたい。ステップ２４０において、ガーベッジコレクションシミュレータ構成が変更される。ステップ２４０はオプションであり、ガーベッジコレクションシミュレータ構成は同じままであってもよいことを理解されたい。
【００３５】
図２Ｂのステップ２４５において、ガーベッジコレクションシミュレーション（たとえば、メモリ使用状況シミュレーション）を実行する。一実施形態では、シミュレーションアクチベータ（たとえば、図３のシミュレーションアクチベータ３４０）を選択すると、ガーベッジコレクションシミュレーションが起動する。ガーベッジコレクションシミュレーションは、メモリ使用状況データおよび入力パラメータをベースとする。
【００３６】
図６は、本発明の実施形態によるガーベッジコレクション（たとえば、メモリ使用状況）をシミュレートするプロセス６００を示すフローチャート図である。ステップ６０５において、詳細なガーベッジコレクション追跡データを受信する。一実施形態では、ガーベッジコレクション追跡データが、ＨＰ−ＵＸ上の−Ｘｖｅｒｂｏｓｅｇｃオプションを通して取得される。一実施形態では、ガーベッジコレクション追跡データは、ガーベッジのコレクションに関連する情報を含み、本明細書ではガーベッジコレクションデータとも呼ばれる。
【００３７】
ステップ６１０において、どのシミュレーションモデルを使用すべきかをガーベッジコレクション追跡データのフォーマットに基づいて決定する。ステップ６１５において、元のヒープ構成およびポリシーが、入力ガーベッジコレクション追跡データに基づいて決定される。ステップ６２０において、ヒープパラメータへの少なくとも１つの調整を受信する。調整はヒープ構成、作業負荷特性、またはシミュレータパラメータに行い得ることを理解されたい。
【００３８】
ステップ６２５において、シミュレーション特性が、追跡データに表示される各測定間隔ごとに決定される。一実施形態では、シミュレーション特性は、以下を含む。
【００３９】
・割り当てられた総メモリの決定
・収集された総メモリの決定
・メモリ割り当て率の推定
・メモリが参照されなくなる率の推定
ステップ６３０において、ステップ６２５において決定されたシミュレーション特性に基づいて新しいアプリケーションの実行がシミュレートされる。一実施形態において、変更されたヒープ構成について推定されたガーベッジコレクションシミュレーションデータは、以下を含むが、これらに限定されない。
【００４０】
・ガーベッジコレクション間の間隔
・個々の各コレクションの所要時間
・各ガーベッジコレクションの原因
・２つのコレクションに割り当てられた総メモリ
・２つのコレクションで収集された総メモリ
・個々の各ガーベッジコレクションの所要時間
・年齢によるメモリ使用分布の推定
図２Ｂのステップ２５０において、ガーベッジコレクションシミュレーションデータの解析およびグラフ表示を生成する。一実施形態では、ガーベッジコレクションシミュレーションデータは表形式であり、複数のデータプロットの生成に適している。一実施形態では、ガーベッジコレクションの異なる態様を示すために、複数のデータプロットが生成される。特に、ガーベッジコレクションシミュレーションデータは、各種情報とアプリケーションの全実行時間との間の関係をプロットできるようにするタイミング情報を含む。
【００４１】
ガーベッジコレクションシミュレーションデータについて生成されたグラフ表示は、図２Ａのステップ２２５においてガーベッジコレクションデータについて生成されたものと同様であることを理解されたい。たとえば、図３の例示的な画面ショット３００はまた、ガーベッジコレクションシミュレーションデータに基づくガーベッジコレクション所要時間データプロット３０５の図でもある。同様に、図４の例示的な画面ショット４００は、ガーベッジコレクションシミュレーションデータに基づく要約ビュー４０５の図でもある。
【００４２】
ガーベッジコレクションデータの場合と同様に、ガーベッジコレクションシミュレーションデータを用いて多種多様のデータプロットすなわちグラフ表示を生成することができる。一実施形態では、さらなるデータプロットは、以下を含むがこれらに限定されない。すなわち、ヒープ使用状況と時間との間の関係、フリーにされた累積バイトと時間との間の関係、および作成率である。本発明の実施形態は、ユーザ定義のデータのグラフ表示を可能にすることを対象とする。特定のガーベッジコレクション情報を所望するユーザは、要求された入力に基づいてデータプロットを生成することができる。
【００４３】
一実施形態では、ガーベッジコレクションシミュレーションデータをガーベッジコレクションデータと比較するグラフ表示が生成される。別の実施形態では、ガーベッジコレクションシミュレーションデータを別のガーベッジコレクションシミュレーションデータセットと比較するグラフ表示が生成される。任意の数のガーベッジコレクションシミュレーションデータセットを比較し得ることを理解されたい。比較グラフ表示により、ユーザは同じアプリケーションの複数の異なるヒープパラメータセットのパフォーマンスを解析することができ、ひいてはユーザがアプリケーションに望ましいヒープパラメータセットを選択することができる。
【００４４】
ユーザに、ガーベッジコレクションシミュレーション情報のいくつかのグラフ表示が提示される。これらグラフ表示を使用して、ユーザはアプリケーションのガーベッジコレクションアクティビティを解析することができる。グラフィカル表示に提示される情報に基づいて、ユーザは、アプリケーションのパフォーマンスを最適化するために各種入力パラメータを変更して、シミュレーションを再度実行したい場合がある。
【００４５】
ステップ２５５において、別のシミュレーションを実行するか否かを決定する。一実施形態では、この決定はユーザによって下される。ユーザが別のシミュレーションを実行すると決定した場合、プロセス２００はステップ２３０に戻り、少なくとも１つの新しいヒープパラメータを入力する。代替として、ユーザが別のシミュレーションを実行したくない場合、プロセス２００はステップ２５０に続く。
【００４６】
図２Ａのステップ２６０において、最適化されたヒープパラメータがＪＶＭに挿入される。一実施形態では、ヒープパラメータは、ガーベッジコレクションシミュレータによって文字列として提供される（たとえば、図５のＪＶＭオプション５３５）。一実施形態では、ガーベッジコレクションシミュレータによってＪＶＭに文字列が直接挿入される。別の実施形態では、ユーザがガーベッジコレクションシミュレータから文字列をＪＶＭに直接コピーし貼り付けることができる。
【００４７】
ステップ２６５において、シミュレーション結果の解析を続けるか否かを決定する。一実施形態では、この決定はユーザによって下される。ユーザが解析の継続を決定する場合、プロセス２００はステップ２１０に戻る。代替として、ユーザが解析を継続しないと決定した場合、プロセス２００はステップ２７０に続く。
【００４８】
ステップ２７０において、アプリケーションが、最適化されたヒープパラメータを使用してＪＶＭ内で実行される。ステップ２７０はオプションであり、最適化されたヒープパラメータは信頼できるものであることを理解されたい。しかし、最適化されたヒープパラメータはシミュレーションの結果であるため、最適化されたヒープパラメータを使用してアプリケーションを実行し、有効性を確実にすることが望ましい場合がある。
【００４９】
図７は、本発明の一実施形態によるＪＶＭ７０５とメモリ使用状況シミュレータ７１５（たとえば、ガーベッジコレクションシミュレータ）との間のデータフローを示すデータフロー図７００である。ＪＶＭ７０５およびメモリ使用状況シミュレータ７１５は、同じコンピュータシステム上に常駐しても、また別のコンピュータシステム上に常駐してもよいことを理解されたい。ＪＶＭ７０５とメモリ使用状況シミュレータ７１５（たとえば、メモリ使用状況データ７２０および最適化されたパラメータ７４５）との間で転送されるデータは概して小さく、ＪＶＭ７０５およびメモリ使用状況シミュレータ７１５が常駐する場所に関係なく、転送が容易である。
【００５０】
Ｊａｖａベースのアプリケーション７１０がＪＶＭ７０５内で実行され、メモリ使用状況データ７２０が生成される。メモリ使用状況データ７２０は、メモリ使用状況シミュレータ７１５に伝送される。メモリ使用状況データ７２０は、各ガーベッジコレクションに関するタイミング情報を含むメモリ使用状況情報を含む。メモリ使用状況シミュレータ７１５は、メモリ使用状況データのグラフ表示７４０を生成する。
【００５１】
グラフ表示７４０に応答して、少なくとも１つのパラメータ７２５がメモリ使用状況シミュレータ７１５に入力される。オプションとして、作業負荷特性７３０およびシミュレータ構成７３５がメモリ使用状況シミュレータ７１５に入力される。メモリ使用状況データ７２０および入力ヒープパラメータ７２５に基づいて、シミュレーションが実行される。特に、メモリ使用状況データ７２０に基づいて、いくつかの仮定が行われる。たとえば、ガーベッジコレクションへの割り当てが線形比であるものと想定する。ガーベッジコレクションの挙動を推定することによって、ヒープパラメータの変更を考慮に入れてシミュレーションを行うことができる。本発明の他の実施形態では異なる仮定を行うことができることを理解されたい。
【００５２】
シミュレーションが完了すると、一実施形態では、グラフ表示７４０がシミュレーションの結果を表示するように更新される。シミュレーションは、各種ヒープパラメータ７２５について任意の回数繰り返すことができることを理解されたい。ヒープパラメータが最適化されたと決定されると、最適化されたヒープパラメータ７４５がＪＶＭに挿入される。この発明は、例として次のような実施形態を含む。
【００５３】
（１）　コンピュータアプリケーション（７１０）のメモリ使用状況を最適化する方法であって、
ａ）タイミング情報を含むアプリケーションメモリ使用状況データ（７２０）を受信するステップ（２１５）と、
ｂ）前記アプリケーションメモリ使用状況データ（７２０）のグラフ表示（７４０）を生成するステップ（２２５）と、
ｃ）少なくとも１つのヒープパラメータ（７２５）を受信するステップ（２３０）と、
ｄ）前記アプリケーションメモリ使用状況データ（７２０）および前記ヒープパラメータ（７２５）に基づいてメモリ使用状況シミュレーションを行うステップ（２４５）と、
を含む方法。
【００５４】
（２）　前記コンピュータアプリケーション（７１０）はＪａｖａベースである（１）記載の方法。
【００５５】
（３）　前記ヒープパラメータをプログラミング言語インタプリタ（７０５）に挿入するステップ（２６０）をさらに含む（１）記載の方法。
【００５６】
（４）　前記プログラミング言語インタプリタ（７０５）はＪａｖａ仮想マシンである（３）記載の方法。
【００５７】
（５）　前記ヒープパラメータ（７２５）はユーザ入力に応答して受信される（１）記載の方法。
【００５８】
（６）　前記ｃ）および前記ｄ）を繰り返して前記ガーベッジコレクションを最適化するステップをさらに含む（１）記載の方法。
【００５９】
（７）　前記ガーベッジコレクションシミュレーションのグラフ表示（７４０）を生成ステップこと（２５０）をさらに含む（１）記載の方法。
【００６０】
（８）　前記メモリ使用状況データ（７２０）はメモリ割り当て挙動追跡から受信する（１）記載の方法。
【００６１】
（９）　前記メモリ割り当て挙動追跡は−Ｘｖｅｒｂｏｓｅｇｃデータとして記録される（８）記載の方法。
【００６２】
（１０）　前記ｄ）は、
前記アプリケーションメモリ使用状況データを受信するステップ（６０５）と、
前記アプリケーションメモリ使用状況データに基づいてシミュレーションモデルを決定するステップ（６１０）と、
前記アプリケーションメモリ使用状況データに基づいてヒープ構成およびヒープポリシーを決定するステップ（６１５）と、
少なくとも１つの前記ヒープパラメータを受信するステップ（６２０）と、
前記アプリケーションメモリ使用状況データの少なくとも１つの測定間隔中のシミュレーション特性を決定するステップ（６２５）と、
前記シミュレーション特性に基づいてアプリケーションの実行をシミュレートするステップ（６３０）と、
を含む（１）記載の方法。
【００６３】
以上、コンピュータアプリケーションのメモリ使用状況を最適化する方法である本発明の好ましい実施形態を説明した。本発明は特定の実施形態で説明したが、本発明は、このような実施形態によって限定されると解釈されるべきではなく、併記の特許請求の範囲に従って解釈されるべきであることを理解されたい。
【図面の簡単な説明】
【図１】従来技術によるガーベッジコレクション調整プロセスを示すフローチャート図。
【図２Ａ】本発明の実施形態によるガーベッジコレクション調整パラメータを選択するプロセスを示すフローチャート図。
【図２Ｂ】本発明の実施形態によるガーベッジコレクション調整パラメータを選択するプロセスを示すフローチャート図。
【図３】本発明の一実施形態によるガーベッジコレクションシミュレータグラフィカルユーザインタフェースによって生成されるガーベッジコレクション所要時間図の例示的な画面ショット。
【図４】本発明の一実施形態によるガーベッジコレクションシミュレータグラフィカルユーザインタフェースによって生成される要約ビューの例示的な画面ショット。
【図５】本発明の一実施形態によるメモリ使用状況シミュレータグラフィカルユーザインタフェースによって生成されるヒープパラメータ入力図の例示的な画面ショット。
【図６】本発明の一実施形態によるガーベッジコレクションをシミュレートするプロセスを示すフローチャート図。
【図７】本発明の一実施形態によるＪａｖａ仮想マシンとガーベッジコレクションシミュレータとの間のデータフローを示すデータフロー図。
【図１】
2004005486.tif 000003
【図２Ａ】
2004005486.tif 000004
【図２Ｂ】
2004005486.tif 000005
【図３】
2004005486.tif 000006
【図４】
2004005486.tif 000007
【図５】
2004005486.tif 000008
【図６】
2004005486.tif 000009
【図７】
2004005486.tif 000010