JP2007157131A - ガベージ・コレクション対応の仮想マシンにおいて、将来のメモリ不足例外を自動予測する方法、コンピュータ読み取り可能な媒体、及びコンピューティング・デバイス - Google Patents

ガベージ・コレクション対応の仮想マシンにおいて、将来のメモリ不足例外を自動予測する方法、コンピュータ読み取り可能な媒体、及びコンピューティング・デバイス Download PDF

Info

Publication number
JP2007157131A
JP2007157131A JP2006312254A JP2006312254A JP2007157131A JP 2007157131 A JP2007157131 A JP 2007157131A JP 2006312254 A JP2006312254 A JP 2006312254A JP 2006312254 A JP2006312254 A JP 2006312254A JP 2007157131 A JP2007157131 A JP 2007157131A
Authority
JP
Japan
Prior art keywords
memory
pool
garbage collection
virtual machine
size
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.)
Pending
Application number
JP2006312254A
Other languages
English (en)
Inventor
John G Nistler
ジョン・ジー・ニストラー
Vanessa J Grose
ヴァネッサ・ジェー・グロース
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2007157131A publication Critical patent/JP2007157131A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】ガベージ・コレクション対応環境において、メモリ使用状況を管理すること。
【解決手段】ガベージ・コレクション対応の環境おいて、メモリ不足例外を自動的に予測する方法及び装置が開示される。本発明の一実施形態によると、メモリ不足イベントを予測する方法は、複数のガベージ・コレクション・サイクルにわたり、メモリ・プールから使用することのできるメモリのサイズを監視するステップを含む。監視された、使用可能なメモリのサイズに基づき、メモリ使用状況プロファイルを生成する。その後、メモリ使用状況プロファイルを用いて、メモリ不足例外が発生するおそれがあるか否かを予測する。
【選択図】図3

Description

