JP2010182016A - メモリリーク検出装置および方法ならびにプログラム - Google Patents

メモリリーク検出装置および方法ならびにプログラム Download PDF

Info

Publication number
JP2010182016A
JP2010182016A JP2009023824A JP2009023824A JP2010182016A JP 2010182016 A JP2010182016 A JP 2010182016A JP 2009023824 A JP2009023824 A JP 2009023824A JP 2009023824 A JP2009023824 A JP 2009023824A JP 2010182016 A JP2010182016 A JP 2010182016A
Authority
JP
Japan
Prior art keywords
memory
garbage collection
related information
memory leak
information
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.)
Granted
Application number
JP2009023824A
Other languages
English (en)
Other versions
JP5458589B2 (ja
Inventor
Yusuke Suzuki
裕介 鈴木
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2009023824A priority Critical patent/JP5458589B2/ja
Publication of JP2010182016A publication Critical patent/JP2010182016A/ja
Application granted granted Critical
Publication of JP5458589B2 publication Critical patent/JP5458589B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Memory System (AREA)

Abstract

【課題】 メモリリークの発生箇所の特定を精度良く、かつ検出に至る時間を短縮する。
【解決手段】 ガベージコレクションを実装したコンピュータシステムにおけるメモリリーク検出装置であって、演算処理手段10は、ガベージコレクションの前後に生成されるオブジェクト数の変化に関する情報を参照し、メモリリーク発生の可能性の有無を判定する。
【選択図】 図1

Description

本発明は、メモリリーク検出装置および方法ならびにプログラムに関し、特に、ガベージコレクションを実装した仮想マシンに用いて好適な技術に関する。
ガベージコレクションとは、プログラムを実行するために確保されたメモリ領域のうち、そのプログラムの終了後も確保されたままになっているメモリ領域を自動的に解放して他のプログラムに使用させる機能である。
上述したガベージコレクションを実装した仮想マシン上で動作するプログラムのメモリリーク解析用ツールは、メモリ領域上に展開されている各オブジェクト(データを格納したメモリ領域)が割り当てられているメモリ使用量やインスタンシングされている数を報知することでメモリリーク候補を提示している。
例えば、特許文献1には、ガベージコレクションを実装するコンピュータシステムにおいて、スループットと応答性能とのバランスから最適なヒープサイズを求めるために、ガベージコレクション発生回数を利用する支援装置が開示されている。また、特許文献2には、オブジェクトの参照関係を利用してメモリリークの判断を行うメモリリークの検出方法が開示されている。
特開2004−206644号公報 特開2007−4413号公報
上述した特許文献1、2で提案されたメモリリーク検出方法によれば、メモリリークの発生箇所を精度良く特定することができない。その理由は、いずれもガベージコレクションの発生回数を調査することによってメモリリークの判断を行っており、例えば、オブジェクトが長時間メモリに存在することが必ずしもメモリリークを起こしていることにはならないためである。
また、特許文献1、2に開示された技術によれば、ガベージコレクションにより不要になったオブジェクトが自動的にメモリから回収されるため、プログラム上、どのルートで生成されたオブジェクトがメモリ上に残り続けているかを検出することが困難であり、特に、メモリリークが微量の場合、メモリリークが発生していることの検出自体も困難な場合があるという問題があった。
(発明の目的)
本発明の目的は、メモリリークの発生箇所の特定を精度良く、かつ検出に至るまでの時間を短縮する、メモリリーク検出装置および方法ならびにプログラムを提供することにある。
本発明の第1のメモリリーク検出装置は、ガベージコレクションを実装したコンピュータシステムにおけるメモリリーク検出装置であって、前記ガベージコレクションの前後に生成されるオブジェクト数の変化に関する情報を参照し、メモリリーク発生の可能性の有無を判定する演算処理手段を含む。
本発明の第2のメモリリーク検出方法は、少なくともメモリを含む演算処理手段を備え、ガベージコレクションを実装したコンピュータシステムにおけるメモリリーク検出方法であって、前記ガベージコレクションの前後に生成されるオブジェクト数の変化に関する情報を参照し、メモリリーク発生の可能性の有無を判定する演算処理ステップ、を含む。
本発明の第3のメモリリーク検出プログラムは、コンピュータ上で実行され、ガベージコレクションを実装したコンピュータシステムにおけるメモリリーク検出プログラムであって、前記コンピュータに、前記ガベージコレクションの前後に生成されるオブジェクト数の変化に関する情報を参照し、メモリリーク発生の可能性の有無を判定するメモリリーク検出処理、を実行させる。
本発明によれば、メモリリークの発生箇所の特定を精度良く、かつ検出に至るまでの時間を短縮した、メモリリーク検出装置および方法ならびにプログラムを提供することができる。
その理由は、演算制御手段が、ガベージコレクションの回数を参照するだけで無く、ガベージコレクションの前後に生成されるオブジェクト数の変化を考慮してメモリリーク発生の可能性の有無を判定するからである。
本発明の実施の形態によるメモリリーク検出装置の構成を示すブロック図である。 本発明の実施の形態によるメモリリーク検出装置のサーバ処理部が生成する関連情報のデータ構造の一例を示す図である。 本発明の実施の形態によるメモリリーク検出装置の動作を示すフローチャートである。 本発明の実施の形態によるメモリリーク検出装置のサーバ処理部が生成する第1の関連情報と第2の関連情報のデータ構造の一例を示す図である。 本発明の実施の形態によるメモリリーク検出装置のクライアント処理部が生成するメモリリーク可能性候補一覧の報知形式の一例を示す図である。
次に、本発明の実施の形態について図面を参照して詳細に説明する。
(第1の実施の形態の構成)
図1は、本発明の第1の実施の形態によるメモリリーク検出装置1の構成を示すブロック図である。
図1を参照すると、本発明の第1の実施の形態によるメモリリーク検出装置1は、ガベージコレクションを実装したコンピュータシステム上で実現され、ガベージコレクションの前後に生成されるオブジェクト数の変化に関する情報を参照し、メモリリーク発生の可能性の有無を判定する、少なくともメモリを含む演算処理手段10で実現される。
演算処理手段10は、仮想マシン処理部11と、サーバ処理部12と、クライアント処理部13とを含む構成となっている。
仮想マシン処理部11は、例えば、Java(登録商標)で生成されたプログラムのバイトコードをプラットフォームのネイティブコードに変更してプログラムを実行するプログラム実行手段であり、ここでは、上述したガベージコレクションを実装したJVA(Java Virtual Machine)を想定している。
周知のように、JVA(登録商標)は、そのプログラム111実行時、ヒープ112、スタック113と称される演算処理手段10のメモリ(メモリ領域)を使用する。オブジェクトのインスタンスは、上述したメモリ領域中、ヒープ111に割り当てられ、メソッド呼び出しのような命令はスタック112にそれぞれ割り当てられ記憶される。
サーバ処理部12は、仮想マシン上で動作するプログラム111により生成されるメモリ情報を取得し、当該取得したメモリ情報からオブジェクトが生成されたときのスタックトレース(スタック113)と、オブジェクト生成後のガベージコレクション発生回数とを組にした関連情報としてのメモリ情報テーブルを生成する機能を有する。
このため、サーバ処理部12は、メモリ情報取得部121と、ID付与部122と、メモリ情報整理部123と、メモリ情報保存部124と、メモリ情報送信部125と、を含む構成となっている。
メモリ情報取得部121は、ガベージコレクションを実装した仮想マシン上で動作するプログラム111のメモリ領域(ヒープ112およびスタック113)に割り当てられ記憶されたオブジェクトに関する情報の取得を行い、ID付与部122へ引き渡す。
ID付与部122は、メモリ情報取得部121が取得した各スタック113に対して一意の識別情報(ID)を付与してメモリ情報整理部123へ引き渡す。メモリ情報整理部123は、前回取得したメモリ情報を保存しているメモリ情報保存部124からメモリ情報テーブルを取得し、ID付与部122を介して取得された今回のメモリ情報から新規のメモリ情報テーブルを生成してメモリ情報送信部125へ引き渡す。
メモリ情報整理部123で生成された新規のメモリ情報テーブルは、図2(a)にそのデータ構造の一例が示されるように、ID付与部122で付与されたID毎、オブジェクトを生成したスタックトレースと、オブジェクトが生成されてから発生したガベージコレクション発生回数、を関連付けたメモリ情報テーブル(第1の関連情報)と、図2(b)にそのデータ構造の一例が示されるように、スタックトレースの種類毎の個数と、合計ガベージコレクションの発生回数とを関連付けたメモリ情報テーブル(第2の関連情報)である。なお、ここでいうスタックトレースとは取得したスタック113の内容をいう。
上述したメモリ情報整理部123により生成された新規のメモリ情報テーブル(第2の関連情報)は、メモリ情報送信部125によってクライアント処理部13へ送信される。
クライアント処理部13は、サーバ処理部12から関連情報としてのメモリ情報テーブルを取得し、このメモリ情報テーブルの内容と、過去に取得したメモリ情報テーブルの内容とを比較し、同種スタックトレースの合計数に変化があり、合計カベージコレクション発生回数が増加傾向にあるスタックトレースをメモリリークの可能性ありと判定して外部に報知する機能を有する。
このため、クライアント処理部13は、メモリ情報受信部131と、メモリ情報解析部132と、メモリ情報保存部133と、メモリリーク警告表示部134と、を含む構成となっている。
メモリ情報受信部131は、サーバ処理部12(のメモリ情報送信部125)から送信されるメモリ情報テーブルを受信してメモリ情報解析部132へ引き渡す。メモリ情報解析部132は、メモリ情報保存部133に保存された過去のメモリ情報から前回送信されたメモリ情報テーブルを取得し、今回取得したメモリ情報テーブルとの比較を行い、その結果、スタックトレースの数が増加し、かつ、合計カベヘージコレクション回数が増加傾向にあるスタックトレースはメモリリークしている可能性が高いと判定し、その情報をメモリリーク警告表示部134へ通知する。
メモリリーク警告表示部134は、メモリ情報解析部132でメモリリークの可能性が高いと判定された情報、すなわち、スタックトレースとガベージコレクションの発生回数とを外部へ報知するため、例えば、LCD(Liquid Crystal Display Device)等の表示モニタへ表示する。
なお、ここでは、上述した仮想マシン処理部11とサーバ処理部12は、CPU、メモリ、通信機能を含む入出力デバイスを構成要素とする1個のコンピュータシステム(サーバ)で実現され、クライアント処理部13は、ネットワーク経由で接続される他のコンピュータシステム(端末等)で実現されるものとするが、上述した仮想マシン処理部11と、サーバ処理部12と、クライアント処理部13が持つ全ての機能を1個のコンピュータシステムで実現してもよい。
(第1の実施の形態の動作)
次に、本発明の第1の実施の形態によるメモリリーク検出装置1の動作について図3に示すフローチャート、図4に示すメモリ情報テーブルのデータ構造の一例、および、図5に示すメモリリーク可能性候補一覧を参照して説明する。
図3のフローチャートを参照すると、まず、サーバ処理部12のメモリ情報取得部121は、仮想マシン処理部11から、仮想マシン上で動作するあるプログラム111のメモリ情報(ヒープ112、スタック113)について取得し、ID付与部122へ引き渡す。メモリ情報取得部121は、メモリ情報を取得するにあたり、システム内部でガベージコクション(GC)が発生した直後のタイミングで行う(ステップS301“YES”)。
メモリ情報取得部121は、仮想マシン処理部11から取得したメモリ情報から、更に、各オブジェクトを作成したスタックトレースの取得を行い、例えば、図4(a)にそのデータ構造の一例が示されるように、各スタックトレースA、B、Cに対し一意のID(ID1〜ID6)を付与してメモリ情報整理部123へ引き渡す(ステップS132)。
IDが付与されたスタックトレースを取得したメモリ情報整理部123は、その全てのスタックトレースについて以下に説明するステップS303〜S306の処理を行う。すなわち、メモリ情報整理部123は、IDが付与されたスタックトレースのそれぞれについて、未処理のスタックトレースの有無を判定し(ステップS303)、未処理のスタックトレースがあれば(ステップS303“YES”)、メモリ情報保存部124を参照し、今回取得したスタックトレースのIDと同じスタックトレースのIDがメモリ情報保存部124に保存されているか否かの判定を行う(ステップS304)。
メモリ情報整理部123は、メモリ情報保存部124に保存されたメモリ情報テーブルに、今回取得したスタックトレースのIDと同じIDが付与されたスタックトレースがあれば(ステップS304“YES”)、ガベージコレクションの発生回数を+1更新し(ステップS305)、なければ(ステップS304“NO”)、新規にエントリされる行を作成して領域割り当てを行う(ステップS306)。なお、ガベージコレクションでメモリ情報テーブルにあったIDと同じスタックトレースが取得できなかった場合は、エントリされた行をメモリ情報テーブルから削除する。
上述した処理(ステップS303〜S306)は、メモリ情報取得部121により今回取得され、ID付与部122によってIDが付与されたスタックトレースの全てに対し繰り返し実行される。
未処理のスタックトレースがなくなると(ステップS303“NO”)、メモリ情報整理部123は、図4(a)にそのデータ構造の一例が示されるように、スタックトレースに付与されたID、スタックトレース、オブジェクトが生成されてから発生したガベージコレクションの回数(GC発生回数)でフィールドが構成されるメモリ情報テーブルaを生成する。図4(a)に示す例では、IDが付与されたスタックトレースA、B、C、A、A、C毎に、オブジェクトが生成されてから発生したGC発生回数1、3、6、3、6、7がメモリ情報テーブルaに設定される。
メモリ情報整理部123は、更に、このメモリ情報テーブルaを参照して同種のスタックトレースの数を調査し、図4(b)にそのデータ構造の一例が示されるように、IDが付与されたスタックトレース毎、その合計となる個数と、ガベージコレクション発生合計数(合計GC回数)でフィールドが構成されたメモリ情報テーブルbを生成する。図4(b)に示す例では、図4(a)に示すメモリ情報テーブルから、スタックトレースAについては、個数が3で合計GC回数が10、タックトレースBについては、個数が1で合計GC回数が3、タックトレースCについては、個数が2で合計GC回数が13、となるメモリ情報テーブルbが再構成される。
続いてメモリ情報整理部123は、図4(b)に示されるメモリ情報テーブルbの内容をメモリ情報保存部124に保存し(ステップS307)、更に、そのメモリ情報テーブルbの内容をメモリ情報送信部125によりクライアント処理部13へ送信する(ステップS308)。
クライアント処理部13は、サーバ処理部12のメモリ情報送信部125から送信されるメモリ情報テーブルbをメモリ情報受信部131で受信する(ステップS309)。そして、メモリ情報受信部131は、受信したメモリ情報テーブルbをメモリ情報解析部132へ引き渡す。
メモリ情報解析部132は、メモリ情報受信部131により引き渡されたメモリ情報テーブルbの内容と、メモリ情報保存部133に保存されてある前回のメモリ情報テーブルの内容とを比較することにより、スタックトレースの合計個数が、前回の合計個数と変化しているか否かを判定する(ステップS310)。
上述したスタックトレースの合計個数に変化がある場合(ステップS210“YES”)、メモリ情報解析部132は、ガベージコレクションの発生回数(GC発生回数)をスタックトレースの合計個数で割った平均値(合計GC回数/個数)を計算する。続いてメモリ情報解析部132は、この計算結果と前回までの計算値とを比較する(ステップS311)。ここで、増加傾向にあると判定された場合に(ステップS311“YES”)、メモリ情報解析部132は、該当するスタックトレースをメモリリークの対象候補としてその情報をメモリリーク警告表示部134に転送する。
メモリ情報解析部132からメモリリークの対象候補に関する情報を取得したメモリリーク警告表示部134は、例えば、図5にその表示形式の一例が示されるように、該当スタックトレースと、平均ガベージコレクション発生回数(平均GC回数)との組みから成る表示データを、メモリリーク可能性候補一覧データとして表示情報を生成し、不図示の表示モニタへ表示して外部へ報知する(ステップS312)。図5に示す例では、平均GC回数が6.5(合計GC回数:13/個数:2)となっているスタックトレースCが最上位にランクされたメモリリーク可能性候補として表示される。
(第1の実施の形態による効果)
本実施の形態によるメモリリーク検出装置1では、ガベージコレクションの前後に生成されるオブジェクト数の変化を考慮してメモリリーク発生の可能性の有無を判定することにより、プログラム上のどのルートで作成されたオブジェクトがメモリに残り続けているかを発見するのが容易になり、また、メモリリークが少量の場合でもその発見箇所の特定が容易になる。
また、あるオブジェクトが作成されたときのスタックトレースとその後のガベージコレクションの発生回数とを関連付けることで、プログラム上のある特定のルートを経由する処理中に作成されるオブジェクトはガベージコレクションの対象から外れていることがわかり、不要なオブジェクトがメモリ上に残存していることを外部に報知することができる。このように、メモリ上に残り続けるオブジェクトの特定が容易になり、したがって、メモリ不足に陥りコンピュータシステムを正常に使用できなくなる事態を回避することができる。
なお、本実施の形態1では、ガベージコレクションを実装する仮想マシンとしてJVM(登録商標)を例示したが、CやC++言語のようにメモリ領域の解放を明示的に行うコンピュータシステムについても同様に適用が可能である。
また、図1の演算処理部10が有する機能は、全てをソフトウェアによって実現しても、あるいはその少なくとも一部をハードウェアで実現してもよい。例えば、演算処理部10が、ガベージコレクションの前後に生成されるオブジェクト数の変化に関する情報を参照し、メモリリーク発生の可能性の有無を判定するデータ処理は、1または複数のプログラムによりコンピュータ上で実現してもよく、また、その少なくとも一部をハードウェアで実現してもよい。
以上説明のように本発明のメモリリーク検出装置によれば、演算制御手段10が、ガベージコレクションの前後に生成されるオブジェクト数の変化を考慮してメモリリーク発生の可能性の有無を判定することにより、メモリリークの発生箇所の特定を精度良く、かつ検出に至るまでの時間を短縮することができる。
なお、本発明のメモリリーク検出方法は、例えば、図1に示されるように、少なくともメもりを含む演算処理手段10を備え、ガベージコレクションを実装したコンピュータシステムにおけるメモリリーク検出方法であって、例えば、図3のフローチャートに示されるように、ガベージコレクションの前後に生成されるオブジェクト数の変化に関する情報を参照し(S301〜S308)、メモリリーク発生の可能性の有無を判定する演算処理ステップ(S309〜S312)、を含む。
本発明のメモリリーク検出方法によれば、ガベージコレクションの前後に生成されるオブジェクト数の変化を考慮してメモリリーク発生の可能性の有無を判定することにより、メモリリークの発生箇所の特定を精度良く、かつ検出に至るまでの時間を短縮するメモリリーク検出方法を提供することができる。
また、本発明のメモリリーク検出プログラムは、コンピュータ上で実行され、ガベージコレクションを実装したコンピュータシステムにおけるメモリリーク検出プログラムであって、コンピュータに、例えば、図3のフローチャートに示されるように、ガベージコレクションの前後に生成されるオブジェクト数の変化に関する情報を参照し、メモリリーク発生の可能性の有無を判定するメモリリーク検出処理(ステップS301〜S312)、を実行させる。
本発明のメモリリーク検出プログラムによれば、コンピュータが、ガベージコレクションの前後に生成されるオブジェクト数の変化を考慮してメモリリーク発生の可能性の有無を判定するメモリリーク検出処理を実行することにより、メモリリークの発生箇所の特定を精度良く、かつ検出に至るまでの時間を短縮するメモリリーク検出プログラムを提供することができる。
以上好ましい実施の形態と実施例をあげて本発明を説明したが、本発明は必ずしも、上述実施の形態及び実施例に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
1:メモリリーク検出装置
10:メモリを含む演算処理手段
11:仮想マシン処理部
12:サーバ処理部
13:クライアント処理部
111:プログラム
112:ヒープ
113:スタック
121:メモリ情報取得部
122:ID付与部
123:メモリ情報整理部
124:メモリ情報保存部
125:メモリ情報送信部
131:メモリ情報受信部
132:メモリ情報解析部
133:メモリ情報保存部、
134:メモリリーク警告表示部

Claims (12)

  1. ガベージコレクションを実装したコンピュータシステムにおけるメモリリーク検出装置であって、
    前記ガベージコレクションの前後に生成されるオブジェクト数の変化に関する情報を参照し、メモリリーク発生の可能性の有無を判定する演算処理手段、
    を備えたことを特徴とするメモリリーク検出装置。
  2. 前記演算処理手段は、
    仮想マシン上で動作するプログラムにより生成されるメモリ情報を取得し、当該取得したメモリ情報から前記オブジェクトが生成されたときのスタックトレースと、前記オブジェクト生成後のガベージコレクション発生回数とを組にした関連情報を生成するサーバ処理部と、
    前記サーバ処理部から前記関連情報を取得し、前記関連情報と過去に取得した関連情報とを比較して同種スタックトレースの合計数に変化があり、合計カベージコレクション発生回数が増加傾向にあるスタックトレースをメモリリークの可能性ありと判定し、外部に報知するクライアント処理部と、
    を備えることを特徴とする請求項1に記載のメモリリーク検出装置。
  3. 前記サーバ処理部は、
    前記取得したメモリ情報から各オブジェクトを生成したスタックトレースの取得を行い、
    前記取得したスタックトレースに一意の識別情報を付与し、
    前記取得した1以上のスタックトレースについて前回取得したスタックトレースと比較し、同じスタックトレースの識別情報があれば前記カベージコレクション発生回数を更新して、前記識別情報と、前記スタックトレースと、前記オブジェクトが生成されてから発生したガベージコレクション発生回数とを組みにした第1の関連情報を生成し、
    更に同種のスタックトレースの有無を判定し、同種スタックトレースがある場合は、当該同種スタックトレース合計数と、カベージコレクション発生合計数とからなる第2の関連情報を生成し、
    前記生成した第2の関連情報を前記クライアント処理部に引き渡す、
    ことを特徴とする請求項2に記載のメモリリーク検出装置。
  4. 前記クライアント処理部は、
    前記サーバ処理部から取得した第2の関連情報を参照し、前記第2の関連情報に含まれる前記スタクトレース合計数について前回取得した分との変化の有無を判定し、
    変化ありと判定された場合、前記カベージコレクション発生回数を前記スタックトレースの合計数で割った平均値を計算し、前回平均値と比較して増加していた場合にメモリリーク発生の可能性ありと判定して外部に報知する、
    ことを特徴とする請求項3に記載のメモリリーク検出装置。
  5. 少なくともメモリを含む演算処理手段を備え、ガベージコレクションを実装したコンピュータシステムにおけるメモリリーク検出方法であって、
    前記ガベージコレクションの前後に生成されるオブジェクト数の変化に関する情報を参照し、メモリリーク発生の可能性の有無を判定する演算処理ステップ、
    を有することを特徴とするメモリリーク検出方法。
  6. 前記演算処理ステップは、
    仮想マシン上で動作するプログラムにより生成されるメモリ情報を取得し、当該取得したメモリ情報から前記オブジェクトが生成されたときのスタックトレースと、前記オブジェクト生成後のガベージコレクション発生回数とを組にした関連情報を生成する第1の演算処理ステップと、
    前記第1のステップで生成された前記関連情報を取得し、前記関連情報と過去に取得した関連情報とを比較して同種スタックトレースの合計数に変化があり、合計ガベージコレクション発生回数が増加傾向にあるスタックトレースをメモリリークの可能性ありと判定し、外部に報知する第2の演算処理ステップと、
    を含むことを特徴とする請求項5に記載のメモリリーク検出方法。
  7. 前記第1の演算処理ステップは、
    前記取得したメモリ情報から各オブジェクトを生成したスタックトレースの取得を行うサブステップと、
    前記取得したスタックトレースに一意の識別情報を付与するサブステップと、
    前記取得した1以上のスタックトレースについて前回取得したスタックトレースと比較し、同じスタックトレースの識別情報があれば前記カベージコレクション発生回数を更新して、前記識別情報と、前記スタックトレースと、前記オブジェクトが生成されてから発生したガベージコレクション発生回数とを組みにした第1の関連情報を生成するサブステップと、
    更に同種のスタックトレースの有無を判定し、同種スタックトレースがある場合は、当該同種スタックトレース合計数と、カベージコレクション発生合計数とからなる第2の関連情報を生成するサブステップと、
    前記生成した第2の関連情報を前記第2の演算処理ステップに引き渡すサブステップと、
    を含むことを特徴とする請求項6に記載のメモリリーク検出方法。
  8. 前記第2の演算処理ステップは、
    前記第1の演算処理ステップから引き渡される前記第2の関連情報を参照し、前記第2の関連情報に含まれる前記スタクトレース合計数について前回取得した分との変化の有無を判定するサブステップと、
    変化ありと判定された場合、前記カベージコレクション発生回数を前記スタックトレースの合計数で割った平均値を計算し、前回平均値と比較して増加していた場合にメモリリーク発生の可能性ありと判定して外部に報知するサブステップと、
    を含むことを特徴とする請求項7に記載のメモリリーク検出方法。
  9. コンピュータ上で実行され、ガベージコレクションを実装したコンピュータシステムにおけるメモリリーク検出プログラムであって、
    前記コンピュータに、
    前記ガベージコレクションの前後に生成されるオブジェクト数の変化に関する情報を参照し、メモリリーク発生の可能性の有無を判定するメモリリーク検出処理、
    を実行させることを特徴とするメモリリーク検出プログラム。
  10. 前記メモリリーク検出処理は、
    仮想マシン上で動作するプログラムにより生成されるメモリ情報を取得し、当該取得したメモリ情報から前記オブジェクトが生成されたときのスタックトレースと、前記オブジェクト生成後のガベージコレクション発生回数とを組にした関連情報を生成する関連情報生成処理と、
    前記関連情報生成処理で生成された前記関連情報を取得し、前記関連情報と過去に取得した関連情報とを比較して同種スタックトレースの合計数に変化があり、合計ガベージコレクション発生回数が増加傾向にあるスタックトレースをメモリリークの可能性ありと判定し、外部に報知する判定および報知処理と、
    を含むことを特徴とする請求項9に記載のメモリリーク検出プログラム。
  11. 前記関連情報生成処理は、
    前記取得したメモリ情報から各オブジェクトを生成したスタックトレースの取得を行うスタックトレース取得処理と、
    前記取得したスタックトレースに一意の識別情報を付与する識別情報付与処理と、
    前記取得した1以上のスタックトレースについて前回取得したスタックトレースと比較し、同じスタックトレースの識別情報があれば前記カベージコレクション発生回数を更新して、前記識別情報と、前記スタックトレースと、前記オブジェクトが生成されてから発生したガベージコレクション発生回数とを組みにした第1の関連情報を生成する第1の関連情報生成処理と、
    更に同種のスタックトレースの有無を判定し、同種スタックトレースがある場合は、当該同種スタックトレース合計数と、カベージコレクション発生合計数とからなる第2の関連情報を生成する第2の関連情報生成処理と、
    前記生成した第2の関連情報を前記判定および報知処理に引き渡す関連情報出力処理と、
    を含むことを特徴とする請求項10に記載のメモリリーク検出プログラム。
  12. 前記判定および報知処理は、
    前記関連情報生成処理から引き渡される前記第2の関連情報を参照し、前記第2の関連情報に含まれる前記スタクトレース合計数について前回取得した分との変化の有無を判定する判定処理と、
    変化ありと判定された場合、前記カベージコレクション発生回数を前記スタックトレースの合計数で割った平均値を計算し、前回平均値と比較して増加していた場合にメモリリーク発生の可能性ありと判定して外部に報知する報知処理と、
    を含むことを特徴とする請求項11に記載のメモリリーク検出プログラム。
JP2009023824A 2009-02-04 2009-02-04 メモリリーク検出装置および方法ならびにプログラム Expired - Fee Related JP5458589B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009023824A JP5458589B2 (ja) 2009-02-04 2009-02-04 メモリリーク検出装置および方法ならびにプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009023824A JP5458589B2 (ja) 2009-02-04 2009-02-04 メモリリーク検出装置および方法ならびにプログラム

Publications (2)

Publication Number Publication Date
JP2010182016A true JP2010182016A (ja) 2010-08-19
JP5458589B2 JP5458589B2 (ja) 2014-04-02

Family

ID=42763571

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009023824A Expired - Fee Related JP5458589B2 (ja) 2009-02-04 2009-02-04 メモリリーク検出装置および方法ならびにプログラム

Country Status (1)

Country Link
JP (1) JP5458589B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101494328B1 (ko) 2013-06-28 2015-02-23 부산대학교 산학협력단 힙 분석을 이용한 메모리 누수 탐지 장치 및 방법
JP2018147068A (ja) * 2017-03-02 2018-09-20 富士通株式会社 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060080364A1 (en) * 2004-10-07 2006-04-13 International Business Machines Corporation Method, system, and computer program product for detecting memory management anti-patterns
US20060206885A1 (en) * 2005-03-10 2006-09-14 Seidman David I Identifying memory leaks in computer systems
US7325106B1 (en) * 2004-07-16 2008-01-29 Sun Microsystems, Inc. Method for monitoring heap for memory leaks

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7325106B1 (en) * 2004-07-16 2008-01-29 Sun Microsystems, Inc. Method for monitoring heap for memory leaks
US20060080364A1 (en) * 2004-10-07 2006-04-13 International Business Machines Corporation Method, system, and computer program product for detecting memory management anti-patterns
US20060206885A1 (en) * 2005-03-10 2006-09-14 Seidman David I Identifying memory leaks in computer systems

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101494328B1 (ko) 2013-06-28 2015-02-23 부산대학교 산학협력단 힙 분석을 이용한 메모리 누수 탐지 장치 및 방법
JP2018147068A (ja) * 2017-03-02 2018-09-20 富士通株式会社 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム

Also Published As

Publication number Publication date
JP5458589B2 (ja) 2014-04-02

Similar Documents

Publication Publication Date Title
CN111049705A (zh) 一种监控分布式存储系统的方法及装置
US10365964B1 (en) Data processing platform monitoring
US7352481B2 (en) Systems and methods for recovery of a failed raster image processor partition
JP4880376B2 (ja) 支援装置、プログラム、情報処理システム及び支援方法
US9535666B2 (en) Dynamic agent delivery
CN107807841B (zh) 服务器模拟方法、装置、设备及可读存储介质
US11086919B2 (en) Service regression detection using real-time anomaly detection of log data
CN107908679B (zh) 脚本语句转换方法、装置及计算机可读存储介质
JP5458589B2 (ja) メモリリーク検出装置および方法ならびにプログラム
US10191844B2 (en) Automatic garbage collection thrashing monitoring
US10565636B2 (en) Electronic device, system, and method
CN107317722B (zh) 一种数据源可扩展系统及方法
CN112749062A (zh) 服务端程序监控方法、装置、计算机设备及存储介质
JP7338246B2 (ja) 情報処理装置、ログ参照プログラム
JP2007275558A (ja) 医用画像読影装置、及びカーソル移動プログラム
CN115576737A (zh) 异常检测方法、装置、电子设备及存储介质
US10977146B2 (en) Application operation monitoring apparatus and application operation monitoring method
US10165074B2 (en) Asynchronous custom exit points
CN112698879A (zh) 加载源文件的方法及装置
US9838488B2 (en) Agent asynchronous transaction monitor
JP2017151594A (ja) 支援装置、支援方法及びプログラム
CN110780983A (zh) 任务异常处理方法、装置、计算机设备以及存储介质
WO2022107406A1 (ja) 情報処理システム、情報処理方法及び計算機
JPWO2010035480A1 (ja) 分散処理システム、分散処理方法およびプログラム
JP2019047188A (ja) 分析管理システムおよび分析管理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130724

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130726

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130924

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131004

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20131010

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131202

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131217

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131230

R150 Certificate of patent or registration of utility model

Ref document number: 5458589

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees