JP2007157131A - ガベージ・コレクション対応の仮想マシンにおいて、将来のメモリ不足例外を自動予測する方法、コンピュータ読み取り可能な媒体、及びコンピューティング・デバイス - Google Patents
ガベージ・コレクション対応の仮想マシンにおいて、将来のメモリ不足例外を自動予測する方法、コンピュータ読み取り可能な媒体、及びコンピューティング・デバイス Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage 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
【解決手段】ガベージ・コレクション対応の環境おいて、メモリ不足例外を自動的に予測する方法及び装置が開示される。本発明の一実施形態によると、メモリ不足イベントを予測する方法は、複数のガベージ・コレクション・サイクルにわたり、メモリ・プールから使用することのできるメモリのサイズを監視するステップを含む。監視された、使用可能なメモリのサイズに基づき、メモリ使用状況プロファイルを生成する。その後、メモリ使用状況プロファイルを用いて、メモリ不足例外が発生するおそれがあるか否かを予測する。
【選択図】図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が複数のアプリケーション3051乃至3053を実行している様子が示されている。アプリケーション3051乃至3053は仮想マシン300と関連するプログラミング言語(例えば、Java(R)プログラミング言語)で記述され、仮想マシン300で実行可能なバイトコードにコンパイルされる。一実施形態において、仮想マシン300は、複数のアプリケーション3051乃至3053を同時に実行するように構成されていてもよい。したがって、図3には仮想マシン300上で稼動する3つのアプリケーション3051乃至3053が示されているが、任意のタイミングで任意の数のアプリケーション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の所定の割合がアプリケーション3051乃至3053によって使用された場合にいつも始動されるように構成することができる。各ガベージ・コレクション・サイクルの間、ガベージ・コレクタ315はアプリケーション3051乃至3053に使用されなくなったメモリを解放しようとする。
一実施形態において、ガベージ・コレクタ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には、収集されたメモリ・プロファイル・データの行がいくつか含まれる。各行6201乃至620Nは複数のデータ要素を含み、これらのデータ要素はテーブル600の列に格納されている。各行6201乃至620Nは、ガベージ・コレクタ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 仮想マシン
3051、3052、3053 アプリケーション
315 ガベージ・コレクタ
320 メモリ使用状態プロファイラ
325 メモリ・プール
105 メモリ
110 仮想マシン
115 CPU
210 アプリケーション
220 仮想マシン
230 ネイティブ命令
300 仮想マシン
3051、3052、3053 アプリケーション
315 ガベージ・コレクタ
320 メモリ使用状態プロファイラ
325 メモリ・プール
Claims (11)
- コンピュータによって実現され、ガベージ・コレクション対応のコンピューティング環境において、メモリの使用状態を管理する方法であって、
複数のガベージ・コレクション・サイクルの各サイクル中に、複数のアプリケーションがメモリ・プールから使用することのできるメモリのサイズを監視するステップであって、前記アプリケーションはそれぞれ、前記メモリ・プールからメモリを動的に確保し、前記メモリ・プールにメモリを動的に戻すこともできる、前記監視するステップと、
監視された、前記メモリ・プールから使用することのできるメモリの前記サイズに基づいて、2回以上のガベージ・コレクション・サイクルにわたる前記メモリ・プールから使用することのできる前記メモリの変化の特性を示すメモリ使用状況プロファイルを生成するステップと、
前記メモリ使用状況プロファイルに基づいて、メモリ不足例外が発生するおそれがあるか否かを予測するステップとを、
含む方法。 - 前記メモリ・プールは、メモリ・マネージャによって確保される、請求項1に記載の方法。
- 前記メモリ・プールから使用することのできるメモリの前記サイズが所定のサイズに達した場合、ガベージ・コレクタ・プロセスを始動し、各ガベージ・コレクション・サイクルを行わせるステップをさらに含む、請求項1に記載の方法。
- 前記メモリ・プールはメモリ・ヒープを含む、請求項1に記載の方法。
- 前記ガベージ・コレクション対応のコンピューティング環境は、仮想マシン環境を含む、請求項1に記載の方法。
- 前記予測されたメモリ不足例外の発生を回避するために、対応措置を行うステップをさらに含む、請求項1に記載の方法。
- 前記対応措置は、前記予測されたメモリ不足例外が発生するおそれのある時期の通知をシステム管理者に送信することを含む、請求項6に記載の方法。
- 前記メモリ使用状況プロファイルを生成するステップは、前記メモリ・プールから確保されたメモリの前記サイズに基づいて、統計分析を行うことを含む、請求項1に記載の方法。
- 前記メモリ不足例外が発生するおそれがあるか否かという前記予測に関する信頼性レベルを求めるステップをさらに含む、請求項1に記載の方法。
- プログラムを有するコンピュータ読み取り可能な媒体であって、前記プログラムは、該プログラムが実行された場合、ガベージ・コレクション対応のコンピューティング環境において、メモリ使用状態を管理する動作を行い、前記動作は、
複数のガベージ・コレクション・サイクルの各サイクル中に、複数のアプリケーションがメモリ・プールから使用することのできるメモリのサイズを監視するステップであって、前記アプリケーションはそれぞれ、前記メモリ・プールからメモリを動的に確保し、前記メモリ・プールにメモリを動的に戻すこともできる、前記監視するステップと、
監視された、前記メモリ・プールから使用することのできるメモリの前記サイズに基づいて、2回以上のガベージ・コレクション・サイクルにわたる前記メモリ・プールから使用することのできる前記メモリの変化の特性を示すメモリ使用状況プロファイルを生成するステップと、
前記メモリ使用状況プロファイルに基づいて、メモリ不足例外が発生するおそれがあるか否かを予測するステップとを、
含む、コンピュータ読み取り可能な媒体。 - ガベージ・コレクション対応のコンピューティング環境において、メモリ使用状態を管理するように構成されたコンピューティング・デバイスであって、
プロセッサと、
少なくとも仮想マシン・プログラムを含む、前記プロセッサと通信するメモリとを含み、前記仮想マシン・プログラムは少なくとも、
複数のアプリケーションによって使用されるメモリ・プールを確保するステップであって、前記アプリケーションはそれぞれ、前記メモリ・プールからメモリを動的に確保し、前記メモリ・プールにメモリを動的に戻すこともできる、前記確保するステップと
前記メモリ・プールにおいて使用することのできるメモリの前記サイズが、所定のサイズに達した場合、ガベージ・コレクタ・プロセスを始動し、ガベージ・コレクション・サイクルを行わせるステップと、
各ガベージ・コレクション・サイクル中に、前記メモリ・プールから使用することのできるメモリの前記サイズを監視するステップと、
監視された、前記メモリ・プールから使用することのできるメモリの前記サイズに基づいて、2回以上のガベージ・コレクション・サイクルにわたる前記メモリ・プールから使用することのできる前記メモリの変化の特性を示すメモリ使用状況プロファイルを生成するステップと、
前記メモリ使用状況プロファイルに基づいて、メモリ不足例外が発生するおそれがあるか否かを予測するステップとを、
行うことによって、将来、メモリ不足例外が発生するおそれのある時期を予測するように構成されている、コンピューティング・デバイス。
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)
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)
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 |
US7702843B1 (en) | 2006-04-27 | 2010-04-20 | Vmware, Inc. | Determining 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 | 情報処理装置の支援装置、支援方法、およびコンピュータプログラム |
US8352608B1 (en) | 2008-09-23 | 2013-01-08 | Gogrid, LLC | System and method for automated configuration of hosting resources |
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 |
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 |
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 |
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 |
US8145455B2 (en) * | 2008-09-30 | 2012-03-27 | Hewlett-Packard Development Company, L.P. | Predicting resource usage of an application 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 |
US8762532B2 (en) * | 2009-08-13 | 2014-06-24 | Qualcomm Incorporated | Apparatus and method for efficient memory allocation |
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 |
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 |
US8443077B1 (en) | 2010-05-20 | 2013-05-14 | Gogrid, LLC | System and method for managing disk volumes 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 |
EP2437435B1 (en) * | 2010-09-29 | 2016-06-15 | 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 |
WO2012072363A1 (en) | 2010-11-30 | 2012-06-07 | International Business Machines Corporation | 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 |
US9330119B2 (en) * | 2013-04-11 | 2016-05-03 | Oracle International Corporation | Knowledge intensive data management system for business process and case management |
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 |
CA3128834C (en) * | 2015-01-02 | 2023-11-14 | 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 |
US9547520B1 (en) * | 2015-09-25 | 2017-01-17 | International Business Machines Corporation | Virtual machine load balancing |
CN109542672B (zh) * | 2015-09-25 | 2023-05-05 | 伊姆西Ip控股有限责任公司 | 用于回收快照存储空间中的存储块的方法和装置 |
US10158528B2 (en) | 2015-10-13 | 2018-12-18 | Uber Technologies, Inc. | Application service configuration system |
US11533226B2 (en) | 2015-10-13 | 2022-12-20 | 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 |
US10534643B2 (en) | 2016-05-09 | 2020-01-14 | Oracle International Corporation | Correlation of thread intensity and heap usage to identify heap-hoarding stack traces |
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)
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 |
-
2005
- 2005-11-30 US US11/290,882 patent/US20070136402A1/en not_active Abandoned
-
2006
- 2006-08-11 CN CNA2006101157265A patent/CN1975696A/zh active Pending
- 2006-11-17 JP JP2006312254A patent/JP2007157131A/ja active Pending
Cited By (10)
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 |
---|---|
CN1975696A (zh) | 2007-06-06 |
US20070136402A1 (en) | 2007-06-14 |
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 | |
US8397111B2 (en) | Software memory leak analysis using memory isolation | |
US9495115B2 (en) | Automatic analysis of issues concerning automatic memory management | |
KR101955737B1 (ko) | 강화된 어플리케이션 메타데이터를 갖는 메모리 매니저 | |
TWI574202B (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) | 実行環境の制御方法およびプログラム |