本発明は全般に、コンピュータ・ソフトウェアの分野に関する。特に、本発明は、仮想マシンにおいて、メモリの使用状態を管理する方法及びシステムに関する。
一般に、コンピュータ・ソフトウェア・アプリケーションは、サーバまたはクライアント・コンピュータに配置されるものである。アプリケーションには、仮想マシンが提供する環境内で実行されるものもある。仮想マシンは、様々な方法で実現され得るコンピューティング・デバイスの抽象仕様を提供するものである。仮想マシンによって、コンピュータ・プログラムまたはアプリケーションは、基盤となるハードウェアに関わらず、いかなるコンピュータ・プラットフォーム上においても稼働することができるようになる。仮想マシンのバージョンが利用可能であれば、基盤となるいかなるコンピュータ・システム上においても、仮想マシン向けにコンパイルされたアプリケーションを実行することができる。仮想マシンは通常、ハードウェアよりもむしろソフトウェアとして実現され、「実行環境」と呼ばれることが多い。また、仮想マシン向けにコンパイルされたソース・コードは通常、「バイトコード」と呼ばれる。一般的に、仮想マシンは、バイトコードから命令を生成することによって、アプリケーションを実行する。生成された命令はその後、基盤となるコンピュータ・システム上で利用可能な物理的なプロセッサによって実行してもよい。
周知の仮想マシンの一例としては、サン・マイクロシステムズ(Sun(R)Microsystems)から入手可能なJava(R)仮想マシンがある。Java(R)仮想マシンは、バイトコード命令セット、レジスタ群、スタック、ガベージ・コレクション対応ヒープ(すなわち、ユーザ・アプリケーション用のメモリ領域)、及びメソッドを格納するメモリ領域から成る。Java(R)プログラミング言語で記述されたアプリケーションはコンパイルされ、バイトコードが生成される。バイトコードは、Java(R)仮想マシンによって解釈されるプラットフォームに依存しないコードを提供する。
実際には、通常、システム上で稼働している仮想マシンの各インスタンス用として、メモリ・プールをコンピュータ・システムが確保している。仮想マシンがアプリケーション・プログラムを実行するのに応じて、メモリ・プールから使用することのできるメモリは時間とともに増加したり、減少したりする場合がある。これは、アプリケーション・プログラムがメモリ・プールからメモリ・オブジェクトを確保したり、また解放したりするため発生する。場合によっては、仮想マシン上で稼働しているアプリケーションは、使用可能なメモリよりも大きなメモリを確保しようとすることもある。例えば、アプリケーションが使用するメモリが、仮想マシンに対して確保されたメモリのサイズを超える場合があったり、あるいは、仮想マシンが基盤となるホスト・システムから使用可能なメモリを使い尽くしてしまう場合もある。この状況が起こった場合、「メモリ不足(out of memory)」例外が発生する。このようなメモリ不足例外により、アプリケーション、仮想マシン、あるいは基盤となるシステムがクラッシュしてしまうこともある。クラッシュの結果として、アプリケーションが提供するサービスが機能しなくなったり、保存されていないデータが失われたり、さらにはユーザが介入してシステムまたはアプリケーションを再起動しなければならない場合もある。
メモリ不足例外の発生を防止するアプローチの一つとして、ガベージ・コレクション・プロセスの使用がある。ガベージ・コレクションとは、使用されなくなったメモリを自動的に検出し、解放することを指す。例えば、Java(R)仮想マシンでは、プログラマが明示的にオブジェクト及び他のデータを解放しなくてもよいように、ガベージ・コレクションが行われる。実際には、メモリ使用状況を監視し、所定の割合のメモリが使用されたときに、ガベージ・コレクタを呼び出し、任意のアプリケーションが必要としなくなったメモリを回収するように、仮想マシンを構成してもよい。
仮想マシン上で稼働中のアプリケーションからメモリを回収するプロセスをガベージ・コレクション・サイクルという。ガベージ・コレクションの一方法としては、「トレーシング」が知られている。トレーシングでは、ガベージ・コレクタはメモリ・オブジェクトが「到達可能である」か、すなわち「ルートに関連付けられている」かを判断する。システム内の他のオブジェクトがメモリ・オブジェクトを参照している場合、該メモリ・オブジェクトは到達可能であるとみなされる。稼動中のどのプロセスもメモリ・オブジェクトを参照していない場合、該メモリ・オブジェクトは「到達不可能」であるとみなされ、ガベージ・コレクションの候補となる。ガベージ・コレクタは通常、到達不可能なメモリ・オブジェクトをヒープ(すなわち、ユーザ・アプリケーションがメモリを確保する際の、確保元となるメモリ領域)に戻し、仮想マシン上で稼働中のアプリケーション用のメモリを解放する。しかしながら、たとえガベージ・コレクタを用いたとしても、アプリケーションが仮想マシンから使用可能なメモリをすべて消費してしまう場合もあり、この結果、「メモリ不足」例外が発生することもある。
また、別のメモリ管理アプローチとしては、システム管理者にメモリ使用状況を監視させるものがある。現在のところ、システム管理者が、システム上で稼働している仮想マシンの各インスタンスをポーリングしてメモリ使用状況を求め、メモリ・リークが起きていそうなところをそれぞれ特定する。「メモリ・リーク」とは、時間の経過とともに未使用メモリが減少していく状況を説明するのに用いられるプログラミング用語である。通常、メモリ・リークは、プログラムがメモリを確保し、不必要となったときに確保されたメモリを戻し(あるいは、解放し)損ねている場合に、発生する。十分な時間が経過した場合、過剰なメモリ・リークによってプログラム障害が発生する場合もある。しかしながら多くの場合、メモリ・リークを検出することは難しい。特に、リークしているメモリのサイズが小さい場合、あるいは多くのアプリケーションが同時に実行されているような複雑な環境下でメモリ・リークが発生している場合、メモリ・リークを起こしている単一のアプリケーションを特定することは難しくなる。さらに、該アプローチでは、システム管理者がメモリ使用状況のステータスを監視しなければならないので、時間がかかり、かつエラーが起こりやすい。さらに、頻繁に一貫して行わない限り、システム管理者は、メモリ・リークを検出し損なう場合もある。
このように、当業界では、ガベージ・コレクション対応環境において、メモリ使用状況を管理する方法が必要とされている。
本発明は全般に、メモリ不足例外が発生するおそれのある時期を予測する方法、コンピュータ読み取り可能な媒体、及びコンピュータ・システムに関する。
本発明の一実施形態によると、コンピュータにより実現され、ガベージ・コレクション対応のコンピューティング環境において、メモリの使用状態を管理する方法が提供される。該方法は、通常、複数のガベージ・コレクション・サイクルの各サイクル中に、複数のアプリケーションがメモリ・プールから使用することのできるメモリのサイズを監視するステップを含み、アプリケーションはそれぞれ、メモリ・プールからメモリを動的に確保し、メモリ・プールにメモリを動的に戻すこともできる。さらに、該方法は通常、2回以上のガベージ・コレクション・サイクルにわたるメモリ・プールから使用することのできるメモリの変化の特性を示すメモリ使用状況プロファイルを生成するステップと、メモリ使用状況プロファイルに基づいて、メモリ不足例外が発生するおそれがあるか否かを予測するステップとを含む。メモリ・プールで使用することのできるメモリのサイズが、所定のサイズに達した場合、ガベージ・コレクション・サイクルが始動される。
本発明の別の実施形態によると、プログラムを有するコンピュータ読み取り可能な媒体が提供される。該プログラムが実行された場合、ガベージ・コレクション対応のコンピューティング環境において、メモリ使用状態を管理する動作を行う。該動作は通常、複数のガベージ・コレクション・サイクルの各サイクル中に、複数のアプリケーションがメモリ・プールから使用することのできるメモリのサイズを監視するステップを含み、アプリケーションはそれぞれ、メモリ・プールからメモリを動的に確保し、メモリ・プールにメモリを動的に戻すこともできる。さらに、該動作は通常、2回以上のガベージ・コレクション・サイクルにわたるメモリ・プールから使用することのできるメモリの変化の特性を示すメモリ使用状況プロファイルを生成するステップと、メモリ使用状況プロファイルに基づいて、メモリ不足例外が発生するおそれがあるか否かを予測するステップとを含む。
本発明のさらに別の実施形態によると、コンピューティング・デバイスが提供される。該コンピューティング・デバイスは通常、プロセッサと、該プロセッサと通信するメモリとを有する。該メモリは、将来メモリ不足例外が発生するおそれのある時期を予測するように構成されている仮想マシンのプログラムを少なくとも含む。該仮想マシンのプログラムは少なくとも、複数のアプリケーションによって使用されるメモリ・プールを確保するステップを行うように構成されてもよく、アプリケーションはそれぞれ、メモリ・プールからメモリを動的に確保し、メモリ・プールにメモリを動的に戻すこともできる。さらに、ステップには、メモリ・プールから使用することのできるメモリのサイズが所定のサイズに達した場合、ガベージ・コレクタ・プロセスを始動し、ガベージ・コレクション・サイクルを行うステップを含むこともできる。さらに、ステップには、複数のガベージ・コレクション・サイクルの各サイクル中に、メモリ・プールから使用することのできるメモリのサイズを監視するステップと、2回以上のガベージ・コレクション・サイクルにわたるメモリ・プールから使用することのできるメモリの変化の特性を示すメモリ使用状況プロファイルを生成するステップと、メモリ不足例外が発生するおそれがあるか否かを予測するステップとを、含むこともできる。
先に列挙した本発明の特徴が理解できるように、添付の図面に示された例示的な実施形態を参照して、先に簡潔に要約された本発明をより具体的に説明する。しかしながら、添付の図面は、本発明の典型的な実施形態のみを示したものであり、また本発明には同様に効果的な実施形態として認められるものが他にもあるであろうから、添付の図面は本発明の範囲を限定するものとしてみなされるべきものではないという点に留意されたい。
本発明の実施形態は、ガベージ・コレクション対応環境における仮想マシンのメモリ使用状況によって「メモリ不足」例外が発生する時期を予測する方法、システム、及び製品を提供する。
以下、本発明の実施形態について説明するが、本発明は、記載されている特定の実施形態に限定されるべきではないことを理解されたい。むしろ、別の実施形態に関連するにしろ、関連しないにしろ、以下の特徴及び構成要素の組み合わせはいかなるものも、本発明を実現及び実施するように意図されたものである。さらに、本発明の種々の実施形態は、先行技術に対して多くの利点を提供する。しかしながら、本発明の実施形態は、他の考えられる解決策または先行技術、あるいはその両方に優る利点を達成することができるが、特定の利点が任意の実施形態によって達成されるか否かという点は、本発明を限定するものではない。したがって、下記の態様、特徴、実施形態、及び利点は単に例示的なものにすぎず、特許請求の範囲に明示的に列挙されない限り、添付の特許請求の範囲の構成要素または限定としてみなされるものではない。同様に、「本発明」と書いてあっても、本明細書中で開示されている任意の発明の主題を一般化したものとして解釈されるべきものではなく、また、特許請求の範囲に明示的に列挙されない限り、添付の特許請求の範囲の構成要素または限定としてみなされるものではない。
本発明の一実施形態は、例えば、図1に図示の、以下に記載するコンピュータ・システムなどのコンピュータ・システム用のプログラム製品として実現される。プログラム製品のプログラムは、実施形態の機能(本明細書中に記載の方法も含む)を定義するものであり、種々の信号担持媒体に含めることができる。信号担持媒体の例としては、(i)書き込み不可能な記憶媒体に永久に格納された情報(例えば、CD−ROMドライブにより読み取り可能なCD−ROMディスクなどのコンピュータ内の読み取り専用メモリ・デバイス)、(ii)書き込み可能な記憶媒体に格納された可変情報(例えば、ディスケット・ドライブ内のフレキシブル・ディスクまたはハードディスク・ドライブ)、(iii)無線通信を含むコンピュータ・ネットワークまたは電話網などの通信媒体によって、コンピュータに伝達される情報があるが、これらに限定されない。以下の実施形態では、特にインターネット及び他のネットワークからダウンロードした情報が含まれる。これらの信号担持媒体は、本発明の機能を指示するコンピュータで読み取り可能な命令を担持している場合、本発明の実施形態に相当する。
一般に、本発明の実施形態を実現するために実行されるルーチンは、オペレーティング・システムの一部、あるいは特定のアプリケーション、コンポーネント、プログラム、モジュール、オブジェクト、命令シーケンスであってもよい。通常、本発明のコンピュータ・プログラムは、ネイティブ・コンピュータによって機械可読フォーマットつまり実行可能命令に翻訳される多数の命令から構成される。また、プログラムは、プログラム自体にローカルに存在するか、あるいはメモリまたは記憶装置で見られる変数及びデータ構造から構成される。さらに、以下に記載の種々のプログラムは、本発明の特定の実施形態において、アプリケーション用に実装されるが、それらは該アプリケーションに基づいて識別される。しかしながら、以下の特定のプログラム名称はいかなるものも便宜上用いられているにすぎないことを認識されたい。したがって、本発明は、このような名称によって識別または示唆される任意の特定のアプリケーション内での使用のみに限定されるべきではない。
図1は、本発明の一実施形態にしたがって構成されたコンピュータ・システム100を示すブロック図である。例えば、コンピュータ・システム100は、メモリ105及び中央処理装置(CPU)115を有する。また、コンピュータ・システム100は通常、不揮発性記憶装置、ネットワーク・インタフェース・デバイス、ディスプレイ、入出力装置などのコンポーネントもさらに有する。一実施形態において、コンピュータ・システム100は、デスクトップ・コンピュータ、サーバ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータなどのコンピュータ・システムを含むこともできる。しかしながら、本明細書に記載のシステム及びソフトウェア・アプリケーションは、いかなる既存のコンピューティング環境またはプログラミング言語に限定されるものではなく、新たなコンピューティング環境及びプログラミング言語が利用可能になり次第、これらに適応させ、活用することもできる。
一実施形態において、1つ以上の仮想マシン110がメモリ105に存在する。コンピュータ・システム100上で稼動する仮想マシン110はそれぞれ、該仮想マシン110向けに作成されたソフトウェア・アプリケーションを実行するように構成されている。例えば、仮想マシン110は、米サン・マイクロシステムズ社から入手可能なJava(R)仮想マシン及び動作環境(あるいは、Java(R)仮想マシン仕様に従って作成された同等の仮想マシン)であってもよい。本明細書では、Java(R)仮想マシンを例として用いて本発明の実施形態を説明するが、本発明の実施形態は、いかなるガベージ・コレクション対応のアプリケーション環境において実現してもよい。
図2は、本発明の一実施形態に係る、アプリケーション210を実行する仮想マシン220の動作をさらに示すブロック図である。上述のように、ソフトウェア・アプリケーションはプログラミング言語を用いて記述され、コンパイラが、特定の仮想マシン220向けのバイトコードを生成するように構成するとよい。その後、仮想マシン220は、バイトコードからネイティブ命令230を生成することによって、アプリケーション210を実行すればよい。その後、ネイティブ命令をCPU115によって実行すればよい。
図3は、仮想マシン300の一実施形態をさらに示すブロック図である。例えば、仮想マシン300は、ガベージ・コレクタ315、メモリ使用状態プロファイラ320、及び使用可能なメモリ・プール325を有する。また、仮想マシン300が複数のアプリケーション305乃至305を実行している様子が示されている。アプリケーション305乃至305は仮想マシン300と関連するプログラミング言語(例えば、Java(R)プログラミング言語)で記述され、仮想マシン300で実行可能なバイトコードにコンパイルされる。一実施形態において、仮想マシン300は、複数のアプリケーション305乃至305を同時に実行するように構成されていてもよい。したがって、図3には仮想マシン300上で稼動する3つのアプリケーション305乃至305が示されているが、任意のタイミングで任意の数のアプリケーション305を仮想マシン300上で実行することもできる。
アプリケーション305は、実行中にメモリ・プール325(例えば、ヒープ構造)からメモリを動的に確保することもできる。例えば、Java(R)プログラミング言語では、実行時にヒープからメモリを確保するために用いられる「new」演算子が提供されている。他のプログラミング言語においても、同様の構成が提供されている。オブジェクトがアプリケーション305に参照されなくなった場合、後続の新たなオブジェクトが使用できるように、オブジェクトが占有しているヒープ空間をリサイクルすることもできる。上述のように、ガベージ・コレクションとは、アプリケーション305に参照されなくなったオブジェクトに対して確保されているメモリを自動的に解放するプロセスである。
一実施形態において、ガベージ・コレクション・プロセスまたはガベージ・コレクション・サイクルを実行するように、ガベージ・コレクタ315を構成することができる。ガベージ・コレクション・サイクルを実行することによって、使用されていない(しかし、確保されている)メモリをリサイクルすることができる。オブジェクトが、ガベージ・コレクタ315によって「収集」されると、該オブジェクトに対して確保されているメモリはいかなるものもメモリ・プール325に戻される。上述のように、メモリ・プール325はヒープ構造を有し、アプリケーションはこのヒープ構造からメモリを確保することができる。したがって、ガベージ・コレクタがオブジェクトに対して確保されているメモリを「ごみ(ガベージ)」として回収する場合、メモリはヒープに戻される。
一実施形態において、メモリ・プール325のサイズは、仮想マシン300の任意のインスタンス用に指定される固定パラメータを用いて決定される。本明細書中で使用されているように、メモリ・プール325のサイズをMmaxとして表す。Java(R)仮想マシンでは、Mmaxはメモリ・ヒープのサイズをバイトで定義している。アプリケーション305によって確保されたメモリがMmaxを超える場合に、メモリ不足例外が発生する。アプリケーションに必要とされなくなったメモリをリサイクルするために、仮想マシン300は、ガベージ・コレクタ315を起動するように構成されている。ガベージ・コレクション・サイクルは、Mmaxの所定の割合がアプリケーション305乃至305によって使用された場合にいつも始動されるように構成することができる。各ガベージ・コレクション・サイクルの間、ガベージ・コレクタ315はアプリケーション305乃至305に使用されなくなったメモリを解放しようとする。
一実施形態において、ガベージ・コレクタ315は、メモリ・プール325(例えば、ヒープ)内のメモリ・オブジェクトが将来アクセスされなくなる時期を内部的に予測することによって、メモリを解放する。各ガベージ・コレクション・サイクルの間、アプリケーション305の1つによって確保された各メモリ・オブジェクトを調査するように、ガベージ・コレクタ315を構成してもよい。将来、メモリ・オブジェクトがアクセスされる可能性がある場合(例えば、アプリケーション305が、該オブジェクトを参照している場合)、ガベージ・コレクタ315は該オブジェクトをそのままにしておく。将来、メモリ・オブジェクトがアクセスされないような場合(例えば、どのアプリケーション305も該オブジェクトを参照していない場合)、ガベージ・コレクタ315は、該オブジェクトに対して確保されたメモリをリサイクルし、メモリ・プール325に戻す。しかしながら、時には、アプリケーションが不必要となったオブジェクトを参照し続ける場合もある。この場合、ガベージ・コレクタ315は、このメモリを解放してメモリ・プール325に戻すことができない。
例えば、アプリケーションは、「メモリ・リーク」を起こすことがある。前述のように、「メモリ・リーク」とは、時間経過とともにメモリが減少していく状態を説明するために用いられるプログラミング用語である。「メモリ・リーク」は、アプリケーションがある程度のメモリを確保して、該メモリが不必要になったときにシステムに戻し損ねると、発生する。例えば、正常に動作するアプリケーションは、確保したメモリが必要なくなると、これを解放する。しかしながら、時には、メモリが不必要になったときに、アプリケーションが確保されたメモリを解放し損なう場合もある。アプリケーションが該メモリを参照し続けていると、そのために、ガベージ・コレクタは、ガベージ・コレクション・サイクル中に該メモリを回収することができなくなる。アプリケーションがメモリ・オブジェクトを確保し続け、これを解放しない場合、このようなプログラムはそのうち、仮想マシンに対して確保されたメモリすべてを消費してしまい、その結果、「メモリ不足例外」が発生する。
他にも多くの状況で、メモリ・リークは引き起こされる。例えば、リンク・リストまたはハッシュ・テーブルが、参照されているが不必要なオブジェクトを含む場合もある。別のメモリ・リークが発生するありがちな方法としては、Java(R)プログラミング言語によって提供されるネイティブ・メソッドの使用がある。ネイティブ・コードでは、プログラマは、明示的にオブジェクトへのグローバル参照を作成することができる。グローバル参照は、それ自身が削除されない限り、ガベージ・コレクタによってリサイクルされない。したがって、プログラマがグローバル参照の削除を怠った場合、メモリ・リークが生じる場合がある。
図3には、メモリ使用状態プロファイラ320も示されている。メモリ使用状態プロファイラ320は、メモリ・プールからのメモリの使用状況に関するメモリ使用状況プロファイルを生成するように構成されるとよい。一実施形態において、メモリ使用状態プロファイラ320は、「メモリ不足」例外が発生するおそれがあるか否かを判断するように構成される。この場合、システム管理者または別のアプリケーションに予測される「メモリ不足」例外を警告したり、あるいは別の対応措置を行うように、メモリ使用状態プロファイラ320をさらに構成することもできる。図4乃至7を参照して、メモリ使用状態プロファイラ320の動作をさらに説明する。
まず、図4に、メモリ・プール325に関するメモリ使用状態プロファイルを作るためのメモリ使用状態プロファイラ320の動作を示す。一実施形態において、仮想マシン300は、ガベージ・コレクタ315によって行われる各ガベージ・コレクション・サイクルの一部として、メソッド400を起動する。ステップ420において、メモリ使用状態プロファイラ320はメモリ・プロファイル・データを収集する。例えば、メモリ使用状態プロファイラ320は、各アプリケーション305がメモリ・プール325から確保したメモリのサイズを求めてもよい。このようにして、各ガベージ・コレクション・サイクル中、メモリ使用状態プロファイラ320は、メモリ使用状況のスナップショットを取得することもできる。ステップ430において、メモリ使用状態プロファイラ320は、メモリ使用状況プロファイルを作るために十分な量のデータが集まったか否かを判断する。例えば、最低限のガベージ・コレクション・サイクルの回数にわたりメモリ使用状況データを収集し、その後メモリ使用状況プロファイルを作るように、メモリ使用状態プロファイラ320を構成してもよい。十分な量のデータが収集されていない場合、メモリ使用状態プロファイラ320はステップ420に戻り、後続のガベージ・コレクション・サイクルの間に、さらに多くのデータが収集されるのを待つ。十分な量のデータが収集された場合、ステップ440において、メモリ使用状態プロファイラ320はメモリ使用状況プロファイルを生成する。
一実施形態において、メモリ・プロファイルとは、仮想マシン300、メモリ・プール325、及びアプリケーション305のメモリ使用状況を時間経過とともに表すデータ点の集合である。メモリ使用状態プロファイラ320は、メモリ使用状態データを十分に収集した後で、メモリ使用状況プロファイルを作るように構成してもよい。例えば、メモリ使用状態プロファイラ320は、各ガベージ・コレクション・サイクル中に収集したデータ点を用いて、回帰分析を行ってもよい。利用可能なデータ点が多くなるにつれて、回帰分析の精度は高くなる。しかしながら、他の適当な統計的手法を用いて、メモリ使用状況プロファイルを生成してもよい。
アプリケーション305の実際のメモリ使用状態に応じて、作成されたメモリ使用状況プロファイルは、線形あるいは指数関数的なメモリ使用状況プロファイルを示すこともある。しかしながら、メモリ使用状態は他の予測可能なパターンに従う場合もある。例えば、メモリ使用状態は、多項関数的あるいは正弦関数的なパターンに従う場合もある。特定のメモリ使用状況プロファイルに関係なく、メモリ使用状況プロファイルを使用して、仮想マシン300上で稼動しているアプリケーション305の将来のメモリ使用状況が予測される。例えば、線形回帰を用いた場合、メモリ・プロファイル・データから生成された線形方程式は、アプリケーション305がメモリ・プール325から消費したメモリのメモリ消費レートを経時的に表す。この方程式が、アプリケーション305の使用メモリ量が一定して増加する様子を示している場合(例えば、メモリ使用状況を表す線形方程式の傾きが正の場合)、メモリ・オブジェクトを解放するというガベージ・コレクタ315の動作をよそに、「メモリ不足」例外が最終的に起こる場合もある。別の実施形態において、他の手法を用いてメモリ不足例外が起こり得る時期を予測してもよい。例えば、ニューラル・ネットまたは機械学習技術などのヒューリスティクスを用いて、メモリ使用状態プロファイル・データを分析してもよい。
ステップ450において、メモリ使用状態プロファイラ320は、メモリ使用状況データから作られたメモリ使用状況プロファイルに基づいて、「メモリ不足」例外が発生するおそれがあるか否かを判断する。メモリ不足例外が発生するおそれがあると判断された場合は、メモリ・リークが発生しているおそれがある。メモリ使用状況プロファイル及び仮想マシンで使用可能なメモリの最大容量Mmaxを用いて、メモリ使用状態プロファイラ320は、「メモリ不足」例外が発生するおそれがある時期を予測することができる。メモリ不足例外が予測される場合、ステップ460において、システム管理者に対してメッセージを送信し、予測された「メモリ不足」例外が発生するおそれがある時期を通知するようにメモリ使用状態プロファイラ320を構成することができる。「メモリ不足」例外が予測されない場合は、ステップ470において、メソッド400は終了する。
メモリ使用状況プロファイル及びメモリ使用状態プロファイラ320の構成に応じて、種々の対応措置を行うことができる。例えば、メモリ・リークによって線形増加パターンが示されている場合、当面は重大な問題にならない場合もある。この場合、メモリ使用状態プロファイラ320は、単に自動電子メール・メッセージによってシステム管理者に通知する。あるいは、メモリ・リークによって指数関数的増加パターンが示されていると、仮想マシン300のクラッシュが差し迫っている場合がある。この場合、システム管理者に連絡するためにより積極的なステップ(例えば、インスタント・メッセージまたは携帯電話の呼び出し)を行うように、メモリ使用状態プロファイラ320を構成してもよい。あるいは、メモリ使用状態プロファイラ320に、仮想マシン300上で稼動しているプロセスを終了する権限を与え、メモリ・リークを引き起こしているアプリケーションを犠牲にして、他のアプリケーション305が機能し続けることができるようにすることもできる。あるいは、仮想マシンに対して確保されるメモリのサイズの増加を要求するように構成してもよい。これにより、「メモリ不足」例外が発生するまでの時間を遅らせることができる。
また、「メモリ不足」イベントが発生するおそれがあるか否かという予測(あるいは、その時期)についての信頼性レベルを算出するように、メモリ使用状態プロファイラ320を構成してもよい。一実施形態において、収集されたメモリ・プロファイル・データの量または質を用いて信頼性レベルを求めるように、メモリ使用状態プロファイラ320を構成することもできる。例えば、周知の統計的手法を用いて、データ点セットと回帰分析によって生成された線形方程式との相関度合いを求めてもよい。しかしながら、いかなる適当な統計的手法をも用いることができる。予測精度が指定された閾値を超える場合にのみ、「メモリ不足」予測を送る(あるいは、別の対応措置を行う)ように、メモリ使用状態プロファイラ320を構成することもできる。
図5は、本発明の一実施形態に係る、メモリ使用状況プロファイル生成するためにメモリ使用状態プロファイラ320が行うメソッド500を示す。メソッド500は、ステップ510において開始し、ステップ520に進む。アプリケーション305を実行しながら、ステップ520において、仮想マシン300は仮想マシン環境のメモリを監視する。例えば、メモリ・プール325に残っている空き領域のサイズを監視するように、仮想マシン300を構成してもよい。ステップ530において、仮想メモリ300は、メモリの使用状況を監視しながら、空きメモリがMmaxの所定の割合を下回っているか否かを判断する。
空きメモリが所定の割合を下回っている状況が発生すると、仮想マシン300はガベージ・コレクタ315によって行われるガベージ・コレクション・サイクルを始動させる。上述のように、ガベージ・コレクタ315は、アプリケーション305によって確保されたメモリ・オブジェクトを調べ、確保されているメモリの一部をリサイクル、すなわち「解放」し、メモリ・プール325に戻す。これにより、仮想マシン300が「メモリ不足」例外に陥らないようにする。しかしながら、状況によって、ガベージ・コレクタ315が、確保されている(不要な)メモリ・オブジェクトを仮想マシンに戻すことができない場合もある。例えば、アプリケーション305のうちの1つが「メモリ・リーク」を起こしている場合がある。すなわち、アプリケーション305が、自身が必要としなくなったメモリをメモリ・プール325へ戻し損ねている場合である。アプリケーション305が確保されたメモリを参照し続けている場合、ガベージ・コレクタ315は該メモリをメモリ・プール325に戻すことができない。さらに、アプリケーション305がメモリ・オブジェクトを確保し続けると、やがて仮想マシンに割り当てられたメモリMmaxをすべて消費する場合があり、これにより「メモリ不足」例外が発生する。
メモリ使用状況が、Mmaxの所定の割合を上回っていない場合、メソッド500はステップ520にとどまる。メモリ使用状況がこの閾値を上回ると、ステップ540において、仮想マシン300は、ガベージ・コレクタ315によって行われるガベージ・コレクション・サイクルを始動させる。各ガベージ・コレクション・サイクルの実行後、メモリ使用状態プロファイラ320は、メモリ・プール325からアプリケーション305に対して確保されたメモリのサイズを求めることができる。本明細書で用いられているように、このメモリのサイズは、変数「g」によって表される。ガベージ・コレクション・サイクル完了後、メモリ使用状況プロファイルを作るために用いられるデータ点を格納しているテーブルに「g」を格納してもよい。データ・テーブルの一例を図6に示す。別の実施形態において、ガベージ・コレクタ315によって行われる各ガベージ・コレクション・サイクルの前にメモリ使用状況プロファイル・データを収集するように、メモリ使用状態プロファイラ320を構成することもできる。
状況に応じて、ステップ560では、メモリ使用状態プロファイラ320が、メモリ・プール325から使用可能なメモリの総サイズ、すなわちMmaxから、確保されているメモリのサイズ、すなわち、「g」を引くことによって、メモリ・プール325の空きメモリ、すなわち未使用メモリのサイズを算出する。本明細書中では、この値は、変数「am」(「available memory」の略)によって表される。「am」の値は、仮想マシン300に対して確保されたメモリ・ヒープのサイズが時間とともに変化するような実施形態において有用となる場合がある。別の形態においては、ガベージ・コレクション・サイクル毎に「am」の値は算出されず、その代わり、必要に応じてMmaxの値と「g」の値から動的に算出するように構成してもよい。「am」の値が算出された場合、ステップ560において、メモリ使用状態プロファイラ320は「am」の値をメモリ使用状況プロファイル・テーブルに記録する。ガベージ・コレクション・サイクルが完了し、メモリ使用状況データを記録した後で、メソッド500は、ステップ570において終了する。
図6は、メモリ・プロファイル・データ・テーブル600の一実施形態を示す。メモリ・プロファイル・データ・テーブル600には、収集されたメモリ・プロファイル・データの行がいくつか含まれる。各行620乃至620は複数のデータ要素を含み、これらのデータ要素はテーブル600の列に格納されている。各行620乃至620は、ガベージ・コレクタ315によって行われるガベージ・コレクション・サイクル1サイクル中に収集されたメモリ・プロファイル・データを表す。列605には、仮想マシン300がガベージ・コレクタ315を始動し、ガベージ・コレクション・サイクルを行わせた時間が含まれる。列610には、各ガベージ・コレクション・サイクル後に仮想マシンによって使用されているメモリのサイズ、すなわち「g」の値が含まれる。「am」の値が算出される場合、列615には、メモリ・プール325から使用可能な空きメモリのサイズ、すなわち「am」の値が含まれる。列615の値は、Mmaxからgを引いて算出される。
図7は、本発明の一実施形態に係る、仮想マシンにおけるメモリ使用状況プロファイルのグラフ700を示す。グラフ700は、図6のメモリ・プロファイル・データの値から作ってもよい。例えば、二次元のグラフ700は、時間を表す横軸710と、メモリ使用状況を表す縦軸705とを有する。これら2つの軸の間に、仮想マシン300の任意のインスタンスのメモリ使用状況を表す実線755がある。
仮想マシン300のインスタンスが最初に始動され、アプリケーションの実行が開始されたときに、該アプリケーションは、メモリ・プール325から急速なペースでメモリを確保する場合が多い。これは、初期化期間745の実線755の傾きが急な部分によって示されている。初期化期間745以降、仮想マシン300のメモリ使用は頭打ちになる。状況によっては、仮想マシン300及びアプリケーション305は、メモリ・プール325から使用可能なメモリすべてを消費することはない場合もある。しかしながら、アプリケーション305がメモリ・リークを起こしている場合、グラフ700に示されるとおり、メモリ・リーク期間750に漸増傾向の傾きを持つ実線755のように、メモリ使用状態は次第に増加する。
仮想マシン300のメモリ使用状態が、Mmaxの所定の割合に達すると、ガベージ・コレクタ315がガベージ・コレクション・サイクルを行い、現在アプリケーション305に対して確保されているメモリの一部をリサイクルしようとする。例えば、ガベージ・コレクタ315は、時間「T1」において最初に実行される。同時に、使用メモリのサイズ「G1」725がテーブル600に記録される。時間T2において、ガベージ・コレクタ315は第2のガベージ・コレクション・サイクルを行い、メモリ使用状態プロファイラ320はプロファイル・データ点「G2」を収集し、この値をテーブル600に格納する。ガベージ・コレクション・サイクルを複数回行った後、メモリ使用状況プロファイルが現れはじめる。図示されているように、メモリ使用状況プロファイルは実線755によって表されている。この図中では、仮想マシン300にメモリ・リークが起こっている。
メモリ使用状態プロファイラ320は、各ガベージ・コレクション・サイクル中に収集されたデータ点を用いて、仮想マシン300の将来のメモリ使用状況を求める。メモリ使用状況の予測グラフは、点線760を用いてグラフにプロットされている。これは、予測される仮想マシン300のメモリ使用状況を表している。仮想マシン300が使用することのできる最大メモリサイズは既知(すなわち、Mmax740)であるため、メモリ使用状況プロファイルを用いて、仮想マシン300で「メモリ不足」例外が起こる時期を求めることができる。すなわち、実線755とMmax740を表す横線との交点が、仮想マシン300で「メモリ不足」例外が起こる時点に相当する。グラフ上では、該交点の時間はTFAILURE735として表示されている。上述のように、この「メモリ不足」例外の予測時間TFAILURE735をシステム管理者にメッセージの形式で送信することができる。
このように、本発明の実施形態は、「メモリ不足」例外が発生するおそれがある時期を予測する方法を提供する。例えば、ガベージ・コレクタが行う各ガベージ・コレクション・サイクル中に、メモリ使用状況データを収集することができる。このように収集されたデータ点セットを用いて、メモリ使用状態プロファイラは、メモリ使用状況が安定しているか、一定の速度で増加しているか、あるいは指数関数的速度で増加しているかを判断する。メモリ・リークの深刻度及び予測される増加速度に応じて、種々の対応措置をとってもよい。
これにより、システム管理者は必要に応じて介入し、進行中のメモリ・リークによってシステムの動作が妨げられないようにする。同時に、システム管理者は、このようなメモリ・リークを検出するために、ガベージ・コレクション対応環境におけるメモリ使用状況を定期的に監視する必要はなく、自由に別のタスクに集中できる。
以上、前述の内容は、本発明の実施形態を対象としたものであるが、本発明の基本的な範囲から逸脱することなく、本発明の更に別の実施形態を考え出すこともできる。また、本発明の範囲は、添付の特許請求の範囲によって画定される。
仮想マシンを実行させるコンピュータ・システムの一実施形態を示すブロック図である。 本発明の一実施形態に係る、アプリケーションを実行する仮想マシンを示すブロック図である。 仮想マシンの一実施形態を示すブロック図である。 本発明の一実施形態に係る、メモリ不足イベントの発生時期を予測するメソッドを示すフローチャートである。 本発明の一実施形態に係る、メモリ・プロファイルを作成するためのデータを収集するメソッドを示すフローチャートである。 メモリ・プロファイル・データ・テーブルの一実施形態を示す。 メモリ・プロファイラによって収集されるデータを表したグラフの一例である。
符号の説明
100 コンピュータ
105 メモリ
110 仮想マシン
115 CPU
210 アプリケーション
220 仮想マシン
230 ネイティブ命令
300 仮想マシン
305、305、305 アプリケーション
315 ガベージ・コレクタ
320 メモリ使用状態プロファイラ
325 メモリ・プール

