(57)【要約】【課題】メモリリークの調査時間の短縮等を図る。【解決手段】区間指定手段１２により、プログラム記憶手段１１に記憶されたプログラム内のメモリリークの調査対象とする区間を指定する。プログラム実行手段１３が、プログラムの実行において上記指定区間の前後で出力されるスナップショットのそれぞれを対応する記憶手段１４、１５に記憶させる際に、各スナップショットに含まれるオブジェクトに、それを作成したスレッドのＩＤを付加し、上記指定区間を実行したスレッドのＩＤを出力する。差分作成手段１６１が、記憶手段１４、１５の両スナップショットを比較して区間終了時のアクティブオブジェクトを抽出する。差分絞込み手段１６２が、差分作成手段１６１から出力されたアクティブオブジェクトの中から、指定区間で実行したスレッドのＩＤと同じスレッドＩＤ付きのアクティブオブジェクトのみを絞り込む。【選択図】図１
2010211415.tif 000002
【特許請求の範囲】
【請求項１】
情報処理を複数の処理単位で実行し、該実行で出力される前記処理単位での処理情報に、実行した前記処理単位の識別情報を付与して出力する処理手段と、
該処理手段から出力される前記識別情報に基づいて前記処理手段から出力される前記処理情報のうちの前記識別情報に対応する前記処理情報のみを抽出する抽出手段とを備えることを特徴とする情報処理システム。
【請求項２】
複数の前記処理単位は、順次切り替えて実行されることを特徴とする請求項１記載の情報処理システム。
【請求項３】
複数の処理単位を順次切り替えて情報処理を行う区間を特定する区間指示手段と、
該区間指示手段により特定された区間で実行される前記処理単位で生成されるオブジェクトに、該処理単位の識別情報を付加して出力する処理手段と、
前記区間指示手段により特定された前記区間で生成されるアクティブオブジェクトを出力する抽出手段と、
該抽出手段から出力される前記アクティブオブジェクトのうちの前記処理手段から出力される前記識別情報に対応するアクティブオブジェクトのみを出力する絞込み手段とを備えることを特徴とする情報処理システム。
【請求項４】
前記区間指示手段は、プログラムが実行されるときに生ずるアクティブオブジェクトを抽出したい当該プログラムのうちの範囲を特定することを特徴とする請求項３記載の情報処理システム。
【請求項５】
前記区間指示手段は、プログラムを記憶するプログラム記憶手段と、スナップショットを出力する区間を表す区間パターンを記憶する区間パターン記憶手段とを有し、プログラム記憶手段に記憶される前記プログラムの中の、区間パターン記憶手段に記憶される区間パターンに照合する箇所を前記区間としてと特定することを特徴とする請求項３記載の情報処理システム。
【請求項６】
前記情報処理は、マルチスレッドで実行され、前記処理単位は、前記マルチスレッドで実行されるスレッドであることを特徴とする請求項１、２、３、４又は５記載の情報処理システム。
【請求項７】
前記識別情報は、前記スレッドに付加されるＩＤであることを特徴とする請求項６記載の情報処理システム。
【請求項８】
前記処理手段は、前記区間の開始時及び前記区間の終了時のスナップショットを出力するプログラム実行手段で、前記抽出手段は、前記プログラム実行手段から出力されるスナップショットに含まれるオブジェクトのうちの前記区間の開始時にアクティブなオブジェクトでなく、前記区間の終了時にアクティブなオブジェクトを出力する手段であることを特徴とする請求項３乃至７のいずれか一に記載の情報処理システム。
【請求項９】
前記処理手段は、前記スナップショットを出力する際に、当該処理単位で作成される前記オブジェクトに前記当該処理単位の前記識別情報を付加して出力する手段であり、前記絞込み手段は、前記抽出手段から出力される前記アクティブオブジェクトのうちの、前記処理手段から出力される前記識別情報と同一の前記識別情報が付加されているアクティブオブジェクトのみを出力する手段であることを特徴とする請求項８記載の情報処理システム。
【請求項１０】
情報処理を複数の処理単位で実行し、
該実行で出力される前記処理単位での処理情報に、実行した前記処理単位の識別情報を付与して出力し、
前記識別情報に基づいて前記処理情報のうちの前記識別情報に対応する前記処理情報のみを抽出することを特徴とする情報処理システムにおける情報抽出方法。
【請求項１１】
複数の前記処理単位は、順次切り替えて実行されることを特徴とする請求項１０記載の情報処理システムにおける情報抽出方法。
【請求項１２】
複数の処理単位を順次切り替えて情報処理を行う区間を特定し、
特定された区間で実行される前記処理単位で生成されるオブジェクトに、該処理単位の識別情報を付加して出力し、
特定された前記区間で生成されるアクティブオブジェクトを出力し、
出力される前記アクティブオブジェクトのうちの前記識別情報に対応するアクティブオブジェクトのみを出力することを特徴とする情報処理システムにおける情報抽出方法。
【請求項１３】
前記区間は、プログラムが実行されるときに生ずるアクティブオブジェクトを抽出したい当該プログラムのうちの範囲として特定されることを特徴とする請求項１２記載の情報処理システムにおける情報抽出方法。
【請求項１４】
前記区間は、プログラム記憶手段に記憶されるプログラムの中の、区間パターン記憶手段に記憶される区間パターンに照合する箇所を前記区間としてと特定されることを特徴とする請求項１２記載の情報処理システムにおける情報抽出方法。
【請求項１５】
前記情報処理は、マルチスレッドで実行され、前記処理単位は、前記マルチスレッドで実行されるスレッドであることを特徴とする請求項１０乃至１４いずれか一に記載の情報処理システムにおける情報抽出方法。
【請求項１６】
前記識別情報は、前記スレッドに付加されるＩＤであることを特徴とする請求項１５記載の情報処理システムにおける情報抽出方法。
【請求項１７】
特定される前記区間の開始時及び前記区間の終了時のスナップショットを出力し、スナップショットに含まれるオブジェクトのうちの前記区間の開始時にアクティブなオブジェクトでなく、前記区間の終了時にアクティブなオブジェクトを出力することを特徴とする請求項１２乃至１６のいずれか一に記載の情報処理システムにおける情報抽出方法。
【請求項１８】
前記スナップショットを出力する際に、当該処理単位で作成される前記オブジェクトに前記当該処理単位の前記識別情報を付加して出力し、出力される前記アクティブオブジェクトのうちの、前記識別情報と同一の前記識別情報が付加されているアクティブオブジェクトのみを出力することを特徴とする請求項１７記載の情報処理システムにおける情報抽出方法。
【請求項１９】
コンピュータに請求項１乃至９のうちのいずれか一に記載の情報処理システムを制御させることを特徴とする制御プログラム。
【請求項２０】
コンピュータに請求項１０乃至１８のうちのいずれか一に記載の情報処理システムにおける情報抽出方法を実行させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、情報処理システム及び情報処理システムにおける情報抽出方法並びにその制御プログラムに関し、詳しくは、メモリリークの調査手段等を改良した情報処理システム及び情報処理システムにおける情報抽出方法並びにその制御プログラムに関する。
【背景技術】
【０００２】
プログラミング言語にはガベージコレクション機能を備えるものがある。このガベージコレクション機能は、何処からも参照されず以降のプログラムで利用できないオブジェクトをメモリから自動的に解放する機能である。
このガベージコレクション機能によって、プログラム内でオブジェクトの解放処理の記述が不要になるが、プログラマの意図しない参照関係が残っている場合には、本来不要なオブジェクトであってもメモリから解放されない現象が発生する。このような不要なオブジェクトが確保され続け、メモリを圧迫する現象をメモリリークと呼ぶ。
【０００３】
メモリリーク発生時の原因追求手段を有して構成される関連技術がある。
この関連技術（以下、従来技術という）は、上記原因追求手段により、ある時点のメモリ内のアクティブな全オブジェクトの情報を出力する。この出力される情報をスナップショットと呼ぶ。そのスナップショットに含まれるアクティブなオブジェクトとは、何処から参照されているオブジェクト、すなわち、ガベージコレクションでは解放されないオブジェクトを指している。
そして、出力されるスナップショットに基づいて、スナップショット時点においてプログラマが意図していないオブジェクトが残っているか否かを確認することで、メモリリークの発生原因となるオブジェクトの特定を行うことで、メモリリーク発生時の発生原因を追求しようとするものである。
【０００４】
上述したスナップショットを利用したメモリリーク検出に関する関連技術として特許文献１がある。特許文献１に記載される関連技術は、実行中の特定時点でスナップショットを取る技術と複数のスナップショットを比較する技術である。
この関連技術は、メモリリークの原因と疑われるプログラム区間前後のスナップショットを取り、それらの比較から区間内で増加したアクティブなオブジェクトの一覧を取得してその比較結果を確認する。そして、その中にプログラマが意図しないオブジェクトが発見できれば、当該プログラム区間内にメモリリークの原因があるとの判断を得ようとするものである。
【０００５】
また、特許文献２には、メモリリークの防止に関する関連技術が記載されている。
特許文献２に記載される技術は、複数の業務プロセスによって共用される共用メモリへの業務プロセスからの書き込み要求に応じて共用メモリに確保されたエントリに義務種別及び時刻情報を付加しておき、そのエントリを上記義務種別及び時刻情報をもとに所定周期でチェックしたときの、義務プロセスの解放処理漏れの判定に基づいて対応するエントリを共用メモリから退避又は解放するというものである。
【０００６】
また、特許文献３にも、メモリリークの可能性を判断する関連技術が記載されている。
特許文献３に記載される技術は、計算機システム内に保存される２つの時点のメモリ割り当て状態の比較で抽出される差分領域と、保存される各プログラムの稼動状態と、割り当て領域に設定される領域識別子と、領域識別子登録ファイルとを用いてメモリ割り当て差分領域の妥当性検証と所有者を識別するという構成のものである。この構成においては、システム起動直後と処理中の現在時点とのスナップショットの差分を取ることを要件として含む構成を採用している。
【０００７】
また、特許文献４にも、メモリリークの検出を行える関連技術が記載されている。
特許文献４に記載される技術は、ソフトウェアシステムの動作検証を事前に行い、その動作検証の結果に基づいてメモリアクセス及びメモリリークの調査対象を分割して検査するというものである。上記動作検証は、例えば、ソフトウェアシステムのメモリアクセス範囲、ソフトウェアシステムのプログラムブロックとメモリアクセスブロックとの関係である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平１１−３１２０９７号公報
【特許文献２】特開平１１−２０３１９３号公報
【特許文献３】特開平１０−２６９１３３号公報
【特許文献４】特開２００３−０９９２９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、上記の従来技術において、その実行されるプログラムにより作成されるオブジェクトの数は膨大となり、出力されるスナップショットからメモリリークの調査上問題となるオブジェクトの特定を行うのには、その調査に長時間を要する。
特に、サーバアプリケーションではプログラムを停止させず、長時間動作させることが多く、時間当りにリークする量が少なくても、メモリリークの調査上で解決すべき問題があるケースが多い。
【００１０】
また、サーバアプリケーションのようなマルチスレッドで動作するプログラムにおいて、メモリリークの原因と疑われる区間を指定し、その前後のスナップショットを比較して増加するアクティブオブジェクトを抽出しようとする場合、指定した区間以外で作成されたアクティブオブジェクトも抽出され得るため、その中に意図しないオブジェクトがあるか否かの確認に時間が掛かるという技術的問題がある。上記確認の必要性は、指定した区間で動作するスレッドとは別のスレッドで作成されたオブジェクトもスナップショットに含まれることがあることによる。
【００１１】
また、特許文献２に記載される技術は、共用メモリへの業務プロセスからの書き込み要求に応じて共用メモリに確保されるエントリに義務種別及び時刻情報を付加する手段を採用し、そのエントリを上記義務種別及び時刻情報をもとに所定周期でチェックして業務プロセスの解放処理漏れの判定を行っている。
したがって、この技術では、業務プロセス毎の実行で作成される情報（業務プロセスを実行した出力情報）に対する考慮はなく、当該業務プロセスの実行において共用メモリに確保されるエントリとの関係に着眼しているに過ぎない。各業務プロセスにおいてそのプロセスに確保されたエントリに書き込まれる情報との関係において、上記技術を業務プロセスの解放処理漏れの判定に活用することへの示唆はないと言える。
【００１２】
また、特許文献３に記載される技術は、計算機システム内に保存される２つの時点のメモリ割り当て状態の比較で抽出される差分領域と、保存される各プログラムの稼動状態と、割り当て領域に設定される領域識別子と、領域識別子登録ファイルとを用いてメモリ割り当て差分領域の妥当性検証と所有者を識別しており、この構成によれば、２つの時点のメモリ割り当て状態の差分、すなわち、上記特許文献３の「発明の詳細の説明」の項の記載によればシステム起動直後と処理中の現在時点とのメモリ割り当て状態の差分を取ることを必須要件として含む構成を採用しており、プログラム内の部分については何も言及はないものである。
【００１３】
また、特許文献４に記載される技術は、上述のように、動作検証の結果に基づいてメモリアクセス及びメモリリークの調査対象を分割して検査することはできるが、この結果は、上記動作検証を検査対象のソフトウェアシステムについて事前に得て置いて、初めて、得られるものである。したがって、この技術は、ソフトウェアシステムの実行で作成される情報との関係については不問である。
【００１４】
この発明は、上述の事情に鑑みてなされたもので、ソフトウェアの実行で生ずるメモリリークの調査等のための上記実行で出力さる情報の絞込みをして調査時間の短縮等を図る情報処理システム及び情報処理システムにおける情報抽出方法並びにその制御プログラムを提供することを目的としている。
【課題を解決するための手段】
【００１５】
上記課題を解決するために、この発明の第１の構成は、情報処理を複数の処理単位で実行する際に出力される処理情報のうちの所定の処理単位での処理情報のみを抽出する情報処理システムに係り、情報処理を複数の処理単位で実行し、該実行で出力される上記処理単位での処理情報に、実行した上記処理単位の識別情報を付与して出力する処理手段と、該処理手段から出力される上記識別情報に基づいて上記処理手段から出力される上記処理情報のうちの上記識別情報に対応する上記処理情報のみを抽出する抽出手段とを備えることを特徴としている。
【００１６】
この発明の第２の構成は、情報処理を複数の処理単位で実行する際に出力される処理情報のうちの所定の処理単位での処理情報のみを抽出する情報処理システムにおける情報抽出方法に係り、情報処理を複数の処理単位で実行し、該実行で出力される上記処理単位での処理情報に、実行した上記処理単位の識別情報を付与して出力し、上記識別情報に基づいて上記処理情報のうちの上記識別情報に対応する上記処理情報のみを抽出することを特徴としている。
【発明の効果】
【００１７】
この発明によれば、複数の処理単位で情報処理を実行して出力される処理情報のうちの所定の処理単位での処理情報のみを抽出することが可能になる。例えば、マルチスレッドで情報処理を行うとき、特定したプログラム区間の開始時に出力されるスナップショットに含まれないが、その区間の終了時には含まれるスナップショットのうちのスレッドに対応するオブジェクトのみを抽出することができる。
【図面の簡単な説明】
【００１８】
【図１】この発明の実施形態１であるメモリリーク検出支援システムの構成を示すブロック図である。
【図２】同メモリリーク検出支援システムの処理手順を示すフローチャートを示す図である。
【図３】同メモリリーク検出支援システムの処理手順を具体的に説明するプログラムの例を示す図である。
【図４】図３に示すプログラムの実行で取得される区間開始時のスナップショットの例を示す図である。
【図５】図３に示すプログラムの実行で取得される区間終了時のスナップショットの例を示す図である。
【図６】図４になく、図５にあるアクティブオブジェクトを示す図である。
【図７】図６に示すアクティブオブジェクトの中から抽出されたアクティブオブジェクトを示す図である。
【図８】この発明の実施形態２であるメモリリーク検出支援システムの構成を示すブロック図である。
【図９】同メモリリーク検出支援システムの処理手順を示すフローチャートを示す図である。
【図１０】実行したクラスから承継したクラス内にあるメソッドの全体を区間として認識するパターンの登録例を示す図である。
【発明を実施するための形態】
【実施形態１】
【００１９】
図１は、この発明の実施形態１であるメモリリーク検出支援システムの構成を示すブロック図、図２は、同メモリリーク検出支援システムの処理手順を示すフローチャートを示す図、図３は、同メモリリーク検出支援システムの処理手順を具体的に説明するプログラムの例を示す図、図４は、図３に示すプログラムの実行で取得される区間開始時のスナップショットの例を示す図、図５は、図３に示すプログラムの実行で取得される区間終了時のスナップショットの例を示す図、図６は、図４になく、図５にあるアクティブオブジェクトを示す図、また、図７は、図６に示すアクティブオブジェクトの中から抽出されたアクティブオブジェクトを示す図である。
【００２０】
この実施形態のメモリリーク検出支援システム１０は、マルチスレッドで動作するプログラムにおいて作成されるオブジェクトのうちの、メモリリークの発生原因の可能性があるとして抽出されるアクティブオブジェクト数の削減を達成する情報処理システム内のシステムに係り、図１に示すように、プログラム記憶手段１１と、区間指定手段１２と、プログラム実行手段１３と、区間開始時スナップショット記憶手段１４と、区間終了時スナップショット記憶手段１５と、差分抽出手段１６と、差分表示手段１７とから概略構成されている。差分抽出手段１６は、差分作成手段１６１と差分絞込み手段１６２とから構成されている。
【００２１】
プログラム記憶手段１１は、メモリリーク検出支援システム１０におけるメモリリーク検出支援の対象となるプログラムを記憶する手段である。
区間指定手段１２は、利用者がメモリリークの調査対象とする区間を指定する手段である。
プログラム実行手段１３は、プログラム記憶手段１１に記憶されるプログラムを実行し、その実行中に区間指定手段１２により指定された区間の開始時のスナップショットを区間開始時スナップショット記憶手段１４に記憶させ、また、区間の終了時のスナップショットを区間終了時スナップショット記憶手段１５に記憶させる手段である。
【００２２】
また、プログラム実行手段１３は、区間指定手段１２により指定された区間（指定区間）の実行開始時のスナップショットを区間開始時スナップショット記憶手段１４に、また、指定された区間の実行終了時のスナップショットを区間終了時スナップショット記憶手段１５に記憶させるとき、スナップショットに含まれるオブジェクトにはその作成したスレッドのＩＤを付加する。同時に、プログラム実行手段１３は、指定区間を実行したスレッドのＩＤを出力する。
区間開始時スナップショット記憶手段１４は、指定区間の実行開始時のスナップショットを記憶する手段である。
区間終了時スナップショット記憶手段１５は、指定区間の実行終了時のスナップショットを記憶する手段である。
【００２３】
差分抽出手段１６の差分作成手段１６１は、区間開始時スナップショット記憶手段１４及び区間終了時スナップショット記憶手段１５に記憶されたスナップショットを読み込み、実行終了時に含まれるが、実行開始時には含まれないアクティブオブジェクトを出力する手段である。差分絞込み手段１６２は、差分作成手段１６１から出力されたアクティブオブジェクトの中から、プログラム実行手段１３から出力される指定区間を実行したスレッドのＩＤと同じスレッドＩＤが付加されたアクティブオブジェクトを絞り込み、出力する。
差分表示手段１７は、差分絞込み手段１６２から出力されたオブジェクトを表示する手段である。
【００２４】
次に、図１乃至図７を参照して、この実施形態の動作について説明する。
メモリリーク検出支援システム１０での処理が開始されると、先ず、区間指定手段１２が、プログラム内のメモリリークの調査対象とする区間を指定する（図２のステップＳ１）。
【００２５】
次に、プログラム実行手段１３が、プログラム記憶手段１１に記憶されたプログラムを実行する（図２のステップＳ２）。この実行において、区間指定手段１２により指定された区間（指定区間）の前後でスナップショットを出力し、区間開始時のスナップショットを区間開始時スナップショット記憶手段１４に記憶させ、また、区間の終了時のスナップショットを区間終了時スナップショット記憶手段１５に記憶させる（図２のステップＳ２）。この記憶の際に、それらスナップショットに含まれるオブジェクトに、それを作成したスレッドのＩＤを付加する。また、プログラム実行手段１３は、指定された区間を実行したスレッドのＩＤを出力する。
【００２６】
次いで、差分作成手段１６１が、区間開始時スナップショット記憶手段１４及び区間終了時スナップショット記憶手段１５に記憶されたスナップショットを読み込み、それら両スナップショットを比較して（スナップショット間の差分を取って）区間開始時にアクティブオブジェクトでなく、区間終了時にアクティブオブジェクトとなっているものを抽出する（図２のステップＳ３）。
そして、差分絞込み手段１６２が、差分作成手段１６１で作成した差分（そこから出力されたアクティブオブジェクト）の中から、区間指定手段１２により指定された区間についてプログラム実行手段１３で実行したスレッドのＩＤと同じスレッドＩＤが付加されたアクティブオブジェクトのみを絞り込み、出力する（図２のステップＳ４）。
【００２７】
最後に、差分表示手段１７は、差分絞込み手段１６２から出力されたアクティブオブジェクト（絞り込まれたアクティブオブジェクト）を表示する。
なお、この実施形態では、差分作成手段１６１（図２のステップＳ３）、そして差分絞込み手段１６２（図２のステップＳ４）の順に実行しているが、この順と逆順、すなわち、差分絞込み手段１６２（図２のステップＳ４）、そして差分作成手段１６１（図２のステップＳ３）の順で実行する構成でもよい。
【００２８】
上述した動作の具体例を図３乃至図７を参照して説明する。
プログラム記憶手段１１に図３に示すようなプログラムが記憶されているとする。そして、図２のステップＳ１で図３の４行目乃至８行目が区間として指定されたとする。図２のステップＳ２でこのプログラムが実行されると、区間開始時のナップショットとして図４、区間終了時のスナップショットとして図５に示すようなスナップショットが取得される。このとき、funcメソッドを実行したスレッドのＩＤは１であったとする。
【００２９】
すると、図４又は図５でスレッドＩＤが１以外のものは、funcメソッドを実行したスレッド以外のスレッドで作成されたオブジェクトとなる。図４及び図５に示すオブジェクトを図２のステップＳ３で比較して、図４になく図５にあるアクティブオブジェクトを抽出する。
抽出した結果を図２のステップＳ４でスレッドＩＤ（＝１）を用いて、funcメソッドを実行したスレッドに対応したアクティブオブジェクトのみに絞り込む。その絞り込んだ例を図６に示す。図２のステップＳ５で表示される内容を図７に示す。
【００３０】
このように、この実施形態によれば、プログラムの実行でスナップショットを出力する際に、その中に含まれるオブジェクトにこれを作成したスレッドのＩＤを付加し、表示されるオブジェクトを、指定された区間で実行したスレッドで作成されたもののみに絞り込むことが可能になる。
したがって、マルチスレッドで動作するプログラムについて、メモリリークの原因の可能性があるとして抽出されるアクティブオブジェクトの数を減少させることができ、メモリリークの調査時間の短縮に寄与する。
【実施形態２】
【００３１】
図８は、この発明の実施形態２であるメモリリーク検出支援システムの構成を示すブロック図、図９は、同メモリリーク検出支援システムの処理手順を示すフローチャートを示す図、また、図１０は、実行したクラスから承継したクラス内にあるメソッドの全体を区間として認識するパターンの登録例を示す図である。
この実施形態の構成が、実施形態１のそれと大きく異なる点は、区間の識別に区間パターンを用いるようにした点である。
【００３２】
この実施形態のメモリリーク検出支援システム１０Ａは、図８に示すように、実施形態１の区間指定手段の代わりに、区間パターン記憶手段２１と、区間パターン照合手段２２とを設けて構成することにその特徴部分がある。
区間パターン記憶手段２１は、スナップショットを取る区間を表すパターンを記憶する手段である。
区間パターン照合手段２２は、プログラム記憶手段１１に記憶されたプログラムから区間パターン記憶手段２１に記憶された区間パターンに照合する箇所を区間として取得する手段である。
この実施形態のその他の構成は、実施形態１のそれと同じであるので、その逐一の説明は省略する。
【００３３】
次に、図８乃至図１０を参照して、この実施形態の動作について説明する。
メモリリーク検出支援システム１０での処理が開始されると、先ず、区間パターン照合手段２２が、プログラム記憶手段１１に記憶されているプログラムから、区間パターン照合手段２１に記憶された区間パターンに照合する箇所を、プログラム内のメモリリークの調査対象とする区間として取得する（図９のステップＳ１Ａ）。
【００３４】
次に、プログラム実行手段１３が、プログラム記憶手段１１に記憶されたプログラムを実行する（図９のステップＳ２Ａ）。この実行において、区間パターン照合手段２１で取得した区間の前後でスナップショットを出力し、開始時のスナップショットを区間開始時スナップショット記憶手段１４に記憶させ、また、区間の終了時のスナップショットを区間終了時スナップショット記憶手段１５に記憶させる（図９のステップＳ２Ａ）。この記憶の際に、それらスナップショットに含まれるオブジェクトに、それを作成したスレッドのＩＤを付加する。また、プログラム実行手段１３は、指定された区間を実行したスレッドのＩＤを出力する。
【００３５】
次いで、差分抽出手段における差分作成手段１６１が、区間開始時スナップショット記憶手段１４及び区間終了時スナップショット記憶手段１５に記憶されたスナップショットを読み込み、それら両スナップショットを比較して（スナップショット間の差分を取って）区間開始時にアクティブオブジェクトでなく、区間終了時にアクティブオブジェクトとなっているものを抽出する（図９のステップＳ３Ａ）。
そして、差分絞込み手段１６２が、差分作成手段１６１で作成した差分（そこから出力されたアクティブオブジェクト）の中から、区間パターン照合手段２２で取得された区間についてプログラム実行手段１３が実行したスレッドのＩＤと同じスレッドＩＤが付加されたアクティブオブジェクトのみを絞り込み、出力する（図９のステップＳ４Ａ）。
【００３６】
最後に、差分表示手段１７は、差分絞込み手段１６２から出力されたアクティブオブジェクト（絞り込まれたアクティブオブジェクト）を表示する。
なお、この実施形態では、差分作成手段１６１（図９のステップＳ３Ａ）、そして差分絞込み手段１６２（図９のステップＳ４Ａ）の順に実行しているが、この順と逆順、すなわち、差分絞込み手段１６２（図９のステップＳ４Ａ）、そして差分作成手段１６１（図９のステップＳ３Ａ）の順で実行する構成でもよい。
【００３７】
上述した動作の具体例を図８乃至図１０を参照して説明する。
プログラム記憶手段１１に図３に示すようなプログラムが記憶され、区間パターン記憶手段２１には、図１０に示すような区間パターンが登録されたとする。この区間パターンは、Threadクラスを承継したクラスのrunメソッドの全体を区間として認識するパターンである。
メモリリーク検出支援システム１０Ａでの処理が開始されると、図９のステップＳ１Ａを実行する区間パターン照合手段２２が、図３に示す４行目乃至８行目を区間として認識する。この処理以降の処理は、実施形態１において説明した動作の具体例と同じである。
【００３８】
このように、この実施形態によれば、プログラム内のメモリリークの調査対象とする区間を区間パターン照合手段で取得される区間に基づいて自動的に識別するようにしたので、プログラムをスレッドで実行するときのどのスレッドでメモリリークが発生するか否かの検出を行うことができる。
また、実施形態１で得られるその他の効果も同等に享受し得る。
【００３９】
以上、この発明の実施形態を、図面を参照して詳述してきたが、この発明の具体的な構成は、これらの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計の変更等があってもそれらはこの発明に含まれる。
例えば、上記実施形態は、マルチスレッドでプログラムを実行する例を示したが、そこから把握される発明を、プログラムをその他の処理単位で実行する場合にも適用し得る。
また、上述のスナップショットは、その他の処理目的で同等にメモリから出力される情報群で代替してその目的とする処理を実施するように構成する場合にも、この発明を適用し得る。
【産業上の利用可能性】
【００４０】
ここに開示している情報処理システム及び情報処理システムにおける情報抽出方法並びにその制御プログラムは、複数の処理単位を順次切り替え等して情報処理を行って行く各種の情報処理システムに利用し得る。
【符号の説明】
【００４１】
１０、１０Ａ      メモリリーク検出支援システム（情報処理システム）
１１      プログラム記憶手段（区間指示手段の一部）
１２      区間指定手段（区間指示手段）
１３      プログラム実行手段（処理手段）
１４      区間開始時スナップショット記憶手段（抽出手段の一部）
１５      区間終了時スナップショット記憶手段（抽出手段の一部）
１６      差分抽出手段（抽出手段の一部）
１７      差分表示手段（抽出手段の残部）
２１      区間パターン記憶手段（区間指示手段の一部）
２２      区間パターン照合手段（区間指示手段の残部）
１６１      差分作成手段（抽出手段）
１６２      差分絞込み手段（絞込み手段）
【図１】
2010211415.tif 000003
【図２】
2010211415.tif 000004
【図３】
2010211415.tif 000005
【図４】
2010211415.tif 000006
【図５】
2010211415.tif 000007
【図６】
2010211415.tif 000008
【図７】
2010211415.tif 000009
【図８】
2010211415.tif 000010
【図９】
2010211415.tif 000011
【図１０】
2010211415.tif 000012