JP2004005486A - コンピュータアプリケーションのメモリ使用状況を最適化する方法 - Google Patents
コンピュータアプリケーションのメモリ使用状況を最適化する方法 Download PDFInfo
- Publication number
- JP2004005486A JP2004005486A JP2003073635A JP2003073635A JP2004005486A JP 2004005486 A JP2004005486 A JP 2004005486A JP 2003073635 A JP2003073635 A JP 2003073635A JP 2003073635 A JP2003073635 A JP 2003073635A JP 2004005486 A JP2004005486 A JP 2004005486A
- Authority
- JP
- Japan
- Prior art keywords
- garbage collection
- heap
- data
- application
- memory usage
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3457—Performance evaluation by simulation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99956—File allocation
- Y10S707/99957—Garbage collection
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Debugging And Monitoring (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】コンピュータアプリケーションのメモリ使用状況を最適化する方法を提供すること。
【解決手段】コンピュータアプリケーションのメモリ使用状況を最適化する方法を提供する。タイミング情報を含むメモリ使用状況データ(720)を受信する(215)。メモリ使用状況データ(720)グラフ表示(740)を生成する(225)。少なくとも1つのヒープパラメータを受信する(230)。メモリ使用状況シミュレーションが、メモリ使用状況データ(720)およびとヒープパラメータ(725)に基づいて実行される(245)。
【選択図】図7
【解決手段】コンピュータアプリケーションのメモリ使用状況を最適化する方法を提供する。タイミング情報を含むメモリ使用状況データ(720)を受信する(215)。メモリ使用状況データ(720)グラフ表示(740)を生成する(225)。少なくとも1つのヒープパラメータを受信する(230)。メモリ使用状況シミュレーションが、メモリ使用状況データ(720)およびとヒープパラメータ(725)に基づいて実行される(245)。
【選択図】図7
Description
【0001】
【発明の属する技術分野】
本発明の各種実施形態は、コンピュータプログラミングの分野に関する。
【0002】
【従来の技術】
近代の多くのプログラミング言語は、ランタイムでアプリケーションによって作成されるオブジェクトまたは他のデータ構造インスタンスにメモリを動的に割り当てる機能を提供する。言語によっては、CおよびC++等、このように動的に割り当てられたメモリを再度請求する明示的なユーザアクションが必要であるものもあれば、JavaおよびC#等、動的に割り当てられたメモリの自動再請求が可能な、メモリ管理のためのサポートを提供するものもある。たとえば、Javaプログラミング言語は、Java仮想マシン(JVM)ヒープ内でオブジェクトを割り当てる。オブジェクトがもはや必要ではない場合、ヒープから明示的に解放または除去されない。使用されないオブジェクトを除去するために、Javaは、本明細書では“ガーベッジ”と呼ぶ、動的に割り当てられた、参照されないオブジェクトを集める組み込み機能を提供する。自動メモリ管理機能は、一般に、“ガーベッジコレクション”と呼ばれる。
【0003】
ガーベッジコレクションは、メモリがもはや必要ない場合にそのメモリを解放し再請求する機能を提供し、ひいてはより効率的なアプリケーションの作成を可能にするパラダイムを提供する。しかし、ガーベッジコレクション自体は、パフォーマンスオーバヘッドを多くのJavaアプリケーションに付加する。特に、かなりのシステムメモリ資源を利用するJavaエンタープライズアプリケーションは、処理中の作業負荷が増大するにつれて、生成するガーベッジコレクションアクティビティに基づいてパフォーマンスまたは容量を低下させ得る。これにより、Javaエンタープライズアプリケーションの動作が低速になり、かつ時には信頼性がなくなる。
【0004】
ガーベッジコレクションオーバヘッドの直接的な原因がソフトウェアの欠陥である状況を除き、最適ではないヒープメモリの使用状況およびガーベッジコレクタへの不正確なポリシー選定が、ガーベッジコレクションオーバヘッド増大の主な原因である。メモリ使用状況を最適にするようにヒープを構成しガーベッジコレクタポリシーを微調整するプロセスは“ガーベッジコレクタ調整”と呼ばれる。
【0005】
ガーベッジコレクタ調整は、ヒープメモリ使用状況を最適化し、ガーベッジコレクションに費やされる総時間を低減することによって、特定のエンタープライズアプリケーションに非常に大きなパフォーマンスペイオフ(たとえば、100パーセントまたはそれよりもかなり大きい)をもたらすことができる。これにより、Javaや同様のプログラミング言語で書かれたアプリケーションの予測可能でありかつ最適なパフォーマンスを達成することが可能になる。
【0006】
現在のガーベッジコレクションツールは、Javaプロファイリングまたはモニタリングソリューションの一部として統合される。これらツールは通常、刊行されたJavaインタフェースを使用してヒープ容量(heap capacity)を測定すること、あるいはJVMの実装で利用可能なガーベッジコレクション追跡オプションによる。これらツールは、ガーベッジコレクションの最適化についていくらかの指針をユーザに提供するが、いくつかの欠点がある。最も重要なことに、これらツールは、実際の最適なガーベッジコレクションパラメータについていずれの指針も提供せず、後述する高価なプロセスの軽減も提供しない。
【0007】
図1は、従来技術によるガーベッジコレクション調整プロセス100を示すフローチャート図である。ステップ105において、ガーベッジコレクションの構成に使用されるメモリ割り当て挙動追跡が、インタプリタに対して指定される。ステップ110において、アプリケーションが書かれたプログラミング言語についてアプリケーションが実行される。ステップ115において、追跡データが解析される。ステップ120において、所望の結果が達成されたか否かが判定される。達成された場合、プロセス100は終了する。代替として、所望の結果が達成されなかった場合、ステップ125に示すように、ヒープパラメータが解析に基づいて調整され、プロセス100はステップ105に戻る。
【0008】
通常、ガーベッジコレクションは、ユーザ入力もしくはデフォルトのパラメータを必要とする。どのパラメータを挿入するかを決定するために、ユーザはアプリケーションを実行し、Javaヒープ挙動の結果を解析しなければならない。たとえば、ユーザは、アプリケーションの実行を行って、ヒープ挙動データを収集し結果を解析することができる。全体のガーベッジコレクション時間は短い場合もあるが、ガーベッジコレクションには、エンタープライズアプリケーション等大型アプリケーションの全実行時間の相当量を占め得る。たとえば、大型アプリケーションでのガーベッジコレクションは、全実行時間の大方を占める。アプリケーションの実行が完了すると、ヒープ挙動データが解析され、この解析に基づいて新しいパラメータがユーザによって指定される。このプロセスは、所望のパラメータが入力されるまで繰り返される。
【0009】
さらに、ガーベッジコレクションを最適化するために、ユーザは、アプリケーションを変更する都度、またはプラットフォームを変更する都度、新しいパラメータを決定しなければならない。アプリケーションの実行、ヒープ挙動データの収集、および結果の解析に費やされる時間は相当になる可能性があり、アプリケーション実行コストにかなりのコストを生じさせることになる。
【0010】
解析中のアプリケーションがオフサイトで診断される場合に、さらなる問題が生じる。通常、特に第三者のコンピュータシステムにアプリケーションをインストールするのはあまりに面倒である。さらに、アプリケーションの所有者は、プライバシーに対する懸念により第三者のコンピュータシステムにアプリケーションをインストールしたくない場合がある。この場合、第三者はユーザにどのパラメータを入力するか教えてから、アプリケーションが実行されヒープ挙動データが収集されるまで待たなければならない。これは、アプリケーション所有者の計算資源を消費し、アプリケーションの実行に直接関連するコストを越えてさらなるコストを課すことになり得る(たとえば、ネットワークダウンタイムおよび他のアプリケーションのパフォーマンス低下)。
【0011】
【発明が解決しようとする課題】
本発明の目的は、コンピュータアプリケーションのメモリ使用状況を最適化する方法を提供することである。
【0012】
【課題を解決するための手段】
タイミング情報を含むメモリ使用状況データを受信する。メモリ使用状況データのグラフ表示を生成する。少なくとも1つのヒープパラメータを受信する。メモリ使用状況データおよびヒープパラメータに基づいてメモリ使用状況シミュレーションを実行する。
【0013】
本明細書に組み込まれ、本発明の一部をなす添付図面は、本発明の実施形態を示し、説明とともに本発明の原理を説明する役割を果たす。
【0014】
【発明の実施の形態】
次に、本発明の好ましい実施形態を詳細に参照し、本発明の好ましい実施形態の例を添付図面に示す。本発明について好ましい実施形態と併せて説明するが、本発明をこれら実施形態に限定する意図はないことを理解されよう。本発明は反対に、併記の特許請求の範囲によって定義される本発明の精神および範囲内に含めることができる代替、変更、および同等物を網羅するものと意図される。さらに、以下の本発明の詳細な説明には、本発明の完全な理解を提供するために多くの具体的な詳細を記載する。しかし、本発明はこれらの具体的な詳細なしで実施し得ることが当業者には理解されよう。他の場合、本発明の態様を不必要に不明瞭にしないように、周知の方法、手順、コンポーネント、構造、および装置については詳細に説明しない。
【0015】
図2Aおよび図2Bは、本発明の実施形態によるプログラミング言語メモリ使用状況をシミュレートするプロセス200を示すフローチャート図である。一実施形態では、プロセス200は、コンピュータが読み取り可能でありかつ実行可能な命令の制御下で、プロセッサおよび電子コンポーネントによって実行される。コンピュータ読み取り可能でありかつ実行可能な命令は、たとえば、コンピュータ使用可能揮発性メモリおよび/またはコンピュータ使用可能不揮発性メモリ等のデータ記憶機構に常駐する。しかし、コンピュータ読み取り可能でありかつ実行可能な命令は、任意のタイプのコンピュータ読み取り可能媒体に常駐し得る。特定のステップをプロセス200に開示するが、このようなステップは例示的なものである。すなわち、本発明の実施形態は、他の各種ステップまたは図2Aおよび図2Bに記載のステップを変形したものの実行によく適している。
【0016】
図2Aのステップ205において、ガーベッジコレクションの構成に使用されるメモリ割り当て挙動追跡がインタプリタに対して指定される。一実施形態では、インタプリタはJava仮想マシン(JVM)である。メモリ割り当て挙動追跡は、オフラインシミュレーションの実行に必要かつ十分であり、また実行中のアプリケーションへの侵入を最小にして収集することのできる情報を捕捉するメカニズムである。一実施形態では、メモリ割り当て挙動追跡は、HP−UXにおける−Xverbosegcオプションである。一実施形態では、メモリ割り当て挙動追跡データは、ガーベッジの収集に関連する情報を含み、本明細書ではメモリ使用状況データとも呼ばれる。明瞭にするために、本明細書では、メモリ使用状況データは、ガーベッジコレクションデータ、メモリ割り当て挙動追跡、および詳細なガーベッジコレクション追跡データとも呼ばれる。概して、メモリ使用状況データは、ガーベッジコレクション中に発生するイベントおよび動作に関連する詳細な情報を含む表形式のファイルである。一実施形態では、メモリ使用状況データとしては以下が挙げられるが、これらに限定されない。
【0017】
・ガーベッジコレクションが行われた理由
・ガーベッジコレクションにかかる時間
・ガーベッジコレクションが行われた時間
・この特定のガーベッジコレクションによって収集されたメモリの量(たとえば、この特定のガーベッジコレクションがどの程度効率的であったか)
・ヒープ容量についての詳細な情報
・ガーベッジコレクション前に使用された個々の各セグメントの部分
・ガーベッジコレクション後に使用された個々の各セグメントの部分
・“old”とみなすに適したオブジェクトの年齢
一実施形態では、アプリケーションがJavaベースの場合、メモリ使用状況データは、JVMガーベッジコレクタにおいて−Xverbosegcオプションを選択することによって生成される。
【0018】
ステップ210において、アプリケーションが書かれたプログラミング言語についてアプリケーションが実行される。一実施形態では、アプリケーションはエンタープライズアプリケーションである。一実施形態では、アプリケーションは、Javaベースのプログラミング言語で書かれたJavaベースのアプリケーションである。本実施形態では、インタプリタはJVMである。本出願では、インタプリタはJavaベースのプログラミング言語の場合はJVMと呼ばれるが、本発明は、参照されない動的に割り当てられたオブジェクト(たとえば、ガーベッジ)の収集を利用して未使用のメモリをフリーにする任意のプログラミング言語との併用を意図することを理解されたい。
【0019】
ステップ215において、ガーベッジコレクションデータ(たとえば、メモリ割り当て挙動追跡データ、メモリ使用状況データ、参照されていないオブジェクト収集データ)をガーベッジコレクションシミュレータで受信する。一実施形態では、ガーベッジコレクションシミュレータがJVMに常駐する場合、メモリ使用状況データに直接アクセスする。別の実施形態では、メモリ使用状況データは、電子メールへの添付としてガーベッジコレクションシミュレータに伝送される。別の実施形態では、メモリ使用状況データはフロッピーディスク中のファイルとして伝送される。メモリ使用状況データは概して小さなファイルであり、コンピュータシステム間で容易に転送されることを理解されたい。
【0020】
ステップ220において、ガーベッジコレクションシミュレータにアクセスする。ガーベッジコレクションシミュレータは、ヒープパラメータを解析し調整すると共に、ガーベッジコレクションシミュレーションの結果を閲覧するためのユーザフレンドリなメカニズムを提供するグラフィカルユーザインタフェースを備える。一実施形態では、ガーベッジコレクションシミュレータは、JVMと同じコンピュータシステム上に常駐する。別の実施形態では、ネットワーク接続を介してガーベッジコレクションシミュレータにアクセスする。
【0021】
ステップ225において、メモリ使用状況データのグラフ表示が生成される。上述したように、メモリ使用状況データは表形式であり、複数のデータプロットの生成に適している。一実施形態では、ガーベッジコレクションの異なる態様を示すために、複数のデータプロットが生成される。
【0022】
特に、メモリ使用状況データで捕捉されたタイミング情報により、各種情報とアプリケーション実行の全体的な時間との間の関係をプロットすることができる。図3は、本発明の一実施形態によるガーベッジコレクションシミュレータのグラフィカルユーザインタフェースによって生成されたガーベッジコレクション所要時間データプロット305の例示的な画面ショット300である。
【0023】
データプロット305は、秒単位での全体的なアプリケーション実行時間を含むx軸310と、秒単位での特定のガーベッジコレクションルーチンの実行時間を含むy軸315とを含む。さらに、データプロット305は、4つのタイプのガーベッジコレクションルーチン、すなわちscavenge、system.gc、old full、およびold too fullの所要時間を示す。特に、データプロット305は、ガーベッジコレクションが行われた時間、行われたガーベッジコレクションのタイプ、および実行にかかった時間を示す。scavengeガーベッジコレクションの平均所要時間およびfullガーベッジコレクションの平均所要時間等の全体的なタイミング情報が、タイミング情報320に示される。
【0024】
図2Aのステップ225を参照すると、メモリ使用状況データを用いて多種多様のデータプロットすなわちグラフ表示を生成することができる。一実施形態では、さらなるデータプロットは以下を含むが、これらに限定されない。すなわち、ヒープ使用状況と時間との間の関係、解放された累積バイトと時間との間の関係、および作成率である。本発明の実施形態は、ユーザ定義でのデータのグラフ表示を可能にすることを対象とする。特定のガーベッジコレクション情報を所望するユーザは、要求された入力に基づいてデータプロットを生成することができる。
【0025】
一実施形態では、メモリ使用状況データは、アプリケーション実行時間中のガーベッジコレクションアクティビティの要約を示すテキストの形態で提示される。図4は、本発明の一実施形態によるガーベッジコレクションシミュレータのグラフィカルユーザインタフェースによって生成される要約ビュー405の例示的な画面ショット400である。要約ビュー405は、JVMのヒープ容量、ガーベッジコレクションアクティビティ、および全体的な統計に関する詳細な情報を示す。タイミング情報410は、ガーベッジコレクションに費やされた時間について詳述する情報を含む。パイチャート415は、ガーベッジコレクションに費やされた全体実行時間の一部の別のグラフ表示である。
【0026】
図2Aのステップ225を参照すると、ユーザにガーベッジコレクション情報のいくつかのグラフ表示が提示される。これらグラフ表示を使用して、ユーザはアプリケーションのガーベッジコレクションアクティビティを解析することができる。グラフ表示で提示された情報に基づいて、ユーザは、アプリケーションのパラメータを最適化するために、各種入力パラメータを変更したいと思うことがある。
【0027】
図2Bのステップ230において、少なくとも1つのヒープパラメータ(たとえば、パラメータ、メモリ基準、またはヒープ入力)をガーベッジコレクションシミュレータで受信する。一実施形態では、ユーザ入力のヒープパラメータをガーベッジコレクションシミュレータで受信する。ヒープパラメータはコンピュータ生成することができ、また、本発明はヒープパラメータについてユーザ生成入力に限定されないことを理解されたい。
【0028】
図5は、本発明の一実施形態によるガーベッジコレクションシミュレータのグラフィカルユーザインタフェースによって生成されるヒープパラメータ入力ビュー505の例示的な画面ショット500である。ヒープパラメータ入力図では、各種ヒープパラメータを変更することによってユーザがアプリケーションのガーベッジコレクションを構成することができる。一実施形態では、4つのヒープパラメータがある。すなわち、総ヒープサイズ(total heap size)510、新しい生成サイズ(new generation size)515、生き残り比(survivor ratio)520、およびsystem.gcへの呼び出しインジケータ525である。
【0029】
一実施形態では、ヒープパラメータ入力ビュー505は、実行時にアプリケーションに存在するヒープパラメータを提示する。次いで、ユーザは元の値に相対してヒープパラメータの値を変更する。たとえば、JVMが64MBの総ヒープサイズ510を有する場合、ヒープパラメータ入力ビューは、総ヒープサイズ510に関連して値64MBを示す。次いで、ユーザは、元の値を汲み取った上で総ヒープサイズ510の値を変更することができる。
【0030】
一実施形態では、総ヒープサイズ510、新しい生成サイズ515、および生き残り比520についてのヒープパラメータ値は、テキストをテキストボックス(たとえば、テキストボックス512a〜512c)に直接入力することによって変更することが可能である。一実施形態では、総ヒープサイズ510、新しい生成サイズ515、および生き残り比520についてのヒープパラメータ値は、スライダ(たとえば、スライダ514a〜514c)を移動させることによって変更することが可能である。一実施形態では、スライダ514が移動されると、テキストボックス512において示される値が更新される。別の実施形態では、スライダ514によって示される値は、新しい値がテキストボックス512に入力されるときに更新される。
【0031】
一実施形態では、インジケータ525は、メモリ管理実行要求を発したアプリケーションがアプリケーション実行されるかどうかを示すチェックボックスである。追跡データに基づいてアプリケーションがこのような要求を開始していない場合、このボックスは最初チェックされている。ユーザは、アプリケーションの性質に応じてボックスをチェックしても、またチェックを外してもよい。
【0032】
一実施形態では、ヒープパラメータ入力ビュー505は、JVMセレクタ530を含む。一実施形態では、JVMセレクタ530は、複数のJVMバージョンを含むプルダウンメニューである。JVMセレクタはまず、どのJVMバージョン/タイプがアプリケーション実行において使用されたかを示し、他のJVMバージョン/タイプについてJVMオプションを生成する能力を有する。ユーザは、異なるJVMバージョンを選択することによってアプリケーションを再実行するために必要なJVMバージョン/タイプオプションを変更することができる。ユーザが所望のヒープパラメータに入力すると、シミュレーションアクチベータ540を起動することによってシミュレーションが実行される。
【0033】
一実施形態では、ヒープパラメータ入力ビュー505は、JVMオプション535を含む。JVMオプション535は、総ヒープサイズ510、新しい生成サイズ515、生き残り比520、およびsystem.gcへの呼び出しインジケータ525に選択された値を含む文字列である。所望のヒープパラメータが達成されると、JVMオプション535をJVMに直接コピーすることができる。
【0034】
図2Bのステップ235において、作業負荷特性が変更される。ステップ235はオプションであり、作業負荷特性は同じままであってもよいことを理解されたい。ステップ240において、ガーベッジコレクションシミュレータ構成が変更される。ステップ240はオプションであり、ガーベッジコレクションシミュレータ構成は同じままであってもよいことを理解されたい。
【0035】
図2Bのステップ245において、ガーベッジコレクションシミュレーション(たとえば、メモリ使用状況シミュレーション)を実行する。一実施形態では、シミュレーションアクチベータ(たとえば、図3のシミュレーションアクチベータ340)を選択すると、ガーベッジコレクションシミュレーションが起動する。ガーベッジコレクションシミュレーションは、メモリ使用状況データおよび入力パラメータをベースとする。
【0036】
図6は、本発明の実施形態によるガーベッジコレクション(たとえば、メモリ使用状況)をシミュレートするプロセス600を示すフローチャート図である。ステップ605において、詳細なガーベッジコレクション追跡データを受信する。一実施形態では、ガーベッジコレクション追跡データが、HP−UX上の−Xverbosegcオプションを通して取得される。一実施形態では、ガーベッジコレクション追跡データは、ガーベッジのコレクションに関連する情報を含み、本明細書ではガーベッジコレクションデータとも呼ばれる。
【0037】
ステップ610において、どのシミュレーションモデルを使用すべきかをガーベッジコレクション追跡データのフォーマットに基づいて決定する。ステップ615において、元のヒープ構成およびポリシーが、入力ガーベッジコレクション追跡データに基づいて決定される。ステップ620において、ヒープパラメータへの少なくとも1つの調整を受信する。調整はヒープ構成、作業負荷特性、またはシミュレータパラメータに行い得ることを理解されたい。
【0038】
ステップ625において、シミュレーション特性が、追跡データに表示される各測定間隔ごとに決定される。一実施形態では、シミュレーション特性は、以下を含む。
【0039】
・割り当てられた総メモリの決定
・収集された総メモリの決定
・メモリ割り当て率の推定
・メモリが参照されなくなる率の推定
ステップ630において、ステップ625において決定されたシミュレーション特性に基づいて新しいアプリケーションの実行がシミュレートされる。一実施形態において、変更されたヒープ構成について推定されたガーベッジコレクションシミュレーションデータは、以下を含むが、これらに限定されない。
【0040】
・ガーベッジコレクション間の間隔
・個々の各コレクションの所要時間
・各ガーベッジコレクションの原因
・2つのコレクションに割り当てられた総メモリ
・2つのコレクションで収集された総メモリ
・個々の各ガーベッジコレクションの所要時間
・年齢によるメモリ使用分布の推定
図2Bのステップ250において、ガーベッジコレクションシミュレーションデータの解析およびグラフ表示を生成する。一実施形態では、ガーベッジコレクションシミュレーションデータは表形式であり、複数のデータプロットの生成に適している。一実施形態では、ガーベッジコレクションの異なる態様を示すために、複数のデータプロットが生成される。特に、ガーベッジコレクションシミュレーションデータは、各種情報とアプリケーションの全実行時間との間の関係をプロットできるようにするタイミング情報を含む。
【0041】
ガーベッジコレクションシミュレーションデータについて生成されたグラフ表示は、図2Aのステップ225においてガーベッジコレクションデータについて生成されたものと同様であることを理解されたい。たとえば、図3の例示的な画面ショット300はまた、ガーベッジコレクションシミュレーションデータに基づくガーベッジコレクション所要時間データプロット305の図でもある。同様に、図4の例示的な画面ショット400は、ガーベッジコレクションシミュレーションデータに基づく要約ビュー405の図でもある。
【0042】
ガーベッジコレクションデータの場合と同様に、ガーベッジコレクションシミュレーションデータを用いて多種多様のデータプロットすなわちグラフ表示を生成することができる。一実施形態では、さらなるデータプロットは、以下を含むがこれらに限定されない。すなわち、ヒープ使用状況と時間との間の関係、フリーにされた累積バイトと時間との間の関係、および作成率である。本発明の実施形態は、ユーザ定義のデータのグラフ表示を可能にすることを対象とする。特定のガーベッジコレクション情報を所望するユーザは、要求された入力に基づいてデータプロットを生成することができる。
【0043】
一実施形態では、ガーベッジコレクションシミュレーションデータをガーベッジコレクションデータと比較するグラフ表示が生成される。別の実施形態では、ガーベッジコレクションシミュレーションデータを別のガーベッジコレクションシミュレーションデータセットと比較するグラフ表示が生成される。任意の数のガーベッジコレクションシミュレーションデータセットを比較し得ることを理解されたい。比較グラフ表示により、ユーザは同じアプリケーションの複数の異なるヒープパラメータセットのパフォーマンスを解析することができ、ひいてはユーザがアプリケーションに望ましいヒープパラメータセットを選択することができる。
【0044】
ユーザに、ガーベッジコレクションシミュレーション情報のいくつかのグラフ表示が提示される。これらグラフ表示を使用して、ユーザはアプリケーションのガーベッジコレクションアクティビティを解析することができる。グラフィカル表示に提示される情報に基づいて、ユーザは、アプリケーションのパフォーマンスを最適化するために各種入力パラメータを変更して、シミュレーションを再度実行したい場合がある。
【0045】
ステップ255において、別のシミュレーションを実行するか否かを決定する。一実施形態では、この決定はユーザによって下される。ユーザが別のシミュレーションを実行すると決定した場合、プロセス200はステップ230に戻り、少なくとも1つの新しいヒープパラメータを入力する。代替として、ユーザが別のシミュレーションを実行したくない場合、プロセス200はステップ250に続く。
【0046】
図2Aのステップ260において、最適化されたヒープパラメータがJVMに挿入される。一実施形態では、ヒープパラメータは、ガーベッジコレクションシミュレータによって文字列として提供される(たとえば、図5のJVMオプション535)。一実施形態では、ガーベッジコレクションシミュレータによってJVMに文字列が直接挿入される。別の実施形態では、ユーザがガーベッジコレクションシミュレータから文字列をJVMに直接コピーし貼り付けることができる。
【0047】
ステップ265において、シミュレーション結果の解析を続けるか否かを決定する。一実施形態では、この決定はユーザによって下される。ユーザが解析の継続を決定する場合、プロセス200はステップ210に戻る。代替として、ユーザが解析を継続しないと決定した場合、プロセス200はステップ270に続く。
【0048】
ステップ270において、アプリケーションが、最適化されたヒープパラメータを使用してJVM内で実行される。ステップ270はオプションであり、最適化されたヒープパラメータは信頼できるものであることを理解されたい。しかし、最適化されたヒープパラメータはシミュレーションの結果であるため、最適化されたヒープパラメータを使用してアプリケーションを実行し、有効性を確実にすることが望ましい場合がある。
【0049】
図7は、本発明の一実施形態によるJVM705とメモリ使用状況シミュレータ715(たとえば、ガーベッジコレクションシミュレータ)との間のデータフローを示すデータフロー図700である。JVM705およびメモリ使用状況シミュレータ715は、同じコンピュータシステム上に常駐しても、また別のコンピュータシステム上に常駐してもよいことを理解されたい。JVM705とメモリ使用状況シミュレータ715(たとえば、メモリ使用状況データ720および最適化されたパラメータ745)との間で転送されるデータは概して小さく、JVM705およびメモリ使用状況シミュレータ715が常駐する場所に関係なく、転送が容易である。
【0050】
Javaベースのアプリケーション710がJVM705内で実行され、メモリ使用状況データ720が生成される。メモリ使用状況データ720は、メモリ使用状況シミュレータ715に伝送される。メモリ使用状況データ720は、各ガーベッジコレクションに関するタイミング情報を含むメモリ使用状況情報を含む。メモリ使用状況シミュレータ715は、メモリ使用状況データのグラフ表示740を生成する。
【0051】
グラフ表示740に応答して、少なくとも1つのパラメータ725がメモリ使用状況シミュレータ715に入力される。オプションとして、作業負荷特性730およびシミュレータ構成735がメモリ使用状況シミュレータ715に入力される。メモリ使用状況データ720および入力ヒープパラメータ725に基づいて、シミュレーションが実行される。特に、メモリ使用状況データ720に基づいて、いくつかの仮定が行われる。たとえば、ガーベッジコレクションへの割り当てが線形比であるものと想定する。ガーベッジコレクションの挙動を推定することによって、ヒープパラメータの変更を考慮に入れてシミュレーションを行うことができる。本発明の他の実施形態では異なる仮定を行うことができることを理解されたい。
【0052】
シミュレーションが完了すると、一実施形態では、グラフ表示740がシミュレーションの結果を表示するように更新される。シミュレーションは、各種ヒープパラメータ725について任意の回数繰り返すことができることを理解されたい。ヒープパラメータが最適化されたと決定されると、最適化されたヒープパラメータ745がJVMに挿入される。この発明は、例として次のような実施形態を含む。
【0053】
(1) コンピュータアプリケーション(710)のメモリ使用状況を最適化する方法であって、
a)タイミング情報を含むアプリケーションメモリ使用状況データ(720)を受信するステップ(215)と、
b)前記アプリケーションメモリ使用状況データ(720)のグラフ表示(740)を生成するステップ(225)と、
c)少なくとも1つのヒープパラメータ(725)を受信するステップ(230)と、
d)前記アプリケーションメモリ使用状況データ(720)および前記ヒープパラメータ(725)に基づいてメモリ使用状況シミュレーションを行うステップ(245)と、
を含む方法。
【0054】
(2) 前記コンピュータアプリケーション(710)はJavaベースである(1)記載の方法。
【0055】
(3) 前記ヒープパラメータをプログラミング言語インタプリタ(705)に挿入するステップ(260)をさらに含む(1)記載の方法。
【0056】
(4) 前記プログラミング言語インタプリタ(705)はJava仮想マシンである(3)記載の方法。
【0057】
(5) 前記ヒープパラメータ(725)はユーザ入力に応答して受信される(1)記載の方法。
【0058】
(6) 前記c)および前記d)を繰り返して前記ガーベッジコレクションを最適化するステップをさらに含む(1)記載の方法。
【0059】
(7) 前記ガーベッジコレクションシミュレーションのグラフ表示(740)を生成ステップこと(250)をさらに含む(1)記載の方法。
【0060】
(8) 前記メモリ使用状況データ(720)はメモリ割り当て挙動追跡から受信する(1)記載の方法。
【0061】
(9) 前記メモリ割り当て挙動追跡は−Xverbosegcデータとして記録される(8)記載の方法。
【0062】
(10) 前記d)は、
前記アプリケーションメモリ使用状況データを受信するステップ(605)と、
前記アプリケーションメモリ使用状況データに基づいてシミュレーションモデルを決定するステップ(610)と、
前記アプリケーションメモリ使用状況データに基づいてヒープ構成およびヒープポリシーを決定するステップ(615)と、
少なくとも1つの前記ヒープパラメータを受信するステップ(620)と、
前記アプリケーションメモリ使用状況データの少なくとも1つの測定間隔中のシミュレーション特性を決定するステップ(625)と、
前記シミュレーション特性に基づいてアプリケーションの実行をシミュレートするステップ(630)と、
を含む(1)記載の方法。
【0063】
以上、コンピュータアプリケーションのメモリ使用状況を最適化する方法である本発明の好ましい実施形態を説明した。本発明は特定の実施形態で説明したが、本発明は、このような実施形態によって限定されると解釈されるべきではなく、併記の特許請求の範囲に従って解釈されるべきであることを理解されたい。
【図面の簡単な説明】
【図1】従来技術によるガーベッジコレクション調整プロセスを示すフローチャート図。
【図2A】本発明の実施形態によるガーベッジコレクション調整パラメータを選択するプロセスを示すフローチャート図。
【図2B】本発明の実施形態によるガーベッジコレクション調整パラメータを選択するプロセスを示すフローチャート図。
【図3】本発明の一実施形態によるガーベッジコレクションシミュレータグラフィカルユーザインタフェースによって生成されるガーベッジコレクション所要時間図の例示的な画面ショット。
【図4】本発明の一実施形態によるガーベッジコレクションシミュレータグラフィカルユーザインタフェースによって生成される要約ビューの例示的な画面ショット。
【図5】本発明の一実施形態によるメモリ使用状況シミュレータグラフィカルユーザインタフェースによって生成されるヒープパラメータ入力図の例示的な画面ショット。
【図6】本発明の一実施形態によるガーベッジコレクションをシミュレートするプロセスを示すフローチャート図。
【図7】本発明の一実施形態によるJava仮想マシンとガーベッジコレクションシミュレータとの間のデータフローを示すデータフロー図。
【発明の属する技術分野】
本発明の各種実施形態は、コンピュータプログラミングの分野に関する。
【0002】
【従来の技術】
近代の多くのプログラミング言語は、ランタイムでアプリケーションによって作成されるオブジェクトまたは他のデータ構造インスタンスにメモリを動的に割り当てる機能を提供する。言語によっては、CおよびC++等、このように動的に割り当てられたメモリを再度請求する明示的なユーザアクションが必要であるものもあれば、JavaおよびC#等、動的に割り当てられたメモリの自動再請求が可能な、メモリ管理のためのサポートを提供するものもある。たとえば、Javaプログラミング言語は、Java仮想マシン(JVM)ヒープ内でオブジェクトを割り当てる。オブジェクトがもはや必要ではない場合、ヒープから明示的に解放または除去されない。使用されないオブジェクトを除去するために、Javaは、本明細書では“ガーベッジ”と呼ぶ、動的に割り当てられた、参照されないオブジェクトを集める組み込み機能を提供する。自動メモリ管理機能は、一般に、“ガーベッジコレクション”と呼ばれる。
【0003】
ガーベッジコレクションは、メモリがもはや必要ない場合にそのメモリを解放し再請求する機能を提供し、ひいてはより効率的なアプリケーションの作成を可能にするパラダイムを提供する。しかし、ガーベッジコレクション自体は、パフォーマンスオーバヘッドを多くのJavaアプリケーションに付加する。特に、かなりのシステムメモリ資源を利用するJavaエンタープライズアプリケーションは、処理中の作業負荷が増大するにつれて、生成するガーベッジコレクションアクティビティに基づいてパフォーマンスまたは容量を低下させ得る。これにより、Javaエンタープライズアプリケーションの動作が低速になり、かつ時には信頼性がなくなる。
【0004】
ガーベッジコレクションオーバヘッドの直接的な原因がソフトウェアの欠陥である状況を除き、最適ではないヒープメモリの使用状況およびガーベッジコレクタへの不正確なポリシー選定が、ガーベッジコレクションオーバヘッド増大の主な原因である。メモリ使用状況を最適にするようにヒープを構成しガーベッジコレクタポリシーを微調整するプロセスは“ガーベッジコレクタ調整”と呼ばれる。
【0005】
ガーベッジコレクタ調整は、ヒープメモリ使用状況を最適化し、ガーベッジコレクションに費やされる総時間を低減することによって、特定のエンタープライズアプリケーションに非常に大きなパフォーマンスペイオフ(たとえば、100パーセントまたはそれよりもかなり大きい)をもたらすことができる。これにより、Javaや同様のプログラミング言語で書かれたアプリケーションの予測可能でありかつ最適なパフォーマンスを達成することが可能になる。
【0006】
現在のガーベッジコレクションツールは、Javaプロファイリングまたはモニタリングソリューションの一部として統合される。これらツールは通常、刊行されたJavaインタフェースを使用してヒープ容量(heap capacity)を測定すること、あるいはJVMの実装で利用可能なガーベッジコレクション追跡オプションによる。これらツールは、ガーベッジコレクションの最適化についていくらかの指針をユーザに提供するが、いくつかの欠点がある。最も重要なことに、これらツールは、実際の最適なガーベッジコレクションパラメータについていずれの指針も提供せず、後述する高価なプロセスの軽減も提供しない。
【0007】
図1は、従来技術によるガーベッジコレクション調整プロセス100を示すフローチャート図である。ステップ105において、ガーベッジコレクションの構成に使用されるメモリ割り当て挙動追跡が、インタプリタに対して指定される。ステップ110において、アプリケーションが書かれたプログラミング言語についてアプリケーションが実行される。ステップ115において、追跡データが解析される。ステップ120において、所望の結果が達成されたか否かが判定される。達成された場合、プロセス100は終了する。代替として、所望の結果が達成されなかった場合、ステップ125に示すように、ヒープパラメータが解析に基づいて調整され、プロセス100はステップ105に戻る。
【0008】
通常、ガーベッジコレクションは、ユーザ入力もしくはデフォルトのパラメータを必要とする。どのパラメータを挿入するかを決定するために、ユーザはアプリケーションを実行し、Javaヒープ挙動の結果を解析しなければならない。たとえば、ユーザは、アプリケーションの実行を行って、ヒープ挙動データを収集し結果を解析することができる。全体のガーベッジコレクション時間は短い場合もあるが、ガーベッジコレクションには、エンタープライズアプリケーション等大型アプリケーションの全実行時間の相当量を占め得る。たとえば、大型アプリケーションでのガーベッジコレクションは、全実行時間の大方を占める。アプリケーションの実行が完了すると、ヒープ挙動データが解析され、この解析に基づいて新しいパラメータがユーザによって指定される。このプロセスは、所望のパラメータが入力されるまで繰り返される。
【0009】
さらに、ガーベッジコレクションを最適化するために、ユーザは、アプリケーションを変更する都度、またはプラットフォームを変更する都度、新しいパラメータを決定しなければならない。アプリケーションの実行、ヒープ挙動データの収集、および結果の解析に費やされる時間は相当になる可能性があり、アプリケーション実行コストにかなりのコストを生じさせることになる。
【0010】
解析中のアプリケーションがオフサイトで診断される場合に、さらなる問題が生じる。通常、特に第三者のコンピュータシステムにアプリケーションをインストールするのはあまりに面倒である。さらに、アプリケーションの所有者は、プライバシーに対する懸念により第三者のコンピュータシステムにアプリケーションをインストールしたくない場合がある。この場合、第三者はユーザにどのパラメータを入力するか教えてから、アプリケーションが実行されヒープ挙動データが収集されるまで待たなければならない。これは、アプリケーション所有者の計算資源を消費し、アプリケーションの実行に直接関連するコストを越えてさらなるコストを課すことになり得る(たとえば、ネットワークダウンタイムおよび他のアプリケーションのパフォーマンス低下)。
【0011】
【発明が解決しようとする課題】
本発明の目的は、コンピュータアプリケーションのメモリ使用状況を最適化する方法を提供することである。
【0012】
【課題を解決するための手段】
タイミング情報を含むメモリ使用状況データを受信する。メモリ使用状況データのグラフ表示を生成する。少なくとも1つのヒープパラメータを受信する。メモリ使用状況データおよびヒープパラメータに基づいてメモリ使用状況シミュレーションを実行する。
【0013】
本明細書に組み込まれ、本発明の一部をなす添付図面は、本発明の実施形態を示し、説明とともに本発明の原理を説明する役割を果たす。
【0014】
【発明の実施の形態】
次に、本発明の好ましい実施形態を詳細に参照し、本発明の好ましい実施形態の例を添付図面に示す。本発明について好ましい実施形態と併せて説明するが、本発明をこれら実施形態に限定する意図はないことを理解されよう。本発明は反対に、併記の特許請求の範囲によって定義される本発明の精神および範囲内に含めることができる代替、変更、および同等物を網羅するものと意図される。さらに、以下の本発明の詳細な説明には、本発明の完全な理解を提供するために多くの具体的な詳細を記載する。しかし、本発明はこれらの具体的な詳細なしで実施し得ることが当業者には理解されよう。他の場合、本発明の態様を不必要に不明瞭にしないように、周知の方法、手順、コンポーネント、構造、および装置については詳細に説明しない。
【0015】
図2Aおよび図2Bは、本発明の実施形態によるプログラミング言語メモリ使用状況をシミュレートするプロセス200を示すフローチャート図である。一実施形態では、プロセス200は、コンピュータが読み取り可能でありかつ実行可能な命令の制御下で、プロセッサおよび電子コンポーネントによって実行される。コンピュータ読み取り可能でありかつ実行可能な命令は、たとえば、コンピュータ使用可能揮発性メモリおよび/またはコンピュータ使用可能不揮発性メモリ等のデータ記憶機構に常駐する。しかし、コンピュータ読み取り可能でありかつ実行可能な命令は、任意のタイプのコンピュータ読み取り可能媒体に常駐し得る。特定のステップをプロセス200に開示するが、このようなステップは例示的なものである。すなわち、本発明の実施形態は、他の各種ステップまたは図2Aおよび図2Bに記載のステップを変形したものの実行によく適している。
【0016】
図2Aのステップ205において、ガーベッジコレクションの構成に使用されるメモリ割り当て挙動追跡がインタプリタに対して指定される。一実施形態では、インタプリタはJava仮想マシン(JVM)である。メモリ割り当て挙動追跡は、オフラインシミュレーションの実行に必要かつ十分であり、また実行中のアプリケーションへの侵入を最小にして収集することのできる情報を捕捉するメカニズムである。一実施形態では、メモリ割り当て挙動追跡は、HP−UXにおける−Xverbosegcオプションである。一実施形態では、メモリ割り当て挙動追跡データは、ガーベッジの収集に関連する情報を含み、本明細書ではメモリ使用状況データとも呼ばれる。明瞭にするために、本明細書では、メモリ使用状況データは、ガーベッジコレクションデータ、メモリ割り当て挙動追跡、および詳細なガーベッジコレクション追跡データとも呼ばれる。概して、メモリ使用状況データは、ガーベッジコレクション中に発生するイベントおよび動作に関連する詳細な情報を含む表形式のファイルである。一実施形態では、メモリ使用状況データとしては以下が挙げられるが、これらに限定されない。
【0017】
・ガーベッジコレクションが行われた理由
・ガーベッジコレクションにかかる時間
・ガーベッジコレクションが行われた時間
・この特定のガーベッジコレクションによって収集されたメモリの量(たとえば、この特定のガーベッジコレクションがどの程度効率的であったか)
・ヒープ容量についての詳細な情報
・ガーベッジコレクション前に使用された個々の各セグメントの部分
・ガーベッジコレクション後に使用された個々の各セグメントの部分
・“old”とみなすに適したオブジェクトの年齢
一実施形態では、アプリケーションがJavaベースの場合、メモリ使用状況データは、JVMガーベッジコレクタにおいて−Xverbosegcオプションを選択することによって生成される。
【0018】
ステップ210において、アプリケーションが書かれたプログラミング言語についてアプリケーションが実行される。一実施形態では、アプリケーションはエンタープライズアプリケーションである。一実施形態では、アプリケーションは、Javaベースのプログラミング言語で書かれたJavaベースのアプリケーションである。本実施形態では、インタプリタはJVMである。本出願では、インタプリタはJavaベースのプログラミング言語の場合はJVMと呼ばれるが、本発明は、参照されない動的に割り当てられたオブジェクト(たとえば、ガーベッジ)の収集を利用して未使用のメモリをフリーにする任意のプログラミング言語との併用を意図することを理解されたい。
【0019】
ステップ215において、ガーベッジコレクションデータ(たとえば、メモリ割り当て挙動追跡データ、メモリ使用状況データ、参照されていないオブジェクト収集データ)をガーベッジコレクションシミュレータで受信する。一実施形態では、ガーベッジコレクションシミュレータがJVMに常駐する場合、メモリ使用状況データに直接アクセスする。別の実施形態では、メモリ使用状況データは、電子メールへの添付としてガーベッジコレクションシミュレータに伝送される。別の実施形態では、メモリ使用状況データはフロッピーディスク中のファイルとして伝送される。メモリ使用状況データは概して小さなファイルであり、コンピュータシステム間で容易に転送されることを理解されたい。
【0020】
ステップ220において、ガーベッジコレクションシミュレータにアクセスする。ガーベッジコレクションシミュレータは、ヒープパラメータを解析し調整すると共に、ガーベッジコレクションシミュレーションの結果を閲覧するためのユーザフレンドリなメカニズムを提供するグラフィカルユーザインタフェースを備える。一実施形態では、ガーベッジコレクションシミュレータは、JVMと同じコンピュータシステム上に常駐する。別の実施形態では、ネットワーク接続を介してガーベッジコレクションシミュレータにアクセスする。
【0021】
ステップ225において、メモリ使用状況データのグラフ表示が生成される。上述したように、メモリ使用状況データは表形式であり、複数のデータプロットの生成に適している。一実施形態では、ガーベッジコレクションの異なる態様を示すために、複数のデータプロットが生成される。
【0022】
特に、メモリ使用状況データで捕捉されたタイミング情報により、各種情報とアプリケーション実行の全体的な時間との間の関係をプロットすることができる。図3は、本発明の一実施形態によるガーベッジコレクションシミュレータのグラフィカルユーザインタフェースによって生成されたガーベッジコレクション所要時間データプロット305の例示的な画面ショット300である。
【0023】
データプロット305は、秒単位での全体的なアプリケーション実行時間を含むx軸310と、秒単位での特定のガーベッジコレクションルーチンの実行時間を含むy軸315とを含む。さらに、データプロット305は、4つのタイプのガーベッジコレクションルーチン、すなわちscavenge、system.gc、old full、およびold too fullの所要時間を示す。特に、データプロット305は、ガーベッジコレクションが行われた時間、行われたガーベッジコレクションのタイプ、および実行にかかった時間を示す。scavengeガーベッジコレクションの平均所要時間およびfullガーベッジコレクションの平均所要時間等の全体的なタイミング情報が、タイミング情報320に示される。
【0024】
図2Aのステップ225を参照すると、メモリ使用状況データを用いて多種多様のデータプロットすなわちグラフ表示を生成することができる。一実施形態では、さらなるデータプロットは以下を含むが、これらに限定されない。すなわち、ヒープ使用状況と時間との間の関係、解放された累積バイトと時間との間の関係、および作成率である。本発明の実施形態は、ユーザ定義でのデータのグラフ表示を可能にすることを対象とする。特定のガーベッジコレクション情報を所望するユーザは、要求された入力に基づいてデータプロットを生成することができる。
【0025】
一実施形態では、メモリ使用状況データは、アプリケーション実行時間中のガーベッジコレクションアクティビティの要約を示すテキストの形態で提示される。図4は、本発明の一実施形態によるガーベッジコレクションシミュレータのグラフィカルユーザインタフェースによって生成される要約ビュー405の例示的な画面ショット400である。要約ビュー405は、JVMのヒープ容量、ガーベッジコレクションアクティビティ、および全体的な統計に関する詳細な情報を示す。タイミング情報410は、ガーベッジコレクションに費やされた時間について詳述する情報を含む。パイチャート415は、ガーベッジコレクションに費やされた全体実行時間の一部の別のグラフ表示である。
【0026】
図2Aのステップ225を参照すると、ユーザにガーベッジコレクション情報のいくつかのグラフ表示が提示される。これらグラフ表示を使用して、ユーザはアプリケーションのガーベッジコレクションアクティビティを解析することができる。グラフ表示で提示された情報に基づいて、ユーザは、アプリケーションのパラメータを最適化するために、各種入力パラメータを変更したいと思うことがある。
【0027】
図2Bのステップ230において、少なくとも1つのヒープパラメータ(たとえば、パラメータ、メモリ基準、またはヒープ入力)をガーベッジコレクションシミュレータで受信する。一実施形態では、ユーザ入力のヒープパラメータをガーベッジコレクションシミュレータで受信する。ヒープパラメータはコンピュータ生成することができ、また、本発明はヒープパラメータについてユーザ生成入力に限定されないことを理解されたい。
【0028】
図5は、本発明の一実施形態によるガーベッジコレクションシミュレータのグラフィカルユーザインタフェースによって生成されるヒープパラメータ入力ビュー505の例示的な画面ショット500である。ヒープパラメータ入力図では、各種ヒープパラメータを変更することによってユーザがアプリケーションのガーベッジコレクションを構成することができる。一実施形態では、4つのヒープパラメータがある。すなわち、総ヒープサイズ(total heap size)510、新しい生成サイズ(new generation size)515、生き残り比(survivor ratio)520、およびsystem.gcへの呼び出しインジケータ525である。
【0029】
一実施形態では、ヒープパラメータ入力ビュー505は、実行時にアプリケーションに存在するヒープパラメータを提示する。次いで、ユーザは元の値に相対してヒープパラメータの値を変更する。たとえば、JVMが64MBの総ヒープサイズ510を有する場合、ヒープパラメータ入力ビューは、総ヒープサイズ510に関連して値64MBを示す。次いで、ユーザは、元の値を汲み取った上で総ヒープサイズ510の値を変更することができる。
【0030】
一実施形態では、総ヒープサイズ510、新しい生成サイズ515、および生き残り比520についてのヒープパラメータ値は、テキストをテキストボックス(たとえば、テキストボックス512a〜512c)に直接入力することによって変更することが可能である。一実施形態では、総ヒープサイズ510、新しい生成サイズ515、および生き残り比520についてのヒープパラメータ値は、スライダ(たとえば、スライダ514a〜514c)を移動させることによって変更することが可能である。一実施形態では、スライダ514が移動されると、テキストボックス512において示される値が更新される。別の実施形態では、スライダ514によって示される値は、新しい値がテキストボックス512に入力されるときに更新される。
【0031】
一実施形態では、インジケータ525は、メモリ管理実行要求を発したアプリケーションがアプリケーション実行されるかどうかを示すチェックボックスである。追跡データに基づいてアプリケーションがこのような要求を開始していない場合、このボックスは最初チェックされている。ユーザは、アプリケーションの性質に応じてボックスをチェックしても、またチェックを外してもよい。
【0032】
一実施形態では、ヒープパラメータ入力ビュー505は、JVMセレクタ530を含む。一実施形態では、JVMセレクタ530は、複数のJVMバージョンを含むプルダウンメニューである。JVMセレクタはまず、どのJVMバージョン/タイプがアプリケーション実行において使用されたかを示し、他のJVMバージョン/タイプについてJVMオプションを生成する能力を有する。ユーザは、異なるJVMバージョンを選択することによってアプリケーションを再実行するために必要なJVMバージョン/タイプオプションを変更することができる。ユーザが所望のヒープパラメータに入力すると、シミュレーションアクチベータ540を起動することによってシミュレーションが実行される。
【0033】
一実施形態では、ヒープパラメータ入力ビュー505は、JVMオプション535を含む。JVMオプション535は、総ヒープサイズ510、新しい生成サイズ515、生き残り比520、およびsystem.gcへの呼び出しインジケータ525に選択された値を含む文字列である。所望のヒープパラメータが達成されると、JVMオプション535をJVMに直接コピーすることができる。
【0034】
図2Bのステップ235において、作業負荷特性が変更される。ステップ235はオプションであり、作業負荷特性は同じままであってもよいことを理解されたい。ステップ240において、ガーベッジコレクションシミュレータ構成が変更される。ステップ240はオプションであり、ガーベッジコレクションシミュレータ構成は同じままであってもよいことを理解されたい。
【0035】
図2Bのステップ245において、ガーベッジコレクションシミュレーション(たとえば、メモリ使用状況シミュレーション)を実行する。一実施形態では、シミュレーションアクチベータ(たとえば、図3のシミュレーションアクチベータ340)を選択すると、ガーベッジコレクションシミュレーションが起動する。ガーベッジコレクションシミュレーションは、メモリ使用状況データおよび入力パラメータをベースとする。
【0036】
図6は、本発明の実施形態によるガーベッジコレクション(たとえば、メモリ使用状況)をシミュレートするプロセス600を示すフローチャート図である。ステップ605において、詳細なガーベッジコレクション追跡データを受信する。一実施形態では、ガーベッジコレクション追跡データが、HP−UX上の−Xverbosegcオプションを通して取得される。一実施形態では、ガーベッジコレクション追跡データは、ガーベッジのコレクションに関連する情報を含み、本明細書ではガーベッジコレクションデータとも呼ばれる。
【0037】
ステップ610において、どのシミュレーションモデルを使用すべきかをガーベッジコレクション追跡データのフォーマットに基づいて決定する。ステップ615において、元のヒープ構成およびポリシーが、入力ガーベッジコレクション追跡データに基づいて決定される。ステップ620において、ヒープパラメータへの少なくとも1つの調整を受信する。調整はヒープ構成、作業負荷特性、またはシミュレータパラメータに行い得ることを理解されたい。
【0038】
ステップ625において、シミュレーション特性が、追跡データに表示される各測定間隔ごとに決定される。一実施形態では、シミュレーション特性は、以下を含む。
【0039】
・割り当てられた総メモリの決定
・収集された総メモリの決定
・メモリ割り当て率の推定
・メモリが参照されなくなる率の推定
ステップ630において、ステップ625において決定されたシミュレーション特性に基づいて新しいアプリケーションの実行がシミュレートされる。一実施形態において、変更されたヒープ構成について推定されたガーベッジコレクションシミュレーションデータは、以下を含むが、これらに限定されない。
【0040】
・ガーベッジコレクション間の間隔
・個々の各コレクションの所要時間
・各ガーベッジコレクションの原因
・2つのコレクションに割り当てられた総メモリ
・2つのコレクションで収集された総メモリ
・個々の各ガーベッジコレクションの所要時間
・年齢によるメモリ使用分布の推定
図2Bのステップ250において、ガーベッジコレクションシミュレーションデータの解析およびグラフ表示を生成する。一実施形態では、ガーベッジコレクションシミュレーションデータは表形式であり、複数のデータプロットの生成に適している。一実施形態では、ガーベッジコレクションの異なる態様を示すために、複数のデータプロットが生成される。特に、ガーベッジコレクションシミュレーションデータは、各種情報とアプリケーションの全実行時間との間の関係をプロットできるようにするタイミング情報を含む。
【0041】
ガーベッジコレクションシミュレーションデータについて生成されたグラフ表示は、図2Aのステップ225においてガーベッジコレクションデータについて生成されたものと同様であることを理解されたい。たとえば、図3の例示的な画面ショット300はまた、ガーベッジコレクションシミュレーションデータに基づくガーベッジコレクション所要時間データプロット305の図でもある。同様に、図4の例示的な画面ショット400は、ガーベッジコレクションシミュレーションデータに基づく要約ビュー405の図でもある。
【0042】
ガーベッジコレクションデータの場合と同様に、ガーベッジコレクションシミュレーションデータを用いて多種多様のデータプロットすなわちグラフ表示を生成することができる。一実施形態では、さらなるデータプロットは、以下を含むがこれらに限定されない。すなわち、ヒープ使用状況と時間との間の関係、フリーにされた累積バイトと時間との間の関係、および作成率である。本発明の実施形態は、ユーザ定義のデータのグラフ表示を可能にすることを対象とする。特定のガーベッジコレクション情報を所望するユーザは、要求された入力に基づいてデータプロットを生成することができる。
【0043】
一実施形態では、ガーベッジコレクションシミュレーションデータをガーベッジコレクションデータと比較するグラフ表示が生成される。別の実施形態では、ガーベッジコレクションシミュレーションデータを別のガーベッジコレクションシミュレーションデータセットと比較するグラフ表示が生成される。任意の数のガーベッジコレクションシミュレーションデータセットを比較し得ることを理解されたい。比較グラフ表示により、ユーザは同じアプリケーションの複数の異なるヒープパラメータセットのパフォーマンスを解析することができ、ひいてはユーザがアプリケーションに望ましいヒープパラメータセットを選択することができる。
【0044】
ユーザに、ガーベッジコレクションシミュレーション情報のいくつかのグラフ表示が提示される。これらグラフ表示を使用して、ユーザはアプリケーションのガーベッジコレクションアクティビティを解析することができる。グラフィカル表示に提示される情報に基づいて、ユーザは、アプリケーションのパフォーマンスを最適化するために各種入力パラメータを変更して、シミュレーションを再度実行したい場合がある。
【0045】
ステップ255において、別のシミュレーションを実行するか否かを決定する。一実施形態では、この決定はユーザによって下される。ユーザが別のシミュレーションを実行すると決定した場合、プロセス200はステップ230に戻り、少なくとも1つの新しいヒープパラメータを入力する。代替として、ユーザが別のシミュレーションを実行したくない場合、プロセス200はステップ250に続く。
【0046】
図2Aのステップ260において、最適化されたヒープパラメータがJVMに挿入される。一実施形態では、ヒープパラメータは、ガーベッジコレクションシミュレータによって文字列として提供される(たとえば、図5のJVMオプション535)。一実施形態では、ガーベッジコレクションシミュレータによってJVMに文字列が直接挿入される。別の実施形態では、ユーザがガーベッジコレクションシミュレータから文字列をJVMに直接コピーし貼り付けることができる。
【0047】
ステップ265において、シミュレーション結果の解析を続けるか否かを決定する。一実施形態では、この決定はユーザによって下される。ユーザが解析の継続を決定する場合、プロセス200はステップ210に戻る。代替として、ユーザが解析を継続しないと決定した場合、プロセス200はステップ270に続く。
【0048】
ステップ270において、アプリケーションが、最適化されたヒープパラメータを使用してJVM内で実行される。ステップ270はオプションであり、最適化されたヒープパラメータは信頼できるものであることを理解されたい。しかし、最適化されたヒープパラメータはシミュレーションの結果であるため、最適化されたヒープパラメータを使用してアプリケーションを実行し、有効性を確実にすることが望ましい場合がある。
【0049】
図7は、本発明の一実施形態によるJVM705とメモリ使用状況シミュレータ715(たとえば、ガーベッジコレクションシミュレータ)との間のデータフローを示すデータフロー図700である。JVM705およびメモリ使用状況シミュレータ715は、同じコンピュータシステム上に常駐しても、また別のコンピュータシステム上に常駐してもよいことを理解されたい。JVM705とメモリ使用状況シミュレータ715(たとえば、メモリ使用状況データ720および最適化されたパラメータ745)との間で転送されるデータは概して小さく、JVM705およびメモリ使用状況シミュレータ715が常駐する場所に関係なく、転送が容易である。
【0050】
Javaベースのアプリケーション710がJVM705内で実行され、メモリ使用状況データ720が生成される。メモリ使用状況データ720は、メモリ使用状況シミュレータ715に伝送される。メモリ使用状況データ720は、各ガーベッジコレクションに関するタイミング情報を含むメモリ使用状況情報を含む。メモリ使用状況シミュレータ715は、メモリ使用状況データのグラフ表示740を生成する。
【0051】
グラフ表示740に応答して、少なくとも1つのパラメータ725がメモリ使用状況シミュレータ715に入力される。オプションとして、作業負荷特性730およびシミュレータ構成735がメモリ使用状況シミュレータ715に入力される。メモリ使用状況データ720および入力ヒープパラメータ725に基づいて、シミュレーションが実行される。特に、メモリ使用状況データ720に基づいて、いくつかの仮定が行われる。たとえば、ガーベッジコレクションへの割り当てが線形比であるものと想定する。ガーベッジコレクションの挙動を推定することによって、ヒープパラメータの変更を考慮に入れてシミュレーションを行うことができる。本発明の他の実施形態では異なる仮定を行うことができることを理解されたい。
【0052】
シミュレーションが完了すると、一実施形態では、グラフ表示740がシミュレーションの結果を表示するように更新される。シミュレーションは、各種ヒープパラメータ725について任意の回数繰り返すことができることを理解されたい。ヒープパラメータが最適化されたと決定されると、最適化されたヒープパラメータ745がJVMに挿入される。この発明は、例として次のような実施形態を含む。
【0053】
(1) コンピュータアプリケーション(710)のメモリ使用状況を最適化する方法であって、
a)タイミング情報を含むアプリケーションメモリ使用状況データ(720)を受信するステップ(215)と、
b)前記アプリケーションメモリ使用状況データ(720)のグラフ表示(740)を生成するステップ(225)と、
c)少なくとも1つのヒープパラメータ(725)を受信するステップ(230)と、
d)前記アプリケーションメモリ使用状況データ(720)および前記ヒープパラメータ(725)に基づいてメモリ使用状況シミュレーションを行うステップ(245)と、
を含む方法。
【0054】
(2) 前記コンピュータアプリケーション(710)はJavaベースである(1)記載の方法。
【0055】
(3) 前記ヒープパラメータをプログラミング言語インタプリタ(705)に挿入するステップ(260)をさらに含む(1)記載の方法。
【0056】
(4) 前記プログラミング言語インタプリタ(705)はJava仮想マシンである(3)記載の方法。
【0057】
(5) 前記ヒープパラメータ(725)はユーザ入力に応答して受信される(1)記載の方法。
【0058】
(6) 前記c)および前記d)を繰り返して前記ガーベッジコレクションを最適化するステップをさらに含む(1)記載の方法。
【0059】
(7) 前記ガーベッジコレクションシミュレーションのグラフ表示(740)を生成ステップこと(250)をさらに含む(1)記載の方法。
【0060】
(8) 前記メモリ使用状況データ(720)はメモリ割り当て挙動追跡から受信する(1)記載の方法。
【0061】
(9) 前記メモリ割り当て挙動追跡は−Xverbosegcデータとして記録される(8)記載の方法。
【0062】
(10) 前記d)は、
前記アプリケーションメモリ使用状況データを受信するステップ(605)と、
前記アプリケーションメモリ使用状況データに基づいてシミュレーションモデルを決定するステップ(610)と、
前記アプリケーションメモリ使用状況データに基づいてヒープ構成およびヒープポリシーを決定するステップ(615)と、
少なくとも1つの前記ヒープパラメータを受信するステップ(620)と、
前記アプリケーションメモリ使用状況データの少なくとも1つの測定間隔中のシミュレーション特性を決定するステップ(625)と、
前記シミュレーション特性に基づいてアプリケーションの実行をシミュレートするステップ(630)と、
を含む(1)記載の方法。
【0063】
以上、コンピュータアプリケーションのメモリ使用状況を最適化する方法である本発明の好ましい実施形態を説明した。本発明は特定の実施形態で説明したが、本発明は、このような実施形態によって限定されると解釈されるべきではなく、併記の特許請求の範囲に従って解釈されるべきであることを理解されたい。
【図面の簡単な説明】
【図1】従来技術によるガーベッジコレクション調整プロセスを示すフローチャート図。
【図2A】本発明の実施形態によるガーベッジコレクション調整パラメータを選択するプロセスを示すフローチャート図。
【図2B】本発明の実施形態によるガーベッジコレクション調整パラメータを選択するプロセスを示すフローチャート図。
【図3】本発明の一実施形態によるガーベッジコレクションシミュレータグラフィカルユーザインタフェースによって生成されるガーベッジコレクション所要時間図の例示的な画面ショット。
【図4】本発明の一実施形態によるガーベッジコレクションシミュレータグラフィカルユーザインタフェースによって生成される要約ビューの例示的な画面ショット。
【図5】本発明の一実施形態によるメモリ使用状況シミュレータグラフィカルユーザインタフェースによって生成されるヒープパラメータ入力図の例示的な画面ショット。
【図6】本発明の一実施形態によるガーベッジコレクションをシミュレートするプロセスを示すフローチャート図。
【図7】本発明の一実施形態によるJava仮想マシンとガーベッジコレクションシミュレータとの間のデータフローを示すデータフロー図。
Claims (1)
- コンピュータアプリケーションのメモリ使用状況を最適化する方法であって、
a)タイミング情報を含むアプリケーションメモリ使用状況データを受信することと、
b)前記アプリケーションメモリ使用状況データのグラフ表示を生成することと、
c)少なくとも1つのヒープパラメータを受信することと、
d)前記アプリケーションメモリ使用状況データおよび前記ヒープパラメータに基づいてメモリ使用状況シミュレーションを行うことと、
を含む方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/104,751 US6804691B2 (en) | 2002-03-21 | 2002-03-21 | Method for optimization of memory usage for a computer program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004005486A true JP2004005486A (ja) | 2004-01-08 |
JP2004005486A5 JP2004005486A5 (ja) | 2006-04-06 |
Family
ID=27804323
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003073635A Withdrawn JP2004005486A (ja) | 2002-03-21 | 2003-03-18 | コンピュータアプリケーションのメモリ使用状況を最適化する方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6804691B2 (ja) |
EP (1) | EP1349077A3 (ja) |
JP (1) | JP2004005486A (ja) |
CN (1) | CN1447224A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007148584A (ja) * | 2005-11-24 | 2007-06-14 | Samsung Electronics Co Ltd | コンピュータのメモリ使用についての情報を提供するシステム及び方法 |
JP2007226399A (ja) * | 2006-02-22 | 2007-09-06 | Hitachi Ltd | 計算機制御方法、計算機、計算機制御プログラム及び計算機システム |
JP2012198925A (ja) * | 2012-06-13 | 2012-10-18 | Samsung Electronics Co Ltd | コンピュータのメモリ使用についての情報を提供するシステム及び方法 |
US20220291417A1 (en) * | 2021-03-04 | 2022-09-15 | Saudi Arabian Oil Company | Hydrocarbon well performance decline curve and evaluation tool |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6804691B2 (en) * | 2002-03-21 | 2004-10-12 | Hewlett-Packard Development Company, L.P. | Method for optimization of memory usage for a computer program |
US20030196061A1 (en) * | 2002-04-16 | 2003-10-16 | Hideya Kawahara | System and method for secure execution of multiple applications using a single GC heap |
US7529786B2 (en) * | 2003-07-30 | 2009-05-05 | Bea Systems, Inc. | System and method for adaptive garbage collection in a virtual machine environment |
US7197521B2 (en) * | 2003-11-21 | 2007-03-27 | Intel Corporation | Method and system performing concurrently mark-sweep garbage collection invoking garbage collection thread to track and mark live objects in heap block using bit vector |
US7434214B2 (en) * | 2004-01-21 | 2008-10-07 | International Business Machines Corporation | Method for determining a close approximate benefit of reducing memory footprint of a Java application |
US7636745B1 (en) * | 2004-03-12 | 2009-12-22 | Sun Microsystems, Inc. | Concurrent-marking-initiation heuristic |
US7340494B1 (en) * | 2004-03-12 | 2008-03-04 | Sun Microsystems, Inc. | Garbage-first garbage collection |
US7979863B2 (en) * | 2004-05-21 | 2011-07-12 | Computer Associates Think, Inc. | Method and apparatus for dynamic CPU resource management |
US7979857B2 (en) * | 2004-05-21 | 2011-07-12 | Computer Associates Think, Inc. | Method and apparatus for dynamic memory resource management |
US7237085B2 (en) * | 2004-05-28 | 2007-06-26 | Oracle International Corporation | Architecture for a scalable heap analysis tool |
JP4215037B2 (ja) | 2004-12-27 | 2009-01-28 | セイコーエプソン株式会社 | リソース管理システム、プリンタ、プリンタ用ネットワークカードおよびリソース管理プログラム、並びにリソース管理方法 |
JP4207938B2 (ja) * | 2005-02-01 | 2009-01-14 | セイコーエプソン株式会社 | ソフトウェア認証システム、ソフトウェア認証プログラム、およびソフトウェア認証方法 |
JP2006244451A (ja) * | 2005-02-01 | 2006-09-14 | Seiko Epson Corp | リソース管理システムおよびリソース管理プログラム、並びにリソース管理方法 |
JP4311386B2 (ja) | 2005-02-14 | 2009-08-12 | セイコーエプソン株式会社 | ファイル操作制限システムおよびファイル操作制限プログラム、ファイル操作制限方法、電子機器並びに印刷装置 |
US8104033B2 (en) | 2005-09-30 | 2012-01-24 | Computer Associates Think, Inc. | Managing virtual machines based on business priorty |
US8225313B2 (en) | 2005-10-19 | 2012-07-17 | Ca, Inc. | Object-based virtual infrastructure management |
US7843827B2 (en) * | 2005-12-22 | 2010-11-30 | International Business Machines Corporation | Method and device for configuring a network device |
US7467278B2 (en) * | 2006-05-08 | 2008-12-16 | International Business Machines Corporation | Memory tuning for garbage collection and central processing (CPU) utilization optimization |
US20080098191A1 (en) * | 2006-10-20 | 2008-04-24 | International Business Machines Corporation | Determining code efficiency by monitoring memory reallocation |
US20080148102A1 (en) * | 2006-12-15 | 2008-06-19 | International Business Machines Corporation | Method for enhancing debugging of runtime memory access errors by using an integrated visualization tool and a runtime memory error detection tool |
US9727440B2 (en) * | 2007-06-22 | 2017-08-08 | Red Hat, Inc. | Automatic simulation of virtual machine performance |
US9678803B2 (en) | 2007-06-22 | 2017-06-13 | Red Hat, Inc. | Migration of network entities to a cloud infrastructure |
US9588821B2 (en) | 2007-06-22 | 2017-03-07 | Red Hat, Inc. | Automatic determination of required resource allocation of virtual machines |
US9569330B2 (en) | 2007-06-22 | 2017-02-14 | Red Hat, Inc. | Performing dependency analysis on nodes of a business application service group |
JP5064134B2 (ja) * | 2007-08-03 | 2012-10-31 | 株式会社日立製作所 | メモリ管理方法およびその方法を用いるコンピュータ |
EP2040205A1 (de) * | 2007-09-14 | 2009-03-25 | Siemens Aktiengesellschaft | Verfahren und Vorrichtung zum Echtzeitdatenaustausch |
KR100964374B1 (ko) * | 2007-12-17 | 2010-06-17 | 한국전자통신연구원 | 전파식별 태그의 메모리 관리 장치 및 방법 |
US8356061B2 (en) * | 2008-06-23 | 2013-01-15 | Oracle America, Inc. | Maximizing throughput for a garbage collector |
US8301672B2 (en) * | 2008-09-22 | 2012-10-30 | Advanced Micro Devices, Inc. | GPU assisted garbage collection |
US8090752B2 (en) | 2008-12-16 | 2012-01-03 | Sap Ag | Monitoring memory consumption |
US20110119330A1 (en) * | 2009-11-13 | 2011-05-19 | Microsoft Corporation | Selective content loading based on complexity |
US20110191749A1 (en) * | 2010-01-29 | 2011-08-04 | Martijn Van Liebergen | System and method for generating enterprise applications |
US8504878B2 (en) * | 2010-05-04 | 2013-08-06 | Oracle International Corporation | Statistical analysis of heap dynamics for memory leak investigations |
US8522216B2 (en) | 2010-05-04 | 2013-08-27 | Oracle International Corporation | Memory leak detection |
US9405444B2 (en) | 2010-10-01 | 2016-08-02 | Z124 | User interface with independent drawer control |
CN102467461A (zh) * | 2010-11-01 | 2012-05-23 | 财团法人工业技术研究院 | 存储器仿真方法、装置以及模型产生器 |
RU2475819C1 (ru) * | 2011-08-04 | 2013-02-20 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ оптимизации использования ресурсов компьютера |
CN103197973A (zh) * | 2012-01-05 | 2013-07-10 | 中兴通讯股份有限公司 | 一种移动终端及其管理方法 |
US9075788B1 (en) * | 2012-06-15 | 2015-07-07 | Amazon Technologies, Inc. | Account state simulation service for cloud computing environments |
US9256469B2 (en) * | 2013-01-10 | 2016-02-09 | International Business Machines Corporation | System and method for improving memory usage in virtual machines |
US10318882B2 (en) | 2014-09-11 | 2019-06-11 | Amazon Technologies, Inc. | Optimized training of linear machine learning models |
US10963810B2 (en) | 2014-06-30 | 2021-03-30 | Amazon Technologies, Inc. | Efficient duplicate detection for machine learning data sets |
US9886670B2 (en) | 2014-06-30 | 2018-02-06 | Amazon Technologies, Inc. | Feature processing recipes for machine learning |
US11100420B2 (en) | 2014-06-30 | 2021-08-24 | Amazon Technologies, Inc. | Input processing for machine learning |
US10169715B2 (en) | 2014-06-30 | 2019-01-01 | Amazon Technologies, Inc. | Feature processing tradeoff management |
US10540606B2 (en) | 2014-06-30 | 2020-01-21 | Amazon Technologies, Inc. | Consistent filtering of machine learning data |
US10102480B2 (en) | 2014-06-30 | 2018-10-16 | Amazon Technologies, Inc. | Machine learning service |
US10339465B2 (en) | 2014-06-30 | 2019-07-02 | Amazon Technologies, Inc. | Optimized decision tree based models |
US11182691B1 (en) | 2014-08-14 | 2021-11-23 | Amazon Technologies, Inc. | Category-based sampling of machine learning data |
US10257275B1 (en) | 2015-10-26 | 2019-04-09 | Amazon Technologies, Inc. | Tuning software execution environments using Bayesian models |
US11210138B1 (en) * | 2020-09-24 | 2021-12-28 | OnScale, Inc. | Dynamic resource allocation for computational simulation |
JP2023006299A (ja) * | 2021-06-30 | 2023-01-18 | オムロン株式会社 | シミュレーションシステム、シミュレーションシステムの方法、およびシミュレーションのプログラム |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5819275A (en) * | 1995-06-07 | 1998-10-06 | Trusted Information Systems, Inc. | System and method for superimposing attributes on hierarchically organized file systems |
US5745703A (en) * | 1995-07-18 | 1998-04-28 | Nec Research Institute, Inc. | Transmission of higher-order objects across a network of heterogeneous machines |
US6351845B1 (en) * | 1999-02-04 | 2002-02-26 | Sun Microsystems, Inc. | Methods, apparatus, and articles of manufacture for analyzing memory use |
US6523168B1 (en) * | 1999-07-01 | 2003-02-18 | International Business Machines Corporation | Reduction of object creation during string concatenation and like operations that utilize temporary data storage |
US6804691B2 (en) * | 2002-03-21 | 2004-10-12 | Hewlett-Packard Development Company, L.P. | Method for optimization of memory usage for a computer program |
-
2002
- 2002-03-21 US US10/104,751 patent/US6804691B2/en not_active Expired - Fee Related
-
2003
- 2003-02-04 EP EP03250706A patent/EP1349077A3/en not_active Withdrawn
- 2003-03-18 JP JP2003073635A patent/JP2004005486A/ja not_active Withdrawn
- 2003-03-20 CN CN03107311.5A patent/CN1447224A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007148584A (ja) * | 2005-11-24 | 2007-06-14 | Samsung Electronics Co Ltd | コンピュータのメモリ使用についての情報を提供するシステム及び方法 |
JP2007226399A (ja) * | 2006-02-22 | 2007-09-06 | Hitachi Ltd | 計算機制御方法、計算機、計算機制御プログラム及び計算機システム |
JP2012198925A (ja) * | 2012-06-13 | 2012-10-18 | Samsung Electronics Co Ltd | コンピュータのメモリ使用についての情報を提供するシステム及び方法 |
US20220291417A1 (en) * | 2021-03-04 | 2022-09-15 | Saudi Arabian Oil Company | Hydrocarbon well performance decline curve and evaluation tool |
Also Published As
Publication number | Publication date |
---|---|
EP1349077A2 (en) | 2003-10-01 |
CN1447224A (zh) | 2003-10-08 |
US20030182597A1 (en) | 2003-09-25 |
EP1349077A3 (en) | 2005-12-28 |
US6804691B2 (en) | 2004-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004005486A (ja) | コンピュータアプリケーションのメモリ使用状況を最適化する方法 | |
US9858183B2 (en) | Determining a benefit of reducing memory footprint of a Java application | |
US7979857B2 (en) | Method and apparatus for dynamic memory resource management | |
JP4116877B2 (ja) | ヒープサイズ自動最適化処理方法,ヒープサイズ自動最適化装置およびそのプログラム | |
EP1425668B1 (en) | System and method for monitoring computer application and resource utilization | |
US7310718B1 (en) | Method for enabling comprehensive profiling of garbage-collected memory systems | |
US7979863B2 (en) | Method and apparatus for dynamic CPU resource management | |
US7779054B1 (en) | Heuristic-based resumption of fully-young garbage collection intervals | |
EP0993634B1 (en) | Method and apparatus for managing hashed objects | |
EP2225646B1 (en) | Memory management | |
US8583783B1 (en) | Method and system for adaptive recovery of heap memory | |
JP2012084150A (ja) | 2パス自動アプリケーション計測 | |
JP2003519834A (ja) | メモリ管理によって参照の局所性を改善するための方法および装置 | |
US20070192388A1 (en) | Method of and apparatus for managing memory | |
US6801990B2 (en) | Demand-based memory-block splitting | |
US8312466B2 (en) | Restricting resources consumed by ghost agents | |
CN107733735B (zh) | 一种植入于压测宝中的脚本录制系统及方法 | |
WO2021093365A1 (zh) | 一种gpu显存管理控制方法及相关装置 | |
US8555286B2 (en) | Method, system, and apparatus for establishing a software configurable computing environment | |
CN110427258A (zh) | 基于云平台的资源调度控制方法及装置 | |
JP3772996B2 (ja) | 実際ワーキング・セット決定システム | |
CN109582649A (zh) | 一种元数据存储方法、装置、设备及可读存储介质 | |
US20110191758A1 (en) | Optimized Memory Allocator By Analyzing Runtime Statistics | |
US20090228537A1 (en) | Object Allocation System and Method | |
CN116881012A (zh) | 一种容器应用垂直扩容方法、装置、设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060206 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060206 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20060323 |