Claims (11)

  1. コンピュータによって実現され、ガベージ・コレクション対応のコンピューティング環境において、メモリの使用状態を管理する方法であって、
    複数のガベージ・コレクション・サイクルの各サイクル中に、複数のアプリケーションがメモリ・プールから使用することのできるメモリのサイズを監視するステップであって、前記アプリケーションはそれぞれ、前記メモリ・プールからメモリを動的に確保し、前記メモリ・プールにメモリを動的に戻すこともできる、前記監視するステップと、
    監視された、前記メモリ・プールから使用することのできるメモリの前記サイズに基づいて、2回以上のガベージ・コレクション・サイクルにわたる前記メモリ・プールから使用することのできる前記メモリの変化の特性を示すメモリ使用状況プロファイルを生成するステップと、
    前記メモリ使用状況プロファイルに基づいて、メモリ不足例外が発生するおそれがあるか否かを予測するステップとを、
    含む方法。
  2. 前記メモリ・プールは、メモリ・マネージャによって確保される、請求項1に記載の方法。
  3. 前記メモリ・プールから使用することのできるメモリの前記サイズが所定のサイズに達した場合、ガベージ・コレクタ・プロセスを始動し、各ガベージ・コレクション・サイクルを行わせるステップをさらに含む、請求項1に記載の方法。
  4. 前記メモリ・プールはメモリ・ヒープを含む、請求項1に記載の方法。
  5. 前記ガベージ・コレクション対応のコンピューティング環境は、仮想マシン環境を含む、請求項1に記載の方法。
  6. 前記予測されたメモリ不足例外の発生を回避するために、対応措置を行うステップをさらに含む、請求項1に記載の方法。
  7. 前記対応措置は、前記予測されたメモリ不足例外が発生するおそれのある時期の通知をシステム管理者に送信することを含む、請求項6に記載の方法。
  8. 前記メモリ使用状況プロファイルを生成するステップは、前記メモリ・プールから確保されたメモリの前記サイズに基づいて、統計分析を行うことを含む、請求項1に記載の方法。
  9. 前記メモリ不足例外が発生するおそれがあるか否かという前記予測に関する信頼性レベルを求めるステップをさらに含む、請求項1に記載の方法。
  10. プログラムを有するコンピュータ読み取り可能な媒体であって、前記プログラムは、該プログラムが実行された場合、ガベージ・コレクション対応のコンピューティング環境において、メモリ使用状態を管理する動作を行い、前記動作は、
    複数のガベージ・コレクション・サイクルの各サイクル中に、複数のアプリケーションがメモリ・プールから使用することのできるメモリのサイズを監視するステップであって、前記アプリケーションはそれぞれ、前記メモリ・プールからメモリを動的に確保し、前記メモリ・プールにメモリを動的に戻すこともできる、前記監視するステップと、
    監視された、前記メモリ・プールから使用することのできるメモリの前記サイズに基づいて、2回以上のガベージ・コレクション・サイクルにわたる前記メモリ・プールから使用することのできる前記メモリの変化の特性を示すメモリ使用状況プロファイルを生成するステップと、
    前記メモリ使用状況プロファイルに基づいて、メモリ不足例外が発生するおそれがあるか否かを予測するステップとを、
    含む、コンピュータ読み取り可能な媒体。
  11. ガベージ・コレクション対応のコンピューティング環境において、メモリ使用状態を管理するように構成されたコンピューティング・デバイスであって、
    プロセッサと、
    少なくとも仮想マシン・プログラムを含む、前記プロセッサと通信するメモリとを含み、前記仮想マシン・プログラムは少なくとも、
    複数のアプリケーションによって使用されるメモリ・プールを確保するステップであって、前記アプリケーションはそれぞれ、前記メモリ・プールからメモリを動的に確保し、前記メモリ・プールにメモリを動的に戻すこともできる、前記確保するステップと
    前記メモリ・プールにおいて使用することのできるメモリの前記サイズが、所定のサイズに達した場合、ガベージ・コレクタ・プロセスを始動し、ガベージ・コレクション・サイクルを行わせるステップと、
    各ガベージ・コレクション・サイクル中に、前記メモリ・プールから使用することのできるメモリの前記サイズを監視するステップと、
    監視された、前記メモリ・プールから使用することのできるメモリの前記サイズに基づいて、2回以上のガベージ・コレクション・サイクルにわたる前記メモリ・プールから使用することのできる前記メモリの変化の特性を示すメモリ使用状況プロファイルを生成するステップと、
    前記メモリ使用状況プロファイルに基づいて、メモリ不足例外が発生するおそれがあるか否かを予測するステップとを、
    行うことによって、将来、メモリ不足例外が発生するおそれのある時期を予測するように構成されている、コンピューティング・デバイス。
JP2006312254A 2005-11-30 2006-11-17 ガベージ・コレクション対応の仮想マシンにおいて、将来のメモリ不足例外を自動予測する方法、コンピュータ読み取り可能な媒体、及びコンピューティング・デバイス Pending JP2007157131A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/290,882 US20070136402A1 (en) 2005-11-30 2005-11-30 Automatic prediction of future out of memory exceptions in a garbage collected virtual machine

Publications (1)

Publication Number Publication Date
JP2007157131A true JP2007157131A (ja) 2007-06-21

Family

ID=38125775

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006312254A Pending JP2007157131A (ja) 2005-11-30 2006-11-17 ガベージ・コレクション対応の仮想マシンにおいて、将来のメモリ不足例外を自動予測する方法、コンピュータ読み取り可能な媒体、及びコンピューティング・デバイス

Country Status (3)

Country Link
US (1) US20070136402A1 (ja)
JP (1) JP2007157131A (ja)
CN (1) CN1975696A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009211654A (ja) * 2008-03-06 2009-09-17 Nec Corp メモリ管理装置、システム、方法、及び、プログラム
JP2010146543A (ja) * 2008-12-16 2010-07-01 Sap Ag メモリ消費監視
WO2011027626A1 (ja) * 2009-09-01 2011-03-10 株式会社日立製作所 メモリ管理方法、計算機システム及びコンピュータ可読媒体
US9218275B2 (en) 2012-09-25 2015-12-22 Nec Corporation Memory management control system, memory management control method, and storage medium storing memory management control program
JP2016512362A (ja) * 2013-03-11 2016-04-25 アマゾン テクノロジーズ インク コンピューティング環境での追跡アプリケーション使用法
JP2017529590A (ja) * 2014-07-30 2017-10-05 サイオス テクノロジー コーポレーションSios Technology Corporation グラフ理論を用いたアプリケーション、仮想化およびクラウド・インフラストラクチャ・リソースの集中型分析
JP2018018122A (ja) * 2016-07-25 2018-02-01 富士通株式会社 情報処理プログラム、情報処理装置および情報処理方法

Families Citing this family (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7343453B2 (en) 2004-04-30 2008-03-11 Commvault Systems, Inc. Hierarchical systems and methods for providing a unified view of storage information
US20060248103A1 (en) * 2005-04-29 2006-11-02 Cisco Technology, Inc. Method of detecting memory leaks in software applications
US7418630B1 (en) * 2005-06-27 2008-08-26 Sun Microsystems, Inc. Method and apparatus for computer system diagnostics using safepoints
US7516361B2 (en) * 2005-06-27 2009-04-07 Sun Microsystems, Inc. Method for automatic checkpoint of system and application software
US20110010518A1 (en) 2005-12-19 2011-01-13 Srinivas Kavuri Systems and Methods for Migrating Components in a Hierarchical Storage Network
US8095931B1 (en) 2006-04-27 2012-01-10 Vmware, Inc. Controlling memory conditions in a virtual machine
US7694103B1 (en) * 2006-06-23 2010-04-06 Emc Corporation Efficient use of memory and accessing of stored records
US8949295B2 (en) 2006-09-21 2015-02-03 Vmware, Inc. Cooperative memory resource management via application-level balloon
US8271550B2 (en) * 2006-10-27 2012-09-18 Hewlett-Packard Development Company, L.P. Memory piece categorization
WO2008117470A1 (ja) * 2007-03-27 2008-10-02 Fujitsu Limited 仮想計算機制御プログラム、仮想計算機制御システムおよび仮想計算機移動方法
US7933937B2 (en) * 2008-02-08 2011-04-26 Oracle America, Inc. System and method for asynchronous parallel garbage collection
US7870257B2 (en) 2008-06-02 2011-01-11 International Business Machines Corporation Enhancing real-time performance for java application serving
JP5253030B2 (ja) * 2008-07-31 2013-07-31 キヤノン株式会社 管理装置、その制御方法及び制御プログラム
JP2010072854A (ja) * 2008-09-17 2010-04-02 Canon Inc 情報処理装置の支援装置、支援方法、およびコンピュータプログラム
US8458717B1 (en) 2008-09-23 2013-06-04 Gogrid, LLC System and method for automated criteria based deployment of virtual machines across a grid of hosting resources
US8145455B2 (en) * 2008-09-30 2012-03-27 Hewlett-Packard Development Company, L.P. Predicting resource usage of an application in a virtual environment
US8131519B2 (en) * 2008-09-30 2012-03-06 Hewlett-Packard Development Company, L.P. Accuracy in a prediction of resource usage of an application in a virtual environment
US8145456B2 (en) 2008-09-30 2012-03-27 Hewlett-Packard Development Company, L.P. Optimizing a prediction of resource usage of an application in a virtual environment
US8260603B2 (en) * 2008-09-30 2012-09-04 Hewlett-Packard Development Company, L.P. Scaling a prediction model of resource usage of an application in a virtual environment
US8180604B2 (en) * 2008-09-30 2012-05-15 Hewlett-Packard Development Company, L.P. Optimizing a prediction of resource usage of multiple applications in a virtual environment
US20100153675A1 (en) * 2008-12-12 2010-06-17 Microsoft Corporation Management of Native Memory Usage
US8930912B2 (en) * 2008-12-16 2015-01-06 Cadence Design Systems, Inc. Method and system for performing software verification
US8788782B2 (en) * 2009-08-13 2014-07-22 Qualcomm Incorporated Apparatus and method for memory management and efficient data processing
US9038073B2 (en) * 2009-08-13 2015-05-19 Qualcomm Incorporated Data mover moving data to accelerator for processing and returning result data based on instruction received from a processor utilizing software and hardware interrupts
US8762532B2 (en) * 2009-08-13 2014-06-24 Qualcomm Incorporated Apparatus and method for efficient memory allocation
US20110041128A1 (en) * 2009-08-13 2011-02-17 Mathias Kohlenz Apparatus and Method for Distributed Data Processing
JP2011107746A (ja) * 2009-11-12 2011-06-02 Hitachi Ltd メモリ管理方法、計算機システム及びプログラム
US8266419B2 (en) * 2009-11-25 2012-09-11 Sprint Communications Company L.P. Fast restart on a virtual machine
US8583875B1 (en) 2010-07-13 2013-11-12 Vmware, Inc. Efficient readable ballooning of guest memory by backing balloon pages with a shared page
US8495512B1 (en) 2010-05-20 2013-07-23 Gogrid, LLC System and method for storing a configuration of virtual servers in a hosting system
US8499138B2 (en) 2010-06-30 2013-07-30 International Business Machines Corporation Demand-based memory management of non-pagable data storage
US9009384B2 (en) 2010-08-17 2015-04-14 Microsoft Technology Licensing, Llc Virtual machine memory management in systems with asymmetric memory
US9413624B2 (en) * 2010-09-29 2016-08-09 Blackberry Limited Method and device for providing system status information
US8983536B2 (en) * 2010-10-22 2015-03-17 Google Technology Holdings LLC Resource management in a multi-operating environment
GB2500153A (en) 2010-11-30 2013-09-11 Ibm A Method, Computer Program and System to Optimize Memory Management of An Application Running on a Virtual Machine
US9064048B2 (en) * 2011-02-17 2015-06-23 Red Hat, Inc. Memory leak detection
US9575781B1 (en) 2011-05-23 2017-02-21 Open Invention Network Llc Automatic determination of a virtual machine's dependencies on storage virtualization
US9104563B2 (en) 2012-02-09 2015-08-11 Microsoft Technology Licensing, Llc Self-tuning statistical resource leak detection
US10152409B2 (en) 2012-04-30 2018-12-11 Vmware, Inc. Hybrid in-heap out-of-heap ballooning for java virtual machines
US9852054B2 (en) 2012-04-30 2017-12-26 Vmware, Inc. Elastic caching for Java virtual machines
US9141533B2 (en) * 2012-05-31 2015-09-22 Silicon Motion, Inc. Data storage device and flash memory control method for performing garbage collection
US9015203B2 (en) 2012-05-31 2015-04-21 Vmware, Inc. Balloon object feedback for Java Virtual Machines
US9940228B2 (en) 2012-06-14 2018-04-10 Vmware, Inc. Proactive memory reclamation for java virtual machines
CN102831013B (zh) * 2012-07-19 2014-11-05 西安交通大学 一种基于虚拟机的vod应用资源消耗预测方法
US9311236B2 (en) * 2012-11-20 2016-04-12 International Business Machines Corporation Out-of-memory avoidance in dynamic virtual machine memory adjustment
CN103902394B (zh) * 2012-12-26 2017-04-12 腾讯科技(深圳)有限公司 清理终端冗余信息的方法及装置
US9330014B2 (en) * 2012-12-31 2016-05-03 Sunedison Semiconductor Limited (Uen201334164H) Method and system for full resolution real-time data logging
US9256469B2 (en) 2013-01-10 2016-02-09 International Business Machines Corporation System and method for improving memory usage in virtual machines
US10740358B2 (en) 2013-04-11 2020-08-11 Oracle International Corporation Knowledge-intensive data processing system
US9495395B2 (en) * 2013-04-11 2016-11-15 Oracle International Corporation Predictive diagnosis of SLA violations in cloud services by seasonal trending and forecasting with thread intensity analytics
CN104182332B (zh) * 2013-05-21 2017-09-29 华为技术有限公司 判断资源泄漏、预测资源使用情况的方法及装置
US9460389B1 (en) 2013-05-31 2016-10-04 Emc Corporation Method for prediction of the duration of garbage collection for backup storage systems
US9146862B2 (en) 2013-07-18 2015-09-29 International Business Machines Corporation Optimizing memory usage across multiple garbage collected computer environments
CA2972406A1 (en) * 2015-01-02 2016-07-07 Systech Corporation Control infrastructure
US9575837B2 (en) 2015-02-03 2017-02-21 Uber Technologies, Inc. System and method for introducing functionality to an application for use with a network service
US9720823B2 (en) * 2015-06-18 2017-08-01 Oracle International Corporation Free memory trending for detecting out-of-memory events in virtual machines
US10248561B2 (en) * 2015-06-18 2019-04-02 Oracle International Corporation Stateless detection of out-of-memory events in virtual machines
US10275320B2 (en) 2015-06-26 2019-04-30 Commvault Systems, Inc. Incrementally accumulating in-process performance data and hierarchical reporting thereof for a data stream in a secondary copy operation
CN109542672B (zh) * 2015-09-25 2023-05-05 伊姆西Ip控股有限责任公司 用于回收快照存储空间中的存储块的方法和装置
US9547520B1 (en) * 2015-09-25 2017-01-17 International Business Machines Corporation Virtual machine load balancing
US11533226B2 (en) 2015-10-13 2022-12-20 Uber Technologies, Inc. Application service configuration system
US10158528B2 (en) 2015-10-13 2018-12-18 Uber Technologies, Inc. Application service configuration system
US20200034745A1 (en) * 2015-10-19 2020-01-30 Nutanix, Inc. Time series analysis and forecasting using a distributed tournament selection process
US10248494B2 (en) 2015-10-29 2019-04-02 Commvault Systems, Inc. Monitoring, diagnosing, and repairing a management database in a data storage management system
US11715025B2 (en) 2015-12-30 2023-08-01 Nutanix, Inc. Method for forecasting distributed resource utilization in a virtualization environment
US10289347B2 (en) * 2016-04-26 2019-05-14 Servicenow, Inc. Detection and remediation of memory leaks
US10417111B2 (en) 2016-05-09 2019-09-17 Oracle International Corporation Correlation of stack segment intensity in emergent relationships
US10168953B1 (en) 2016-05-20 2019-01-01 Nutanix, Inc. Dynamic scheduling of distributed storage management tasks using predicted system characteristics
US10902324B2 (en) 2016-06-13 2021-01-26 Nutanix, Inc. Dynamic data snapshot management using predictive modeling
US10361925B1 (en) 2016-06-23 2019-07-23 Nutanix, Inc. Storage infrastructure scenario planning
US10484301B1 (en) 2016-09-30 2019-11-19 Nutanix, Inc. Dynamic resource distribution using periodicity-aware predictive modeling
US10691491B2 (en) 2016-10-19 2020-06-23 Nutanix, Inc. Adapting a pre-trained distributed resource predictive model to a target distributed computing environment
CN106802772B (zh) * 2016-12-30 2020-02-14 深圳忆联信息***有限公司 数据回收的方法、装置及固态硬盘
US10628306B2 (en) * 2017-02-01 2020-04-21 Microsoft Technology Licensing, Llc Garbage collector
US10565104B2 (en) 2017-08-01 2020-02-18 International Business Machines Corporation System and method to manage and share managed runtime memory for JAVA virtual machine
US10831591B2 (en) * 2018-01-11 2020-11-10 Commvault Systems, Inc. Remedial action based on maintaining process awareness in data storage management
US10802836B2 (en) 2018-10-19 2020-10-13 Oracle International Corporation Intelligently determining a virtual machine configuration during runtime based on garbage collection characteristics
US11823014B2 (en) 2018-11-21 2023-11-21 Sap Se Machine learning based database anomaly prediction
US10977105B2 (en) * 2018-12-14 2021-04-13 Uber Technologies, Inc. Memory crash prevention for a computing device
US20200192572A1 (en) 2018-12-14 2020-06-18 Commvault Systems, Inc. Disk usage growth prediction system
US10936480B2 (en) * 2019-05-31 2021-03-02 Microsoft Technology Licensing, Llc Memory management for multiple process instances
US11340924B2 (en) 2019-06-27 2022-05-24 International Business Machines Corporation Machine-learning based heap memory tuning
US11507422B2 (en) * 2019-08-01 2022-11-22 EMC IP Holding Company LLC Method and system for intelligently provisioning resources in storage systems
US11269748B2 (en) * 2020-04-22 2022-03-08 Microsoft Technology Licensing, Llc Diagnosing and mitigating memory leak in computing nodes
CN111522645B (zh) * 2020-04-29 2023-09-12 抖音视界有限公司 对象的处理方法、装置、电子设备及计算机可读存储介质
CN111651236A (zh) * 2020-05-11 2020-09-11 腾讯科技(深圳)有限公司 虚拟机内存优化处理方法及相关装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6629266B1 (en) * 1999-11-17 2003-09-30 International Business Machines Corporation Method and system for transparent symptom-based selective software rejuvenation
US7552153B2 (en) * 2004-12-28 2009-06-23 Sap Ag Virtual machine monitoring using shared memory
US20060173877A1 (en) * 2005-01-10 2006-08-03 Piotr Findeisen Automated alerts for resource retention problems
US7434206B2 (en) * 2005-03-10 2008-10-07 Hewlett-Packard Development Company, L.P. Identifying memory leaks in computer systems

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009211654A (ja) * 2008-03-06 2009-09-17 Nec Corp メモリ管理装置、システム、方法、及び、プログラム
JP2010146543A (ja) * 2008-12-16 2010-07-01 Sap Ag メモリ消費監視
WO2011027626A1 (ja) * 2009-09-01 2011-03-10 株式会社日立製作所 メモリ管理方法、計算機システム及びコンピュータ可読媒体
JP2011053862A (ja) * 2009-09-01 2011-03-17 Hitachi Ltd メモリ管理方法、計算機システム及びプログラム
US8966212B2 (en) 2009-09-01 2015-02-24 Hitachi, Ltd. Memory management method, computer system and computer readable medium
US9218275B2 (en) 2012-09-25 2015-12-22 Nec Corporation Memory management control system, memory management control method, and storage medium storing memory management control program
JP2016512362A (ja) * 2013-03-11 2016-04-25 アマゾン テクノロジーズ インク コンピューティング環境での追跡アプリケーション使用法
JP2017529590A (ja) * 2014-07-30 2017-10-05 サイオス テクノロジー コーポレーションSios Technology Corporation グラフ理論を用いたアプリケーション、仮想化およびクラウド・インフラストラクチャ・リソースの集中型分析
US11093664B2 (en) 2014-07-30 2021-08-17 SIOS Technology Corp. Method and apparatus for converged analysis of application, virtualization, and cloud infrastructure resources using graph theory and statistical classification
JP2018018122A (ja) * 2016-07-25 2018-02-01 富士通株式会社 情報処理プログラム、情報処理装置および情報処理方法

Also Published As

Publication number Publication date
US20070136402A1 (en) 2007-06-14
CN1975696A (zh) 2007-06-06

Similar Documents

Publication Publication Date Title
JP2007157131A (ja) ガベージ・コレクション対応の仮想マシンにおいて、将来のメモリ不足例外を自動予測する方法、コンピュータ読み取り可能な媒体、及びコンピューティング・デバイス
US11106579B2 (en) System and method to manage and share managed runtime memory for java virtual machine
US8886866B2 (en) Optimizing memory management of an application running on a virtual machine
US20060173877A1 (en) Automated alerts for resource retention problems
US20080147705A1 (en) Predicting out of memory conditions using soft references
US8397111B2 (en) Software memory leak analysis using memory isolation
US9495115B2 (en) Automatic analysis of issues concerning automatic memory management
KR101955737B1 (ko) 강화된 어플리케이션 메타데이터를 갖는 메모리 매니저
US20070033240A1 (en) Scheduling garbage collection
TWI604378B (zh) 用於新應用程式之記憶體管理模型與介面
US9519869B2 (en) Predictive computer system resource monitoring
US20040225689A1 (en) Autonomic logging support
US20070067758A1 (en) Identifying sources of memory retention
KR101438990B1 (ko) 시스템 테스트 방법
JP5980916B2 (ja) コンピュータにより実行される方法及びコンピュータシステム
JP2012525641A (ja) アプリケーション効率エンジン
US9436534B2 (en) Method and system for preemptive detection of occurrence of faulty conditions based on resource usage
CN110109741B (zh) 循环任务的管理方法、装置、电子设备及存储介质
US9870400B2 (en) Managed runtime cache analysis
CN111090627B (zh) 基于池化的日志存储方法、装置、计算机设备及存储介质
Kudrjavets et al. When malloc () Never Returns NULL—Reliability as an Illusion
US8140597B2 (en) Computer system memory management
CN116340102B (zh) 一种内存溢出监测方法、装置、设备及存储介质
KR20050033327A (ko) 실시간 운영체제 기반의 메모리 관리 시스템
JP2009238011A (ja) 実行環境の制御方法およびプログラム