(57)【要約】【課題】  コンピュータシステム上のデータに対して、人手による負担データの条件の定義を行うことなく負担データを特定する。【解決手段】  負担データ特定システムは、依存先である一の種類と、一の種類のデータの変化に応じてデータの内容に影響を受ける依存元である他の種類と、を対応付ける依存関係を示す、依存先を識別できる識別子と依存元を識別できる識別子とを対応付けた情報を一または複数含む関係構造を一または複数入力として受け、受け取った関係構造の中で、ある関係構造が示す依存関係をすべて含む関係構造の数を特定し、ある関係構造とその数とを対応付け、前述の対応付けた数の大きさの順位が所定の順位以上の数に相当する関係構造が示すすべての依存関係における依存元であるデータの種類を、コンピュータシステムにとって過度の負担となりうる負担データの種類と特定する。【選択図】  図１
2012008615.tif 000002
【特許請求の範囲】
【請求項１】
依存先である一の種類と、当該一の種類のデータの変化に応じてデータの内容に影響を受ける依存元である他の種類と、を対応付ける依存関係を示す、前記依存先を識別できる識別子と前記依存元を識別できる識別子とを対応付けた情報を一または複数含む関係構造を一または複数入力として受ける関係構造特定手段と、
前記関係構造特定手段が受け取った関係構造の中で、ある関係構造が示す依存関係をすべて含む関係構造の数を特定し、前記ある関係構造と前記数とを対応付ける重複構造特定手段と、
前記重複構造特定手段が対応付けた前記数の大きさの順位が所定の順位以上の数に相当する前記ある関係構造が示すすべての依存関係における依存元であるデータの種類を、コンピュータシステムにとって過度の負担となりうる負担データの種類と特定する負担データ特定手段とを備える
負担データ特定システム。
【請求項２】
前記関係構造特定手段は、メモリに記憶されているデータの種類の識別子を受け取り、
前記重複構造特定手段は、前記関係構造特定手段が受け取ったデータの種類の識別子毎に、一の識別子で識別できるデータの種類を、すべての依存関係における依存元として含む関係構造を特定し、
前記重複構造特定手段は、前記関係構造が示す依存関係をすべて含む関係構造の数を特定し、前記関係構造と前記数と前記一の識別子とを対応付け、
前記負担データ特定手段は、前記数の大きさの順位が所定の順位以上の数に相当する識別子に基づいて識別されるデータの種類を、前記負担データの種類と特定する、請求項１に記載の負担データ特定システム。
【請求項３】
前記負担データ特定手段は、前記重複構造特定手段が対応付けた識別子毎に、一の識別子に対応付けられている各前記数をそれぞれ加算し、前記加算された数の大きさの順位が所定の順位以上の場合に当該識別子で識別できるデータの種類を、前記負担データの種類と特定する、請求項２に記載の負担データ特定システム。
【請求項４】
前記関係構造特定手段は、前記データの種類と前記関係構造とを受け取る際に前記データの種類または前記関係構造が生成された時刻を示す情報をそれぞれ受け取り、
前記負担データ特定システムは、
前記関係構造特定手段が受け取る関係構造が示すすべての依存関係における依存元であるデータの種類と前記関係構造が生成された時刻を示す情報とに基づいて、データの種類毎にその種類のデータが前記メモリに記憶されている時間を特定する残存時間特定手段を備え、
前記負担データ特定手段は、前記数の大きさの順位が所定の順位以上の場合で、かつ、当該数に対応付けられている識別子で識別される種類のデータが前記メモリに記憶されている時間が所定の基準値より長い当該データの種類を負担データの種類と特定する
請求項２または３に記載の負担データ特定システム。
【請求項５】
前記負担データ特定システムは、
ある関係構造が示すすべての依存関係における依存元であるデータの種類から、前記ある関係構造が示すすべての依存関係における依存先であるデータの種類への依存関係の階層の深さを表すホップ数を特定する構造深さ特定手段と、
前記重複構造特定手段が対応付けた関係構造毎に、前記関係構造に対応付けられている前記数と、前記残存時間特定手段が特定した当該関係構造に対応付けられている識別子で識別される種類のデータが前記メモリに記憶されている時間と、前記構造深さ特定手段が特定した前記関係構造の前記ホップ数とに基づいて、前記種類が負担データの種類である可能性の高さを示す値を決定するランキング手段とを備える
請求項４に記載の負担データ特定システム。
【請求項６】
前記負担データ特定システムは、
一のデータの種類の識別子と、当該種類のデータが生成されることに基づいて必然的に生成される他のデータの種類の識別子と、を対応付けた情報であるデータ生成手順情報を記憶するデータ生成手順記憶手段と、
前記ランキング手段が決定した前記負担データである可能性の高さを示す値と、前記データ生成手順記憶手段に記憶される前記データ生成手順情報と、に基づいて、前記負担データである可能性の高さを示す値に対応付けられている関係構造を当該値の高い順に並べて出力する出力手段と、
負担データではない種類のデータであることを示す判定情報の入力を受け、当該判定情報で特定される種類のデータが生成されることに基づいて必然的に生成される他の種類のデータを前記データ生成手順記憶手段に記憶されている前記データ生成手順情報に基づいて抽出し、前記出力手段が出力した値にそれぞれ対応するデータの種類の中から前記他の種類を特定する絞り込み手段とを備える、請求項５に記載の負担データ特定システム。
【請求項７】
前記負担データ特定システムは、
前記出力手段が出力した前記値のいずれかを選択する情報の入力を受けると、当該値を決定する際にランキング手段が参照したデータの種類をすべての依存関係の依存元として含む関係構造に含まれるすべての依存関係を示すグラフを表示する可視化手段を備える
請求項６に記載の負担データ特定システム。
【請求項８】
前記可視化手段は、
前記出力手段が出力した前記関係構造のいずれかを選択する情報の入力を受けると、該関係構造を示すすべての依存関係における依存元である種類のデータを使用する、前記メモリに記憶されているプログラムの該当コードを表示する
請求項７に記載の負担データ特定システム。
【請求項９】
依存先である一の種類と、当該一の種類のデータの変化に応じてデータの内容に影響を受ける依存元である他の種類と、を対応付ける依存関係を示す、前記依存先を識別できる識別子と前記依存元を識別できる識別子とを対応付けた情報を一または複数含む関係構造を一または複数入力として受け、
前記受け取った関係構造の中で、ある関係構造が示す依存関係をすべて含む関係構造の数を特定し、前記ある関係構造と前記数とを対応付け、
前記対応付けた前記数の大きさの順位が所定の順位以上の数に相当する前記ある関係構造が示すすべての依存関係における依存元であるデータの種類を、コンピュータシステムにとって過度の負担となりうる負担データの種類と特定する負担データ特定方法。
【請求項１０】
依存先である一の種類と、当該一の種類のデータの変化に応じてデータの内容に影響を受ける依存元である他の種類と、を対応付ける依存関係を示す、前記依存先を識別できる識別子と前記依存元を識別できる識別子とを対応付けた情報を一または複数含む関係構造を一または複数入力として受ける処理と、
前記受け取った関係構造の中で、ある関係構造が示す依存関係をすべて含む関係構造の数を特定し、前記ある関係構造と前記数とを対応付ける処理と、
前記対応付けた前記数の大きさの順位が所定の順位以上の数に相当する前記ある関係構造が示すすべての依存関係における依存元であるデータの種類を、コンピュータシステムにとって過度の負担となりうる負担データの種類と特定する処理とをコンピュータに実行させるための負担データ特定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータやシステムの稼働にとって過度の負担となりうるデータを特定する負担データ特定システム、負担データ特定方法、および負担データ特定プログラムに関する。
【背景技術】
【０００２】
コンピュータの記憶領域（以下、メモリと称す）上に永続的に残ってしまう不要なデータを絞り込むデータ検出技術が知られている。例えば、特許文献１には、メモリ上のデータの中から永続的に残ってしまう不要なデータを絞り込むメモリリークの検出方法が記載されている（特許文献１（段落００１３−００１９、図２−図４）参照）。メモリリークとは、プログラムの動作中に、メモリにおいて使用可能なメモリの容量が徐々に減っていく現象のことである。
【０００３】
特許文献１に記載されたシステムでは、メモリ上のデータの中から永続的に残ってしまう不要なデータを絞り込むために、ユーザが永続的に残ってしまう不要なデータの条件を定義する。この条件は、例えば、メモリ上の格納先や、データの変数の種類と数や、データのサイズなどである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−４４１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載された方法では、負担データであるか否かを示す条件を、ユーザが定義する。アプリケーションが稼働するにあたって生成される全てのデータをユーザがあらかじめ把握しておくことは難しい。したがって人手による負担データの条件の定義を完全に行うことは非常に困難である。
【０００６】
本発明の目的の一例は、コンピュータシステム上のデータに対して、人手による負担データの条件の定義を行うことなく負担データを特定する負担データ特定システム、負担データ特定方法、および負担データ特定プログラムを提供することである。
【課題を解決するための手段】
【０００７】
本発明の一態様における第一の負担データ特定システムは、依存先である一の種類と、当該一の種類のデータの変化に応じてデータの内容に影響を受ける依存元である他の種類と、を対応付ける依存関係を示す、前記依存先を識別できる識別子と前記依存元を識別できる識別子とを対応付けた情報を一または複数含む関係構造を一または複数入力として受ける関係構造特定手段と、前記関係構造特定手段が受け取った関係構造の中で、ある関係構造が示す依存関係をすべて含む関係構造の数を特定し、前記ある関係構造と前記数とを対応付ける重複構造特定手段と、前記重複構造特定手段が対応付けた前記数の大きさの順位が所定の順位以上の数に相当する前記ある関係構造が示すすべての依存関係における依存元であるデータの種類を、コンピュータシステムにとって過度の負担となりうる負担データの種類と特定する負担データ特定手段とを備える。
【０００８】
また、本発明の一態様における第一の負担データ特定方法は、依存先である一の種類と、当該一の種類のデータの変化に応じてデータの内容に影響を受ける依存元である他の種類と、を対応付ける依存関係を示す、前記依存先を識別できる識別子と前記依存元を識別できる識別子とを対応付けた情報を一または複数含む関係構造を一または複数入力として受け、前記受け取った関係構造の中で、ある関係構造が示す依存関係をすべて含む関係構造の数を特定し、前記ある関係構造と前記数とを対応付け、前記対応付けた前記数の大きさの順位が所定の順位以上の数に相当する前記ある関係構造が示すすべての依存関係における依存元であるデータの種類を、コンピュータシステムにとって過度の負担となりうる負担データの種類と特定する。
【０００９】
また、本発明の一態様における第一の負担データ特定プログラムは、依存先である一の種類と、当該一の種類のデータの変化に応じてデータの内容に影響を受ける依存元である他の種類と、を対応付ける依存関係を示す、前記依存先を識別できる識別子と前記依存元を識別できる識別子とを対応付けた情報を一または複数含む関係構造を一または複数入力として受ける処理と、前記受け取った関係構造の中で、ある関係構造が示す依存関係をすべて含む関係構造の数を特定し、前記ある関係構造と前記数とを対応付ける処理と、前記対応付けた前記数の大きさの順位が所定の順位以上の数に相当する前記ある関係構造が示すすべての依存関係における依存元であるデータの種類を、コンピュータシステムにとって過度の負担となりうる負担データの種類と特定する処理とをコンピュータに実行させる。
【発明の効果】
【００１０】
本発明における効果の一つは、コンピュータシステムに存在するデータのうち、当該コンピュータシステムの動作に過度の負担となりうるデータをユーザに特定しやすくすることである。
【図面の簡単な説明】
【００１１】
【図１】図１は、本発明の第１の実施の形態の構成例を示すブロック図である。
【図２】図２は、本発明の第１の実施の形態における負担データ特定システムの関係構造特定手段の動作の概要の一例を示すフローチャートである。
【図３】図３は、ある時刻ｔにおけるデータの種類の一例を示す図である。
【図４】図４は、ある時刻ｔにおけるデータの関係構造の一例を示す図である。
【図５】図５は、データの関係構造の種類と各種類に属する関係構造の数とを対応付けた情報の一例を示す図である。
【図６】図６は、本発明の第１の実施の形態における負担データ特定システムの重複構造特定手段があるデータの関係構造の種類に属する関係構造と同じデータの関係構造を少なくとも含むデータの関係構造の複数時刻における通算の数を特定する動作の概要の一例を示すフローチャートである。
【図７】図７は、複数の時刻のそれぞれにおけるデータの関係構造の種類とその種類に属する関係構造の数とを対応付けた情報の例を示す図である。
【図８】図８は、各データの種類とそのデータの種類を依存元とする関係構造が分類される関係構造の種類とその関係構造と同じデータの関係構造を少なくとも含む関係構造の複数時刻における通算の数とを対応付けた情報の例を示す図である。
【図９】図９は、本発明の第２の実施の形態の構成例を示すブロック図である。
【図１０】図１０は、本発明の第２の実施の形態における負担データ特定システムの残存時間特定手段が、各データの種類の残存時間を特定する動作の概要の一例を示すフローチャートである。
【図１１】図１１は、本発明の第２の実施の形態における負担データ特定システムの残存時間特定手段が出力するデータの種類の残存時間の例を示す説明図である。
【図１２】図１２は、本発明の第３の実施の形態の構成例を示すブロック図である。
【図１３】図１３は、本発明の第３の実施の形態における負担データ特定システムのランキング手段が各データの種類の負担データの種類である可能性の高さを算出した結果の情報の一例を示す図である。
【図１４】図１４は、本発明の第３の実施の形態における負担データ特定システムのランキング手段が、各データの関係構造の種類が負担データの種類である可能性の高さを算出した結果を使ってランキングした結果の一例を示す図である。
【図１５】図１５は、本発明の第３の実施の形態における負担データ特定システムのランキング手段が、各データの種類が負担データの種類である可能性の高さを算出した結果を使ってランキングした結果の一例を示す図である。
【図１６】図１６は、本発明の第４の実施の形態の構成例を示すブロック図である。
【図１７】図１７は、本発明の第４の実施の形態における負担データ特定システムの構造深さ特定手段が、データの関係構造の階層の深さを特定する動作の概要の一例を示すフローチャートである。
【図１８】図１８は、本発明の第４の実施の形態における負担データ特定システムの構造深さ特定手段が出力するデータの関係構造の階層の深さの一例を示す図である。
【図１９】図１９は、ランキング手段１６０が各データの種類の負担データの種類である可能性の高さを算出した結果の情報の一例を示す図である。
【図２０】図２０は、ランキング手段１６０が、各データの関係構造の種類が負担データの種類である可能性の高さを算出した結果を使ってランキングした結果の一例を示す図である。
【図２１】図２１は、ランキング手段１６０が、各データの種類が負担データの種類である可能性の高さを算出した結果を使ってランキングした結果の一例を示す図である。
【図２２】図２２は、本発明の第５の実施の形態の構成例を示すブロック図である。
【図２３】図２３は、本発明の第５の実施の形態における負担データ特定システムの絞り込み手段がユーザへ表示するダイアログの一例を示す図である。
【図２４】図２４は、本発明の第５の実施の形態における負担データ特定システムの絞り込み手段がユーザへ表示するダイアログの一例を示す図である。
【図２５】図２５は、本発明の第５の実施の形態における負担データ特定システムの絞り込み手段がユーザへ表示するダイアログの一例を示す図である。
【図２６】図２６は、本発明の第５の実施の形態における負担データ特定システムの絞り込み手段がユーザへ表示するダイアログの一例を示す図である。
【図２７】図２７は、データ生成手順記憶装置３２０が記憶するデータの生成手順情報の一例を示す図である。
【図２８】図２８は、本発明の第５の実施の形態における負担データ特定システムの絞り込み手段が、ユーザへランキングされたデータの種類を絞り込む処理の動作の概要の一例を示すフローチャートである。
【図２９】図２９は、本発明の第６の実施の形態の構成例を示すブロック図である。
【図３０】図３０は、関係構造を可視化した情報の一例を示す図である。
【図３１】図３１は、関係構造を可視化した情報の一例を示す図である。
【図３２】図３２は、ユーザが指定した負担データの種類を生成するプログラムの該当コードを表示した一例を示す図である。
【図３３】図３３は、本発明の第７の実施の形態の構成例を示すブロック図である。
【発明を実施するための形態】
【００１２】
以下、本発明の各実施形態を、図面を参照して説明する。以下の説明では、プログラミング言語の一つであるＪａｖａ（登録商標）で使用されるデータを例に説明する。また、以下の説明においてデータとは、アプリケーションが稼働するコンピュータの記憶領域（以下、メモリと称す）に保持される情報であり、アプリケーション中のプログラムが使う変数や関数などを指す。またデータの種類とは、Ｊａｖａ（登録商標）言語におけるＳｔｒｉｎｇやＶｅｃｔｏｒなどのクラス名や、ｃｈａｒ［］やｂｙｔｅ［］などの配列の型などを指す。また、アプリケーションとは、例えば企業の業務アプリケーションやＥコマース等の各種サービスのためのＷｅｂアプリケーションを含む。
【００１３】
［第１の実施の形態］
図１は、本発明の第１の実施の形態の構成例を示すブロック図である。本実施形態の負担データ特定システム１００は、関係構造特定手段１１０と、関係構造記憶装置１２０と、重複構造特定手段１３０と、負担データ特定手段１４０とを備える。図１では、負担データ特定システム１００に、入力装置２１０と、出力装置２２０とが接続されるが、負担データ特定システム１００自身が、入力装置２１０と、出力装置２２０とを備えてもよい。本実施の形態の負担データ特定システム１００は、メモリに存在するデータの中から負担データの種類を特定する。負担データとは、メモリ上に永続的に存在してしまうデータを指す。
【００１４】
入力装置２１０は、メモリに存在する複数の時刻のそれぞれにおけるデータの種類と、データの関係構造とを負担データ特定システム１００に入力するためのインターフェイスである。例えば、入力装置２１０は、キーボードのような入力装置などを含む。
【００１５】
出力装置２２０は、負担データ特定手段１４０によって特定された負担データを、出力する装置である。例えば、出力装置２２０は、ディスプレイのような出力装置などを含む。
【００１６】
ここで、データの関係構造とは、データの種類の依存関係を示す情報を指す。また、データの依存関係とは、ある種類のデータが他の種類のデータに依存している、または依存されていることを表している。例えば、ある種類ＸのデータＡとある種類ＹのデータＢが依存関係にある場合、データＡの値が変更されることによって、データＢの値も同時に変更されたり、データＢが削除されなければデータＡが削除されなかったりする。つまり、データの依存関係とは、ある種類のデータの変化により他の種類のデータが影響を受ける関係と言い換えることができる。
【００１７】
本明細書において、データの依存関係は矢印「←」で表される。例えば、「種類Ｘ←種類Ｙ」という表記は、種類ＸのデータＡと種類ＹのデータＢが依存関係にあり、種類ＹのデータＢが依存元で、種類ＸのデータＡが依存先となることを表す。そして、「種類Ｘ←種類Ｙ」という情報がデータの関係構造を表す。
【００１８】
本実施の形態において、使用されるプログラミング言語がＪａｖａ（登録商標）の場合、データの種類と、データの関係構造として、ＪＶＭ（ＪａｖａＶｉｒｔｕａｌＭａｃｈｉｎｅ）が出力するデータの種類と、データの関係構造とが使われてもよい。その他のプログラミング言語においても、同等のデータの種類と、データの関係構造とを出力する既存のメモリデータ抽出ツール等を使うことにより取得できる、データの種類と、データの関係構造とが使われてもよい。
【００１９】
入力装置２１０から負担データ特定システム１００に入力される複数の時刻のそれぞれにおけるデータの種類とデータの関係構造とは、各時刻におけるデータの種類と、データの関係構造とを１セットとして含むファイルが複数時刻分ある構成であってもよい。また、前述のデータの種類とデータの関係構造とは、１つのファイルにおいて、複数時刻分のデータの種類と、データの関係構造とをそれぞれ対応付けて含む構成であってもよい。
【００２０】
関係構造特定手段１１０は、入力装置２１０からメモリに存在する複数の時刻のそれぞれにおけるデータの種類と、データの関係構造とが入力されると、各時刻のそれぞれにおけるデータの種類と、データの関係構造とを対応付ける。また関係構造特定手段１１０は、データの関係構造毎にその関係構造の種類を特定する。
【００２１】
データの関係構造の種類とは、同じ関係構造を持つデータ毎に関係構造特定手段１１０が分類することで形成されるそれぞれの集合のことをいう。例えば、同じデータの種類であっても、データの関係構造が異なる場合がある。その場合においても、関係構造特定手段１１０は、データの関係構造が異なるデータの種類をそれぞれ別のデータとして扱えるようにするために、データの関係構造を分類しておく。このようにして、関係構造特定手段１１０は、全てのデータの種類と、データの関係構造とを特定する。そして関係構造特定手段１１０は、各データの関係構造毎にそのデータの関係構造に対応付けられているデータの種類に基づいてそのデータの関係構造の種類を特定する。
【００２２】
関係構造特定手段１１０は、データの関係構造の各種類に属する関係構造の数をそれぞれ特定する。
【００２３】
関係構造特定手段１１０は、複数の時刻のそれぞれにおけるすべてのデータの種類を出力する。さらに関係構造特定手段１１０は、データの関係構造の種類と各種類に属するデータの関係構造の数とをそれぞれの時刻毎に対応付けて出力する。
【００２４】
関係構造記憶装置１２０は、関係構造特定手段１１０が出力する複数の時刻のそれぞれにおける全てのデータの種類を記憶する。そして関係構造記憶装置１２０は、複数の時刻のそれぞれにおけるデータの関係構造の種類と各種類に属する関係構造の数とを対応付けて記憶する。
【００２５】
重複構造特定手段１３０は、関係構造記憶装置１２０から、複数の時刻におけるすべてのデータの種類を読み込み、また複数の時刻のそれぞれにおけるデータの関係構造の種類と各種類に属する関係構造の数とを読み込む。そして重複構造特定手段１３０は、各データの関係構造の種類に属する関係構造と同じデータの関係構造を少なくとも含むデータの関係構造の複数時刻における通算の数を特定する。重複構造特定手段１３０は、例えば、「種類Ｘ←種類Ｙ」という関係構造と、「種類Ｘ←種類Ｙ←種類Ｚ」という関係構造とについて、「種類Ｘ←種類Ｙ」が「種類Ｘ←種類Ｙ←種類Ｚ」に含まれる、ということを判定する処理を行う。すなわち重複構造特定手段１３０は、「種類Ｘ←種類Ｙ」と、「種類Ｘ←種類Ｙ←種類Ｚ」に含まれる「種類Ｘ←種類Ｙ」とを同じ関係構造を持つ関係構造のデータとして扱う。
【００２６】
なお本明細書において『各データの関係構造の種類に属する関係構造と同じデータの関係構造を少なくとも含むデータの関係構造の複数時刻における通算の数』は、『各データの関係構造の種類に属する関係構造の重複構造数』とも称される。
【００２７】
そして重複構造特定手段１３０は、データの関係構造の種類とそのデータの関係構造の種類に属する関係構造の重複構造数とを対応付けて出力する。
【００２８】
負担データ特定手段１４０は、重複構造特定手段１３０から、データの関係構造の種類とその種類に属する関係構造の重複構造数とを読み込む。そして負担データ特定手段１４０は、前述の関係構造の重複構造数の大きさの順位が所定の順位以上である関係構造に含まれるデータの種類のうちすべてのデータの種類の依存元となるデータの種類を負担データの種類と特定する。
【００２９】
「所定の順位以上」とは、関係構造の重複構造数の大きさに基づいて各関係構造の重複構造数の順位付けを行った際のその順位が所定の閾値以上である場合を含む。また「所定の順位以上」とは、関係構造の重複構造数が所定の閾値以上である数の順位以上である場合を含む。例えば、「所定の順位以上」は、「関係構造の重複構造数の大きいほうから上位二つ」という条件であってもよい。また、「所定の順位以上」は、「関係構造の重複構造数が『１０』以上の数の順位以上」という条件であってもよい。
【００３０】
出力装置２２０は、負担データ特定手段１４０によって特定された負担データの種類を出力する。
【００３１】
関係構造特定手段１１０と、重複構造特定手段１３０と、負担データ特定手段１４０とは、例えば、プログラム（負担データ特定プログラム）によって動作するＣＰＵによって実現される。関係構造特定手段１１０と、重複構造特定手段１３０と、負担データ特定手段１４０とが、同一のＣＰＵによって実現されてもよい。この場合、プログラムは、例えば、負担データ特定システム１００が備えるプログラム記憶装置（図示せず）に記憶される。ＣＰＵは、そのプログラムを読み込み、そのプログラムにしたがって、関係構造特定手段１１０と、重複構造特定手段１３０と、負担データ特定手段１４０として動作すればよい。
【００３２】
また、前述のプログラムのコードを記録した記録媒体（または記憶媒体）が、負担データ特定システム１００に供給され、負担データ特定システム１００が記録媒体に格納されたプログラムのコードを読み出し実行してもよい。
【００３３】
関係構造記憶装置１２０は、例えば、ハードディスクのような記憶装置によって実現される。
【００３４】
次に、本発明の第１の実施の形態における負担データ特定システム１００の動作の一例について説明する。図２は、本発明の第１の実施の形態における負担データ特定システム１００の関係構造特定手段１１０の動作の概要の一例を示すフローチャートである。
【００３５】
まず、メモリに存在する複数の時刻におけるデータの種類と、データの関係構造とが入力装置２１０を介して、負担データ特定システム１００の関係構造特定手段１１０に入力される（ステップＡ１）。関係構造特定手段１１０は、複数の時刻のそれぞれにおけるデータの種類と、データの関係構造とを参照して、各時刻におけるデータの種類と、データの関係構造とを対応付ける。そして関係構造特定手段１１０は、各データの関係構造の種類を特定する（ステップＡ２）。
【００３６】
複数の時刻のそれぞれにおけるデータの種類と、データの関係構造とが、それらを１セットとしたファイルとして構成され、そのファイルが複数時刻分存在する構成の場合、関係構造特定手段１１０は、次の方法で各データの関係構造の種類を特定すればよい。すなわち関係構造特定手段１１０は、それぞれのファイルに対してデータの種類と、データの関係構造とを対応付け、各データの関係構造の種類を特定すればよい。一方、複数の時刻におけるデータの種類と、データの関係構造とを含む情報が、１つのファイルに存在する構成の場合、関係構造特定手段１１０は、まず、データの種類と、データの関係構造とを時刻毎に分割する。そして関係構造特定手段１１０は、分割した時刻毎にデータの種類と、データの関係構造とを対応付けてもよい。そして関係構造特定手段１１０は、各データの関係構造の種類を特定すればよい。
【００３７】
関係構造特定手段１１０は、各データの関係構造の種類に属する関係構造の数を特定する（ステップＡ３）。
【００３８】
関係構造特定手段１１０は、各時刻におけるデータの種類を関係構造記憶装置１２０へ渡す。また関係構造特定手段１１０は、データの関係構造の種類と各種類に属する関係構造の数とを関係構造記憶装置１２０へ渡す（ステップＡ４）。
【００３９】
図３は、ある時刻ｔにおけるデータの種類の一例を示す図である。関係構造記憶装置１２０は、各時刻におけるデータの種類として、図３に示すデータ名一覧情報１０１０を記憶してもよい。図３のデータ名一覧情報１０１０は、メモリ上に記憶されるデータの種類（以下、データ名とも呼ばれる）の一覧を示す情報であり、データ名に対して各データ名を一意に識別できるデータＩＤが割り当てられている。例えば、データ名一覧情報１０１０のデータ名「Ｓｔｒｉｎｇ」に対して、データＩＤ「１」が割り当てられている。
【００４０】
図４は、ある時刻ｔにおけるデータの関係構造の一例を示す図である。図４の関係構造一覧情報１０２０は、データの関係構造のそれぞれが文字列を使って示されている情報である。また図４の関係構造一覧情報１０２０は、データの依存関係がデータＩＤを使って示されている情報である。例えば、関係構造一覧情報１０２０の２行目「１←２」は、『データＩＤ＝１で特定されるデータの種類は、データＩＤ＝２で特定されるデータの種類と依存関係にある』という意味を示す。同様に、関係構造一覧情報１０２０の３行目「１←２←４」は、『データＩＤ＝１で特定されるデータの種類は、データＩＤ＝２で特定されるデータの種類と依存関係にあり、データＩＤ＝２で特定されるデータの種類は、データＩＤ＝４で特定されるデータの種類と依存関係にある』という意味を示す。
【００４１】
本明細書において、各データＩＤで特定されるデータの種類は、単に『データの種類』とも称される。例えば、『データＩＤ＝１で特定されるデータの種類「Ｓｔｒｉｎｇ」』は、『データの種類「１」』とも称される。なお、図２に示すデータ名一覧情報１０１０によれば、データＩＤとデータの種類とは一対一に対応するので、データＩＤとデータの種類との情報は、データ名一覧情報１０１０に基づいて互いに置換可能である。
【００４２】
図５は、データの関係構造の種類と各種類に属する関係構造の数とを対応付けた情報の一例を示す図である。関係構造記憶装置１２０は、データの関係構造の種類と各種類に属する関係構造の数とを対応付けた情報として図５に示す関係構造数一覧情報１０３０を記憶してもよい。図５の関係構造数一覧情報１０３０は、データの関係構造の種類と各種類に属する関係構造の数とを対応付けた情報である。例えば、関係構造数一覧情報１０３０の２行目のデータの関係構造「１←２」は、『関係構造の種類「１←２」に属する関係構造「１←２」の数が「１」である』という意味を示す。
【００４３】
関係構造数一覧情報１０３０は、ある時刻を示す情報を含んでもよい。このある時刻とは、関係構造数一覧情報１０３０が含むデータの関係構造がＪＶＭによって出力された時刻でもよい。またはこのある時刻とは、関係構造特定手段１１０が、このデータの関係構造の入力を受けた時刻であってもよい。
【００４４】
以下、関係構造特定手段１１０が、ある時刻ｔにおけるデータの関係構造の種類を特定する動作の例を説明する。
【００４５】
関係構造特定手段１１０は、複数の時刻のそれぞれにおけるデータの種類と、データの関係構造とを使って、データの種類と、データの関係構造とを対応付ける。そして関係構造特定手段１１０は、複数の時刻のそれぞれにおけるデータの関係構造についてデータの関係構造の種類を特定する。そして関係構造特定手段１１０は、データの関係構造の各種類に属するデータの関係構造の数をそれぞれの時刻毎に特定する。
【００４６】
具体的には、関係構造特定手段１１０は、図４の関係構造一覧情報１０２０に含まれるデータの関係構造に対して、同じ関係構造を持つデータ毎に分類して、分類される種類毎にその種類に属するデータの関係構造の数をカウントする。例えば、関係構造特定手段１１０は、図４の関係構造一覧情報１０２０の２行目「１←２」を選択し、関係構造一覧情報１０２０の中に同じ関係構造を持つデータを検索する。その結果、関係構造特定手段１１０は、関係構造一覧情報１０２０の２行目に示される「１←２」が、それ自身の１つのみ存在することが分かる。よって、関係構造特定手段１１０は、「１←２」をデータの関係構造の種類の１つと判定し、関係構造「１←２」の数量を１とする。
【００４７】
同様に、関係構造特定手段１１０は、図４の関係構造一覧情報１０２０の３行目「１←２←４」を選択し、関係構造一覧情報１０２０の中に同じ関係構造を持つデータを検索する。その結果、関係構造特定手段１１０は、関係構造一覧情報１０２０の２行目に示される「１←２←４」が、それ自身を含めて２つ存在することが分かる。よって関係構造特定手段１１０は、「１←２←４」をデータの関係構造の種類の１つと判定し、関係構造「１←２←４」の数量を２とする。
【００４８】
関係構造特定手段１１０は、このような処理を例えば関係構造一覧情報１０２０の全てのデータの関係構造に対して行う。その結果が図５の関係構造数一覧情報１０３０である。なお、データの関係構造の種類を探す方法は、上記で説明したような全数探索的な方法以外のどのような方法であってもよい。
【００４９】
関係構造特定手段１１０は、複数の時刻のそれぞれにおけるデータの関係構造の種類と各種類に属する関係構造の数とを特定した後、その結果を関係構造記憶装置１２０に記憶する。ここで、関係構造特定手段１１０が関係構造記憶装置１２０に記憶する情報は、データの関係構造の種類とその種類に属する関係構造の数とを表す関係構造数一覧情報１０３０でもよい。
【００５０】
また関係構造特定手段１１０は、関係構造数一覧情報１０３０と共にデータ名とデータＩＤとを表すデータ名一覧情報１０１０を一緒に関係構造記憶装置１２０へ記憶してもよい。本説明では、関係構造数一覧情報１０３０とデータ名一覧情報１０１０とを関係構造記憶装置１２０へ記憶する。なお、関係構造特定手段１１０がデータ名一覧情報１０１０を関係構造記憶装置１２０へ記憶しない場合、本説明における負担データ特定システム１００の動作は、データの種類ではなくデータＩＤそのものに基づいて行われる。
【００５１】
関係構造記憶装置１２０は、関係構造特定手段１１０が特定した複数の時刻のそれぞれにおけるデータの関係構造の種類と各種類に属する関係構造の数とを対応付けて記憶する。また、関係構造記憶装置１２０が記憶するデータの関係構造の種類と各種類に属する関係構造の数とは、重複構造特定手段１３０によって読み込まれる。
【００５２】
重複構造特定手段１３０は、関係構造記憶装置１２０に記憶される複数の時刻のデータの関係構造の種類と各種類に属する関係構造の数とを読み出す。そして、重複構造特定手段１３０は、各データの関係構造の種類に属する関係構造の重複構造数を特定する。重複構造特定手段１３０が特定した各データの関係構造の種類に属する関係構造の重複構造数は、負担データ特定手段１４０へ渡される。
【００５３】
図６は、重複構造特定手段１３０があるデータの関係構造の種類に属する関係構造の重複構造数を特定する動作の概要の一例を示すフローチャートである。また、図７は、複数の時刻のそれぞれにおけるデータの関係構造の種類とその種類に属する関係構造の数とを対応付けた情報の例を示す図である。また、図８は、各データの種類とそのデータの種類を依存元とする関係構造が分類される関係構造の種類とその関係構造の重複構造数とを対応付けた情報の例を示す図である。図８に示される情報は、重複構造特定手段１３０が出力する情報である。以下、図６、図７、および図８を使って、重複構造特定手段１３０の動作を説明する。
【００５４】
重複構造特定手段１３０は、関係構造記憶装置１２０に記憶されるデータ名一覧情報１０１０の中から、未処理のデータの種類（データ名）を１つ選択する（ステップＳ１）。例えば、重複構造特定手段１３０は、図２のデータ名一覧情報１０１０の中からデータの種類「３」を選択する。
【００５５】
次に、重複構造特定手段１３０は、ステップＳ１で選択したデータの種類を依存元とする未処理のデータの関係構造を１つ選択する（ステップＳ２）。例えば、ステップＳ１で選択されたデータの種類「３」を依存元とするデータの関係構造は、「１←２←３」がある。
【００５６】
次に、重複構造特定手段１３０は、ステップＳ２で選択したデータの関係構造と同じ関係構造を含むデータの関係構造の数を算出する（ステップＳ３）。例えば、重複構造特定手段１３０は、ステップＳ２で選択したデータの関係構造「１←２←３」を図７の関係構造数一覧情報１０３１〜１０３８の中で調べる。すると、関係構造数一覧情報１０３３の「１←２←３←４」の中に「１←２←３」が存在し、「１←２←３←４」に含まれる「１←２←３」の数は１個である。同様に、関係構造数一覧情報１０３４の「１←２←３←４」の中に「１←２←３」が存在し、「１←２←３」の数は２個である。関係構造数一覧情報１０３５の「１←２←３←４」の中に「１←２←３」が存在し、「１←２←３」の数は１個である。関係構造数一覧情報１０３６に「１←２←３」自身が存在し、その数は２個である。関係構造数一覧情報１０３７の「１←２←３←５」の中に「１←２←３」が存在し、「１←２←３」の数は３個である。関係構造数一覧情報１０３８の「１←２←３←５」の中に「１←２←３」が存在し、「１←２←３」の数は３個である。これらの数を合計すると「１←２←３」の数は１２個となる。
【００５７】
次に、重複構造特定手段１３０は、ステップＳ２で選択した全てのデータの関係構造に対してステップＳ３の処理を行ったか否かを判定する（ステップＳ４）。ステップＳ２で選択した全てのデータの関係構造に対して重複構造特定手段１３０がステップＳ３の処理を行ったと判定した場合（ステップＳ４のはい）、ステップＳ５へ進む。一方、重複構造特定手段１３０は、ステップＳ２で選択した全てのデータの関係構造に対してステップＳ３の処理がまだ行っていないと判定した場合（ステップＳ４のいいえ）、ステップＳ２の処理へ戻る。例えば、ステップＳ１の処理で選択されたデータの種類「３」を依存元とするデータの関係構造の種類は「１←２←３」のみである。よって、重複構造特定手段１３０は、ステップＳ２で選択した全てのデータの関係構造に対してステップＳ３の処理を行ったと判定し、ステップＳ５へ進む。
【００５８】
最後に、重複構造特定手段１３０は、全てのデータの種類に対してステップＳ３の処理を行ったか否かを判定する（ステップＳ５）。重複構造特定手段１３０は、全てのデータの種類に対してステップＳ３の処理を行ったと判定した場合（ステップＳ５のはい）、一連の処理を終了する。一方、重複構造特定手段１３０は、全てのデータの種類に対してステップＳ３の処理をまだ行っていないと判定した場合（ステップＳ５のいいえ）、ステップＳ１の処理へ戻る。例えば、図３のデータ名一覧情報１０１０を参照すると、重複構造特定手段１３０がステップＳ１で選択したデータの種類「３」以外にも未処理の他のデータの種類が「１」、「２」、「４」および「５」の４種類ある。したがって重複構造特定手段１３０は、ステップＳ１の処理へ戻り、他のデータの種類に対してステップＳ２からステップＳ４までの同様の処理を行う。
【００５９】
一連の処理が終了すると、重複構造特定手段１３０は、図８の重複構造数一覧情報１０５０を出力する。重複構造数一覧情報１０５０は、各データの種類とそのデータの種類を依存元とする関係構造が属する関係構造の種類とその関係構造の重複構造数とを対応付けた情報である。重複構造特定手段１３０は、重複構造数一覧情報１０５０を負担データ特定手段１４０へ渡す。
【００６０】
重複構造特定手段１３０が、関係構造記憶装置１２０に記憶される複数の時刻のデータの関係構造の種類と各種類に属するデータの関係構造の数とを使って、各データの関係構造の種類に属する関係構造の重複構造数を特定する処理の別の具体例を説明する。例えば、図６のステップＳ１の処理において重複構造特定手段１３０は、データの種類「４」を選択する。
【００６１】
次に、ステップＳ２の処理において重複構造特定手段１３０は、ステップＳ１で選択したデータの種類「４」を依存元とするデータの関係構造を、図７の関係構造数一覧情報１０３１〜１０３８の中から調べる。すると、データの種類「４」を依存元とするデータの関係構造は、「１←２←４」と、「１←２←３←４」との２種類があることが分かる。よって重複構造特定手段１３０は、その中から「１←２←４」を選択する。
【００６２】
次に、ステップＳ３の処理において、重複構造特定手段１３０は、ステップＳ２で選択したデータの関係構造「１←２←４」と同じ関係構造を持つデータの数をカウントする。すると、「１←２←４」は、図７の関係構造数一覧情報１０３２に２個と、関係構造数一覧情報１０３５に２個とがあることが分かる。
【００６３】
次に、ステップＳ４の処理において、ステップＳ２で選択されたデータの関係構造は、「１←２←４」と、「１←２←３←４」とがあることが分かる。よって重複構造特定手段１３０は、ステップＳ２へ戻り、ステップＳ３の処理において、データの関係構造「１←２←３←４」と同じ関係構造を持つデータの数をカウントする。以降の処理の手順は、これまでに述べた処理の手順と同様であるため、説明を省略する。
【００６４】
負担データ特定手段１４０は、重複構造特定手段１３０によって特定された複数時刻においていくつかのデータ間で重複する関係構造を持つデータの種類を使って、その種類に対応する関係構造の数の大きさの順位が所定の順位以上であるか否か判定する。そして負担データ特定手段１４０は、関係構造の数の大きさの順位が所定の順位以上であると判定した関係構造に対応付けられているデータの種類を負担データの種類と特定する。負担データ特定手段１４０が特定した負担データの種類は、出力装置２２０へ渡される。以下、図８を使って、負担データ特定手段１４０の動作を説明する。
【００６５】
負担データ特定手段１４０は、重複構造特定手段１３０によって特定された図８の重複構造数一覧情報１０５０を使って、データの関係構造の種類に対応付けられている数の大きさの順位が所定の順位以上であるか否か判定する。データの関係構造の種類に対応付けられている数とは、その種類に属する関係構造の重複構造数である。
【００６６】
そして負担データ特定手段１４０は、関係構造の種類に対応付けられている数の大きさの順位が所定の順位以上である関係構造の種類に対応付けられているデータの種類を負担データの種類と特定する。例えば、図８の重複構造数一覧情報１０５０を参照すると、データの関係構造の種類「１」は、その種類に対応付けられている数が「１７」で最多である。よって、負担データ特定手段１４０は、このデータの関係構造の種類「１」に対応付けられているデータの種類「１」を負担データの種類と特定し、出力装置２２０へ渡す。データの関係構造の種類に対応付けられているデータの種類とは、そのデータの関係構造の種類に属する関係構造に含まれるデータの種類のうちすべてのデータの種類の依存元となるデータの種類である。
【００６７】
負担データ特定手段１４０は、図８の重複構造数一覧情報１０５０における各データの関係構造の種類に対応付けられている数の順番に、負担データの種類と特定されるデータの種類を並べて出力装置２２０へ渡してもよい。また、負担データ特定手段１４０は、図８の重複構造数一覧情報１０５０におけるデータの関係構造の種類に属する関係構造間で重複する関係構造があれば、それらの種類に対応付けられている数の和を求めてもよい。
【００６８】
そして負担データ特定手段１４０は、データの種類毎に特定される前述の和またはそのデータの種類に対応付けられている数が最多であるデータの種類を負担データの種類としてもよい。例えば、図８の重複構造数一覧情報１０５０のデータの関係構造の種類の４行目「１←２←３」に対応付けられている数は「１２」である。一方、データの関係構造の種類「１←２←３」に属する関係構造「１←２←３」は、重複構造数一覧情報１０５０のデータの関係構造の種類の６行目「１←２←３←４」に属する関係構造「１←２←３←４」にも存在する。また、データの関係構造の種類「１←２←３」に属する関係構造「１←２←３」は、重複構造数一覧情報１０５０のデータの関係構造の種類の７行目「１←２←３←５」に属する関係構造「１←２←３←５」にも存在する。よって負担データ特定手段１４０は、これらの数の和「１２＋４＋６＝２２」を求める。そして負担データ特定手段１４０は、データの種類毎に特定される前述の和またはそのデータの種類に対応付けられている数が最多（５９）であるデータの種類（「１」）を負担データの種類と特定する。
【００６９】
また、図８の重複構造数一覧情報１０５０のデータの種類「４」のように、データの種類に複数のデータの関係構造の種類が対応付けられている場合がある。この場合、負担データ特定手段１４０は、それらの関係構造の種類にそれぞれ対応付けられている数の和（重複構造数一覧情報１０５０の５行目のデータの関係構造の種類に対応付けられている数「４」＋６行目のデータの関係構造の種類に対応付けられている数「４」＝「８」）を求める。そして負担データ特定手段１４０は、データの種類毎に特定される前述の和またはそのデータの種類に対応付けられている数が最多であるデータの種類を負担データの種類と特定してもよい。
【００７０】
なお、この場合においても、負担データ特定手段１４０は、データの種類毎に特定される前述の和またはそのデータの種類に対応付けられている数が最多の「５９」であるデータの種類「１」を負担データの種類と特定する。
【００７１】
次に、本発明の第１の実施の形態の効果について説明する。本実施の形態は、メモリに存在する複数の時刻のそれぞれにおけるデータの種類と、データの関係構造とを使って、同じデータの種類で、かつ、同じ関係構造を持つデータの複数時刻における数を特定する。すなわち、本実施の形態は、各データの関係構造の種類とそのデータの関係構造の種類に属する関係構造の重複構造数とを対応付けて特定する。そして本実施の形態は、各データの関係構造の種類の中でデータの関係構造の種類に対応付けられている数の大きさの順位が所定の順位以上であるデータの関係構造の種類に対応付けられているデータの種類を負担データの種類と特定する。これによって、ユーザは、ユーザ自身によって負担データの条件を正確、かつ、完全に定義しなくても、負担データを容易に特定できる。
【００７２】
［第２の実施の形態］
図９は、本発明の第２の実施の形態の構成例を示すブロック図である。第１の実施の形態と同様の構成要素については、図１と同一の符号を付して説明を省略する。第２の実施の形態の負担データ特定システムは、関係構造特定手段１１０と、関係構造記憶装置１２０と、重複構造特定手段１３０と、負担データ特定手段１４０と、残存時間特定手段１５０とを備える。
【００７３】
残存時間特定手段１５０は、関係構造記憶装置１２０から、複数の時刻のそれぞれにおける全てのデータの関係構造の種類と各種類に属する関係構造の数とを読み込み、各データの種類がメモリに存在し続けている時間を特定する。データの種類がメモリ上に存在し続けている時間の特定は、以下のように行われる。すなわち残存時間特定手段１５０は、ある時刻に存在したデータの種類が、後の時刻においても存在するか否かによってそのデータの種類がメモリ上に存在し続けているか否かを判定する。そして、残存時間特定手段１５０は、判定結果に基づいてデータの種類がメモリ上に存在し続けている時間（以下、残存時間とも称する）の特定を行う。
【００７４】
残存時間特定手段１５０は、例えば、プログラム（負担データ特定プログラム）によって動作するＣＰＵによって実現される。関係構造特定手段１１０と、重複構造特定手段１３０と、負担データ特定手段１４０と、残存時間特定手段１５０とが、同一のＣＰＵによって実現されてもよい。この場合、プログラムは、例えば、負担データ特定システム１００が備えるプログラム記憶装置（図示せず）に記憶される。ＣＰＵは、そのプログラムを読み込み、そのプログラムに従って、関係構造特定手段１１０と、重複構造特定手段１３０と、負担データ特定手段１４０と、残存時間特定手段１５０として動作すればよい。
【００７５】
また、前述のプログラムのコードを記録した記録媒体（または記憶媒体）が、負担データ特定システム１００に供給され、負担データ特定システム１００が記録媒体に格納されたプログラムのコードを読み出し実行してもよい。
【００７６】
次に、本実施の形態の動作について説明する。関係構造特定手段１１０が特定した各時刻におけるデータの種類と、データの関係構造の種類とを記憶する関係構造記憶装置１２０は、第１の実施の形態における関係構造記憶装置１２０と同様である。また各データの関係構造の種類に属するデータの関係構造の重複構造数を特定する重複構造特定手段１３０の動作は、第１の実施の形態における重複構造特定手段１３０の動作と同様である。
【００７７】
残存時間特定手段１５０は、関係構造記憶装置１２０に記憶される複数の時刻のそれぞれのデータの関係構造の種類と各種類に属する関係構造の数とを使って、各データの種類の残存時間を特定する。残存時間特定手段１５０が特定した、データの種類の残存時間は、負担データ特定手段１４０へ渡される。
【００７８】
図１０は、残存時間特定手段１５０が、各データの種類の残存時間を特定する動作の概要の一例を示すフローチャートである。また、図１１は、残存時間特定手段１５０が出力するデータの種類の残存時間の例を示す図である。以下、図１０、図１１、および図７を使って、残存時間特定手段１５０の動作を説明する。
【００７９】
残存時間特定手段１５０は、関係構造記憶装置１２０に記憶される複数の時刻の関係構造数一覧情報の中から、未処理の時刻の関係構造数一覧情報のうち最も古い時刻の関係構造数一覧情報を選択する（ステップＴ１）。例えば、図７の中で最も時刻が古い時刻１の関係構造数一覧情報１０３１を選択する。
【００８０】
次に、残存時間特定手段１５０は、ステップＴ１で選択した時刻の関係構造数一覧情報において、あるデータの種類が、各関係構造の種類に属するデータの関係構造に含まれるすべてのデータの種類の依存元となっている場合にそのデータの種類の数をカウントする（ステップＴ２）。例えば、図７の関係構造数一覧情報１０３１において、データの種類「１」がデータの関係構造「１」に含まれるデータの種類の中ですべてのデータの種類の依存元であるデータの種類に存在することが分かる。よって残存時間特定手段１５０は、データの種類「１」の数を「１」カウントアップする。なお、残存時間特定手段１５０は、各データの種類が各時刻で存在しているか否かを判定すればよいため、関係構造数一覧情報に含まれる各データの関係構造の種類に属するデータの関係構造の数を無視してよい。
【００８１】
次に、残存時間特定手段１５０は、全ての時刻の関係構造数一覧情報において、ステップＴ２の処理を行ったか否かを判定する（ステップＴ３）。残存時間特定手段１５０は、全ての時刻の関係構造数一覧情報において、ステップＴ２の処理を行ったと判定した場合（ステップＴ３のはい）、ステップＴ４の処理へ進む。一方、残存時間特定手段１５０は、全ての時刻の関係構造数一覧情報において、まだステップＴ２の処理を行っていないと判定した場合（ステップＴ３のいいえ）、ステップＴ１の処理へ戻る。
【００８２】
例えば、図７の関係構造数一覧情報は、ステップＴ２で処理したデータの関係構造の種類１０３１以外に、関係構造数一覧情報１０３２〜１０３８までの関係構造数一覧情報がある。したがって残存時間特定手段１５０は、ステップＴ３の「いいえ」のフローにしたがって、ステップＴ１の処理へ戻る。そして、残存時間特定手段１５０は、ステップＴ１の処理において、図７の関係構造数一覧情報１０３２を選択し、ステップＴ２の処理へ進む。このようにして、残存時間特定手段１５０は、図７の関係構造数一覧情報の全てに対して、各時刻におけるデータの種類の数をカウントする。そして、ステップＴ２で処理した関係構造数一覧情報１０３１以外に、関係構造数一覧情報がない場合、残存時間特定手段１５０は、ステップＴ３の「はい」のフローにしたがって、ステップＴ４の処理へ進む。
【００８３】
最後に、残存時間特定手段１５０は、ステップＴ２の処理で各時刻におけるデータの種類の数をカウントした結果を元にして、各データの種類が存在した時間を算出して（ステップＴ４）、一連の処理を終了する。例えば、図７において、データの種類「１」が存在した時刻を算出する場合、データの種類「１」が存在した時刻は、時刻１（関係構造数一覧情報１０３１）と、時刻２（関係構造数一覧情報１０３２）と、時刻３（関係構造数一覧情報１０３３）と、時刻４（関係構造数一覧情報１０３４）と、時刻５（関係構造数一覧情報１０３５）と、時刻６（関係構造数一覧情報１０３６）と、時刻７（関係構造数一覧情報１０３７）と、時刻８（関係構造数一覧情報１０３８）とである。したがって、残存時間特定手段１５０は、データの種類「１」の残存時間を「８」と特定する。同様に、データ種類「２」の残存時間は「７」、データの種類「３」の残存時間は「６」、データの種類「４」の残存時間は「４」、データの種類「５」の残存時間は「２」となる。
【００８４】
残存時間特定手段１５０は、全てのデータの種類に対して残存時間を特定した後、一連の処理を終了する。一連の処理が終了すると、残存時間特定手段１５０は、図１１の残存時間一覧情報１０４０のような、各データの種類に対する残存時間を一覧にした情報を出力する。残存時間特定手段１５０は、各データの種類に対する残存時間を負担データ特定手段１４０へ渡す。
【００８５】
ここで、残存時間特定手段１５０と、重複構造特定手段１３０とについて、重複構造特定手段１３０によって先に処理がなされた後で残存時間特定手段１５０によって処理がなされてもよい。一方、残存時間特定手段１５０によって先に処理がなされた後で重複構造特定手段１３０によって処理がなされてもよい。または、残存時間特定手段１５０と、重複構造特定手段１３０とによって並行に処理がなされてもよい。
【００８６】
負担データ特定手段１４０は、重複構造特定手段１３０によって特定された複数時刻においていくつかのデータ間で重複する関係構造を持つデータの種類を読み出す。そして負担データ特定手段１４０は、残存時間特定手段１５０によって特定された各データの種類の残存時間を読み出す。そして負担データ特定手段１４０は、それらの情報を使って、次の二つの条件を満たすデータの種類を負担データの種類と特定する。第一の条件は、データの関係構造の種類に対応付けられている数の大きさの順位が所定の順位以上である関係構造の種類に対応付けられているデータの種類であることである。第二の条件は、残存時間が所定時間より長いデータの種類であることである。負担データ特定手段１４０が特定した負担データの種類は、出力装置２２０へ渡される。
【００８７】
負担データ特定手段１４０は、例えば、図８の重複構造数一覧情報１０５０と、図１１の残存時間一覧情報１０４０とを使って、負担データの種類を特定する。ここで、データの種類「１」は、重複構造数一覧情報１０５０の中でデータの関係構造の種類に対応付けられている数が最多である。そしてデータの種類「１」は、残存時間一覧情報１０４０の中で残存時間が最長である。よって負担データ特定手段１４０は、データの種類「１」を負担データの種類と特定する。ここで、負担データ特定手段１４０は、重複構造数一覧情報１０５０と残存時間一覧情報１０４０の各値の大きい順に負担データの種類と特定されるデータの種類を並べた結果を出力装置２２０へ渡してもよい。
【００８８】
出力装置２２０は、負担データ特定手段１４０によって特定された負担データの種類を出力する。
【００８９】
次に、本発明の第２の実施の形態の効果について説明する。本実施の形態は、メモリに存在する複数の時刻のそれぞれにおけるデータの種類と、データの関係構造とを使って、同じデータの種類で、かつ、同じ関係構造を持つデータの複数時刻における数を特定する。すなわち、本実施の形態は、各データの関係構造の種類とそのデータの関係構造の種類に属する関係構造の重複構造数とを対応付けて特定する。そして本実施の形態は、各データの種類の残存時間を特定し、同じ関係構造を持つデータの数と、データの種類の残存時間とを使って、次の二つの条件を満たすデータの種類を負担データの種類と特定する。第一の条件は、データの関係構造の種類に対応付けられている数の大きさの順位が所定の順位以上である関係構造の種類に対応付けられているデータの種類であることである。第二の条件は、残存時間が所定時間より長いデータの種類であることである。これによって、ユーザは、ユーザ自身によって負担データの条件を正確、かつ、完全に定義しなくても、負担データを正確に特定できる。
【００９０】
［第３の実施の形態］
図１２は、本発明の第３の実施の形態の構成例を示すブロック図である。第１、および第２の実施の形態と同様の構成要素については、図１、および図９と同一の符号を付して説明を省略する。第３の実施の形態の負担データ特定システム１０２は、関係構造特定手段１１０と、関係構造記憶装置１２０と、重複構造特定手段１３０と、残存時間特定手段１５０と、ランキング手段１６０とを備える。
【００９１】
ランキング手段１６０は、重複構造特定手段１３０から、各データの関係構造の種類に属する関係構造の重複構造数を読み込む。またランキング手段１６０は、残存時間特定手段１５０から、各データの種類の残存時間を読み込む。そしてランキング手段１６０は、読み込んだ各情報に基づいて各データの種類が負担データの種類である可能性の高さを算出する。あるデータの種類が負担データの種類である可能性の高さは、以下にあげる二つの値の積により求められる。積を求めるための第一の値は、対象のデータの種類の残存時間である。積を求めるための第二の値は、そのデータの種類に対応付けられているデータの関係構造の種類に属するデータの関係構造の重複構造数である。
【００９２】
関係構造特定手段１１０と、重複構造特定手段１３０と、残存時間特定手段１５０と、ランキング手段１６０とは、例えば、プログラム（負担データ特定プログラム）によって動作するＣＰＵによって実現される。関係構造特定手段１１０と、重複構造特定手段１３０と、残存時間特定手段１５０と、ランキング手段１６０とが、同一のＣＰＵによって実現されてもよい。この場合、プログラムは、例えば、負担データ特定システム１００が備えるプログラム記憶装置（図示せず）に記憶される。ＣＰＵは、そのプログラムを読み込み、そのプログラムにしたがって、関係構造特定手段１１０と、重複構造特定手段１３０と、残存時間特定手段１５０と、ランキング手段１６０として動作すればよい。
【００９３】
また、前述のプログラムのコードを記録した記録媒体（または記憶媒体）が、負担データ特定システム１００に供給され、負担データ特定システム１００が記録媒体に格納されたプログラムのコードを読み出し実行してもよい。
【００９４】
次に、本実施の形態の動作について説明する。関係構造特定手段１１０が特定した各時刻におけるデータの種類と、データの関係構造の種類とを記憶する関係構造記憶装置１２０は、第２の実施の形態における関係構造記憶装置１２０と同様である。また各データの関係構造の種類に属するデータの関係構造の重複構造数を特定する重複構造特定手段１３０の動作は、第２の実施の形態における重複構造特定手段１３０の動作と同様である。また各データの種類の残存時間を特定する残存時間特定手段１５０の動作は、第２の実施の形態における残存時間特定手段１５０の動作と同様である。
【００９５】
ランキング手段１６０は、重複構造特定手段１３０が特定する各データの関係構造の種類に属するデータの関係構造の重複構造数を読み出す。さらにランキング手段１６０は、残存時間特定手段１５０が特定するデータの種類の残存時間を読み出す。そしてランキング手段１６０は、読み出した各情報に基づいて各データの種類が負担データの種類である可能性の高さを算出する。ランキング手段１６０が算出した各データの種類の負担データの種類である可能性の高さは、出力装置２２０へ渡される。
【００９６】
図１３は、ランキング手段１６０が各データの種類の負担データの種類である可能性の高さを算出した結果の情報の一例を示す図である。図１３の負担データ算出結果１０７０は、図８の重複構造数一覧情報１０５０と、図１１の残存時間一覧情報１０４０とが一つの情報として対応付けられ、さらにランキング手段１６０の算出結果が加えられた情報である。また図１４は、ランキング手段１６０が、各データの関係構造の種類が負担データの種類である可能性の高さを算出した結果を使ってランキングした結果の例を示す図である。以下、図１３、および図１４を使って、ランキング手段１６０の動作を説明する。
【００９７】
ランキング手段１６０は、各データの種類毎に、各種類に対応付けられているデータの関係構造の種類に属する関係構造の重複構造数と、そのデータの種類の残存時間との積を算出する。図１３の負担データ算出結果１０７０の「（１）×（２）」列が算出結果である。例えば、データの種類「１」の積の値は、（１）残存時間の「８」と、（２）数「１７」との積によって「１３６」となる。同様にして、ランキング手段１６０は、全てのデータの種類、およびデータの関係構造に対する積の値を算出する。
【００９８】
ここで、ランキング手段１６０は、負担データの種類の絞り込みをしてもよい。例えば、ランキング手段１６０は、図１３の負担データ算出結果１０７０の「（１）×（２）」列の値が「０」となるデータの関係構造の種類を、除外するという絞り込みをおこなってもよい。または負担データ算出結果１０７０の「（１）×（２）」列の値に対してユーザ等があらかじめ閾値を設定しておき、ランキング手段１６０は、それを上回る、または下回るデータを除外するという絞り込みなどを行ってもよい。
【００９９】
なお、本明細書の図１３の負担データ算出結果１０７０には、「（１）×（２）」列の値が「０」となるデータの関係構造の種類が存在しない。そして、ランキング手段１６０は、絞り込みによって除外されたデータの種類、およびデータの関係構造の種類を、ユーザへ出力させないことで、ユーザへの表示をより限定できる。
【０１００】
図１４のランキング結果１０８０は、ランキング手段１６０が図１３の負担データ算出結果１０７０を使って、各データの関係構造の種類を、それぞれに対応付けられている負担データの種類である可能性の高い順に基づいて並べた結果である。図１４のランキング結果１０８０は、データの関係構造の種類毎に並べられている。ランキング結果１０８０を参照すると、負担データの種類の可能性が最も高いデータの関係構造の種類は、「１」となる。
【０１０１】
ここで、ランキング手段１６０は、データの種類毎にランキングしてもよい。図１５は、ランキング手段１６０が、各データの種類が負担データの種類である可能性の高さを算出した結果を使ってランキングした結果の一例を示す図である。例えば、図１５のランキング結果１０８１は、各データの種類を、それぞれに対応付けられている負担データの種類である可能性の高い順に基づいてランキング手段１６０が並べた結果である。この場合、図１３の負担データ算出結果１０７０のデータの種類「４」に対応するデータの関係構造の種類として「１←２←４」と、「１←２←３←４」との２種類がある。よって、それぞれのデータの関係構造の種類に対する積の値の和が、データの種類に対する負担データの種類の可能性の高さとなる。
【０１０２】
例えば、図１３の負担データ算出結果１０７０のデータの種類「４」の負担データの種類の可能性の高さは、データの関係構造の種類「１←２←４」の積の値「１６」と、データの関係構造の種類「１←２←３←４」の積の値「１６」との和である「３２」としてもよい。データの関係構造の種類「１←２←４」の積の値「１６」は図１３の対応する各欄に記載された値（１）「４」×（２）「４」により算出される。データの関係構造の種類「１←２←３←４」の積の値「１６」は、図１３の対応する各欄に記載された値（１）「４」×（２）「４」により算出される。この場合ランキング手段１６０は、この「３２」を負担データの種類の可能性の高さとして、各データの種類を、それぞれに対応付けられている負担データの種類である可能性の高い順に並べる。
【０１０３】
なお、ランキング手段１６０が生成するランキングは、図１３および図１４または図１５に示されるように全てのデータの種類、またはデータの関係構造の種類に対して、負担データの種類である可能性の高い順に並べてもよい。またはユーザ等があらかじめ閾値を設定しておき、ランキング手段１６０は、それを上回る、または下回るデータを除外した結果のみを並べてもよい。
【０１０４】
ここで、残存時間特定手段１５０と、重複構造特定手段１３０とについて、重複構造特定手段１３０によって先に処理がなされた後で残存時間特定手段１５０によって処理がなされてもよい。一方、残存時間特定手段１５０によって先に処理がなされた後で重複構造特定手段１３０によって処理がなされてもよい。または、残存時間特定手段１５０と、重複構造特定手段１３０とによって並行に処理がなされてもよい。
【０１０５】
また、ランキング手段１６０は、負担データ特定手段１４０に含まれてもよい（本説明では、ランキング手段１６０を用いてランキングの処理を行うが、負担データ特定手段１４０がランキング手段１６０に含まれてもよい）。
【０１０６】
また、ランキング手段１６０は、重複構造特定手段１３０の出力結果と、残存時間特定手段１５０の出力結果とが、ランキング手段１６０に入力された時に処理を開始してもよい。一方、ランキング手段１６０は、以下のように処理を行ってもよい。すなわち重複構造特定手段１３０の出力結果が、ランキング手段１６０に入力された時に、ランキング手段１６０は、重複構造特定手段１３０の出力結果の数をユーザが指定する任意の閾値以上、または以下となるデータの種類のみに絞り込む。その後、残存時間特定手段１５０の出力結果がランキング手段１６０へ渡された際に、ランキング手段１６０は、絞り込んだデータに対してのみランキングの処理を行ってもよい。
【０１０７】
次に、本発明の第３の実施の形態の効果について説明する。本実施の形態では、メモリに存在する複数の時刻のそれぞれにおけるデータの種類と、データの関係構造とを使って、各データの関係構造の種類に属する関係構造の重複構造数を特定する。そして本実施の形態は、各データの種類の残存時間を特定する。そして本実施の形態は、同じ関係構造を持つデータの数と、データの残存時間とを使って、負担データの種類である可能性の高さを算出して、その結果を高い順にランキングする。これによって、ユーザは、負担データの確認順序を示唆されるので、効率良く負担データの確認を行うことができる。
【０１０８】
［第４の実施の形態］
図１６は、本発明の第４の実施の形態の構成例を示すブロック図である。第１、第２、および第３の実施の形態と同様の構成要素については、図１、図９、および図１２と同一の符号を付して説明を省略する。第４の実施の形態の負担データ特定システム１０３は、関係構造特定手段１１０と、関係構造記憶装置１２０と、重複構造特定手段１３０と、残存時間特定手段１５０と、ランキング手段１６０と、構造深さ特定手段１７０とを備える。
【０１０９】
構造深さ特定手段１７０は、重複構造特定手段１３０から、全てのデータの関係構造の種類を読み込み、各種類に属するデータの関係構造の階層の深さを特定する。データの関係構造の階層の深さとは、あるデータの種類と依存関係のある末端のデータの種類までのホップ数である。例えば、データの種類Ｃが「データの種類Ａ←データの種類Ｂ←データの種類Ｃ」という関係構造を持つ場合、データの種類Ｃの関係構造の階層の深さは、２となる。
【０１１０】
次に、本実施の形態の動作について説明する。関係構造特定手段１１０が特定した各時刻におけるデータの種類と、データの関係構造の種類とを記憶する関係構造記憶装置１２０は、第３の実施の形態における関係構造記憶装置１２０と同様である。また関係構造記憶装置１２０に記憶される各情報を使って、各データの関係構造の種類に属するデータの関係構造の重複構造数を特定する重複構造特定手段１３０の動作は、第３の実施の形態における重複構造特定手段１３０の動作と同様である。
【０１１１】
また各データの種類の残存時間を特定する残存時間特定手段１５０の動作は、第３の実施の形態における残存時間特定手段１５０の動作と同様である。またデータの種類毎に負担データの種類である可能性の高さを算出して、その結果を高い順にランキングするランキング手段１６０の動作は、第３の実施の形態におけるランキング手段１６０の動作と同様である。
【０１１２】
構造深さ特定手段１７０は、重複構造特定手段１３０が特定する複数の時刻のデータの関係構造の種類を使って、データの関係構造の階層の深さを特定する。構造深さ特定手段１７０が特定したデータの関係構造の階層の深さは、ランキング手段１６０へ渡される。ここで、構造深さ特定手段１７０は、関係構造記憶装置１２０に記憶される複数の時刻のそれぞれの関係構造数一覧情報を使って、データの関係構造の階層の深さを特定してもよい。
【０１１３】
図１７は、構造深さ特定手段１７０がデータの関係構造の階層の深さを特定する動作の概要の一例を示すフローチャートである。また、図１８は、構造深さ特定手段１７０が出力するデータの関係構造の階層の深さの例を示す図である。以下、図１７、図１８、および図７を使って、構造深さ特定手段１７０の動作を説明する。
【０１１４】
構造深さ特定手段１７０は、重複構造特定手段１３０が出力する重複構造数一覧情報１０５０の中から、未処理のデータの関係構造の種類を１つ選択する（ステップＵ１）。例えば、構造深さ特定手段１７０は、図５の重複構造数一覧情報１０５０の中からデータの関係構造の種類「１」を選択する。
【０１１５】
次に、構造深さ特定手段１７０は、ステップＵ１で選択したデータの関係構造の種類に属する関係構造の階層の深さを算出する（ステップＵ２）。例えば、図５のデータの関係構造の種類「１」に属する関係構造「１」に含まれるデータの種類「１」は、他に依存関係にあるデータの種類を含んでいない。したがってデータの関係構造「１」の階層の深さは「０」と算出される。
【０１１６】
次に、構造深さ特定手段１７０は、重複構造数一覧情報１０５０に含まれる全てのデータの関係構造の種類に対してステップＵ２の処理を行ったか否かを判定する（ステップＵ３）。構造深さ特定手段１７０は、全てのデータの関係構造の種類に対してステップＵ２の処理を行った場合（ステップＵ３のはい）、一連の処理を終了する。一方、構造深さ特定手段１７０は、全てのデータの関係構造の種類に対して、まだステップＵ２の処理を行っていないと判定した場合（ステップＵ３のいいえ）、ステップＵ１の処理へ戻る。
【０１１７】
例えば、図５の重複構造数一覧情報１０５０には、ステップＵ１で選択されたデータの関係構造の種類「１」の他にまだ未処理のデータの関係構造の種類が残っている。よって構造深さ特定手段１７０は、ステップＵ１へ戻り、まだ未処理のデータの関係構造の種類に対して同様の処理を行う。例えば、構造深さ特定手段１７０は、ステップＵ１でデータの関係構造の種類「１←２」を選択した場合、関係構造の階層の深さを、「１」と算出する。
【０１１８】
階層の深さの算出方法は、データの関係構造の種類に属する関係構造おいて、「データの種類数−１」として算出される方法であってもよいし、データの関係構造の種類に属する関係構造の中の「←」の数として算出される方法であってもよい。このような算出方法で構造深さ特定手段１７０は、データの関係構造の階層の深さを算出する。例えば構造深さ特定手段１７０は、データの関係構造の種類「１←２←３」に属する関係構造「１←２←３」の階層の深さを「２」と算出する。例えば構造深さ特定手段１７０は、データの関係構造の種類「１←２←４」に属する関係構造「１←２←４」の階層の深さを「２」と算出する。例えば構造深さ特定手段１７０は、データの関係構造の種類「１←２←３←４」に属する関係構造「１←２←３←４」の階層の深さを「３」と算出する。例えば構造深さ特定手段１７０は、データの関係構造の種類「１←２←３←５」に属する関係構造「１←２←３←５」の階層の深さを「３」と算出する。
【０１１９】
一連の処理が終了すると、構造深さ特定手段１７０は、図１８の階層一覧情報１０６０を出力する。階層一覧情報１０６０は、各データの種類とそのデータの種類に対応付けられているデータの関係構造の種類とそのデータの関係構造の種類に属する関係構造に対する階層の深さとを対応付けた情報である。構造深さ特定手段１７０は、この階層一覧情報をランキング手段１６０へ渡す。
【０１２０】
ランキング手段１６０は、重複構造特定手段１３０が特定する各データの関係構造の種類に属する関係構造の重複構造数を読み出す。またランキング手段１６０は、残存時間特定手段１５０が特定するデータの種類の残存時間を読み出す。さらにランキング手段１６０は、構造深さ特定手段１７０が特定するデータの関係構造の階層の深さを読み出す。ランキング手段１６０は、読み出した各情報を使って、各データの種類が負担データの種類である可能性の高さを算出する。
【０１２１】
ランキング手段１６０は、各データの関係構造の種類に属する関係構造の重複構造数と、データの種類の残存時間との積の値を使ってデータの絞り込みを行う。その後、ランキング手段１６０は、その積の値と、対応するデータの関係構造の階層の深さとの積を算出する。ランキング手段１６０が算出した各データの種類の負担データの種類である可能性の高さは、出力装置２２０へ渡される。
【０１２２】
図１９は、ランキング手段１６０が各データの種類の負担データの種類である可能性の高さを算出した結果の情報の一例を示す図である。図１９の負担データ算出結果１０７１は、図８の重複構造数一覧情報１０５０と、図１１の残存時間一覧情報１０４０と、図１８の階層一覧情報１０６０とが１つに対応付けられ、さらにランキング手段１６０が出力する算出結果が加えられた情報である。以下、図１９を使って、ランキング手段１６０の動作を説明する。
【０１２３】
ランキング手段１６０が、各データの関係構造の種類に属する関係構造の重複構造数と、データの種類の残存時間との積を算出する動作は、第３の実施の形態の動作と同様である。これに加えて、ランキング手段１６０は、算出した積の値と、該当するデータの関係構造の階層の深さとの積を算出する。例えば、図１９の負担データ算出結果１０７１の「（１）×（２）×（３）」列が二回の積による算出結果である。例えば、データの種類「１」に対応付けられている数とデータの種類「１」の残存時間との積の値は、「（１）×（２）」の値である「１３６」である。ランキング手段１６０は、この値「１３６」と「（３）階層の深さ」の値である「０」との積を「０」と算出する。同様にして、ランキング手段１６０は、全てのデータの種類、およびデータの関係構造の種類に対する積の値を算出し、その結果を負担データの種類の可能性の高さとする。
【０１２４】
ここで、ランキング手段１６０は、各データの関係構造の種類に属する関係構造の重複構造数と、データの種類の残存時間との積の値を算出した後の絞り込み処理を行わずに、以下の処理を実行してもよい。すなわちランキング手段１６０は、３つの値の積を直接算出してもよい。３つの値のうちの第一の値は、各データの関係構造の種類に属する関係構造の重複構造数である。３つの値のうちの第二の値は、データの種類の残存時間である。そして３つの値のうちの第三の値は、そのデータの種類に対応付けられているデータの関係構造の階層の深さである。そしてランキング手段１６０は、その算出結果をそのデータの種類に対する負担データの種類の可能性の高さとしてもよい。
【０１２５】
図２０は、ランキング手段１６０が、各データの関係構造の種類が負担データの種類である可能性の高さを算出した結果を使ってランキングした結果の一例を示す図である。図２０のランキング結果１０８２は、ランキング手段１６０が図１９の負担データ算出結果１０７１を使って、各データの関係構造の種類を、負担データの種類である可能性の高い順に並べた結果である。図２０のランキング結果１０８２は、データの関係構造の種類毎に並べられており、負担データの種類の可能性が最も高いデータの関係構造の種類は、「１←２←３」となる。
【０１２６】
ここで、ランキング手段１６０は、データの種類毎にランキングしてもよい。図２１は、ランキング手段１６０が、各データの種類が負担データの種類である可能性の高さを算出した結果を使ってランキングした結果の一例を示す図である。例えば、図２１のランキング結果１０８３は、データの種類を、そのデータの種類が負担データの種類である可能性の高さの順に並べた結果である。この場合、図１９の負担データ算出結果１０７１のデータの種類「４」に対応するデータの関係構造の種類が「１←２←４」と、「１←２←３←４」との２種類ある。よってランキング手段１６０は、それぞれのデータの関係構造の種類に対する積の値の和を、データの種類に対する負担データの種類の可能性の高さとする。
【０１２７】
例えば、図１９の負担データ算出結果１０７１のデータの種類「４」の負担データの種類の可能性の高さは、以下のように算出される。すなわちデータの関係構造の種類「１←２←４」の積の値「３２」と、データの関係構造の種類「１←２←３←４」の積の値「４８」との和である「８０」が、負担データの種類の可能性の高さと算出される。データの関係構造の種類「１←２←４」の積の値「３２」は、図１９の対応する各欄の値の積（１）「４」×（２）「４」×（３）「２」により算出される。データの関係構造の種類「１←２←３←４」の積の値「４８」は、図１９の対応する各欄の値の積（１）「４」×（２）「４」×（３）「３」により算出される。
【０１２８】
そしてランキング手段１６０は、データの種類を、前述の算出方法により求められた負担データの種類である可能性の高さの順に並べる。なお、ランキング手段１６０のランキングは、全てのデータの種類、またはデータの関係構造の種類に対して、負担データの種類である可能性の高い順に並べてもよい。またランキング手段１６０のランキングは、ユーザ等があらかじめ閾値を設定しておき、ランキング手段１６０がそれを上回る、または下回るデータを除外した結果のみを並べてもよい。
【０１２９】
また、ランキング手段１６０は、重複構造特定手段１３０の出力結果と、残存時間特定手段１５０の出力結果と、構造深さ特定手段１７０の出力結果とが、ランキング手段１６０に入力された時に処理を開始してもよい。一方、ランキング手段１６０は、以下のように処理を行ってもよい。すなわち重複構造特定手段１３０の出力結果と残存時間特定手段１５０の出力結果とが、ランキング手段１６０に入力された時に、ランキング手段１６０が重複構造特定手段１３０の出力結果と、残存時間特定手段１５０の出力結果との積を算出して絞り込みを行う。その後構造深さ特定手段１７０が絞り込みの対象となったデータ以外のデータの関係構造の階層の深さを算出して、その結果をランキング手段１６０へ渡し、ランキング手段１６０は、受け取った情報に基づきランキングの処理を行ってもよい。
【０１３０】
次に、本発明の第４の実施の形態の効果について説明する。本実施の形態では、メモリに存在する複数の時刻のそれぞれにおけるデータの種類と、データの関係構造とを使って、各データの関係構造の種類に属する関係構造の重複構造数を特定する。また本実施の形態は、各データの種類の残存時間を特定する。そして本実施の形態は、データの関係構造の階層の深さを特定する。そして本実施の形態は、各データの関係構造の種類に属する関係構造の重複構造数と、データの残存時間と、データの関係構造の階層の深さとを使って、負担データの種類である可能性の高さを算出する。そして本実施の形態は、その算出結果を負担データの種類である可能性の高さの高い順にランキングする。これによって、ユーザは、データの関係構造の階層が深いデータほどメモリの占有量が大きい（データをメモリ上から解放できずに残っている）という観点で、最もメモリを占有しているデータを容易に特定しやすくなる。
【０１３１】
［第５の実施の形態］
図２２は、本発明の第５の実施の形態の構成例を示すブロック図である。第１、第２、第３、および第４の実施の形態と同様の構成要素については、図１、図９、図１２、および図１６と同一の符号を付して説明を省略する。第５の実施の形態の負担データ特定システム１０４は、関係構造特定手段１１０と、関係構造記憶装置１２０と、重複構造特定手段１３０と、残存時間特定手段１５０と、ランキング手段１６０と、構造深さ特定手段１７０と、絞り込み手段３１０と、データ生成手順記憶装置３２０とを備える。
【０１３２】
絞り込み手段３１０は、ランキング手段１６０によってランキングされたデータの種類をユーザへ表示する。絞り込み手段３１０は、このランキングされたデータを表示する際に、各データの種類が負担データの種類ではないことを示す情報をユーザに入力させるためのダイアログを表示させる。ユーザは、絞り込み手段３１０が表示させるデータの種類のランキング結果を見て、データの種類が負担データの種類か否かを確認する。そしてユーザは、負担データの種類ではない場合、そのデータの種類が負担データの種類ではないことを示す情報を、前述のダイアログを介して入力する。
【０１３３】
データ生成手順記憶装置３２０は、あるデータの種類と、そのデータの種類がメモリ上に生成されることに伴い必然的に生成される（依存関係になる）他のデータの種類とを対応付けて記憶する。必然的に生成される（依存関係になる）他のデータとは、例えばＪａｖａ（登録商標）の場合、『ＨａｓｈＭａｐクラスのデータが生成されると、ＨａｓｈＭａｐ＄Ｅｎｔｒｙクラスのデータと、ＨａｓｈＭａｐ＄Ｅｎｔｒｙ［］データ（配列）とが必ず生成される』、などの関係における、ＨａｓｈＭａｐ＄ＥｎｔｒｙクラスのデータやＨａｓｈＭａｐ＄Ｅｎｔｒｙ［］データを指す。データ生成手順記憶装置３２０に記憶される情報は、負担データの種類を特定する対象となるアプリケーションで用いられているプログラミング言語に応じて作成される。例えば、Ｊａｖａ（登録商標）の場合、データ生成手順記憶装置３２０に記憶される情報は、ＪａｖａＡＰＩ等を用いて作成される。
【０１３４】
絞り込み手段３１０は、例えば、プログラム（負担データ特定プログラム）によって動作するＣＰＵによって実現される。関係構造特定手段１１０と、重複構造特定手段１３０と、残存時間特定手段１５０と、ランキング手段１６０と、構造深さ特定手段１７０と、絞り込み手段３１０とが、同一のＣＰＵによって実現されてもよい。この場合、プログラムは、例えば、負担データ特定システム１００が備えるプログラム記憶装置（図示せず）に記憶される。ＣＰＵは、そのプログラムを読み込み、そのプログラムに従って、関係構造特定手段１１０と、重複構造特定手段１３０と、残存時間特定手段１５０と、ランキング手段１６０と、構造深さ特定手段１７０と、絞り込み手段３１０として動作すればよい。
【０１３５】
また、前述のプログラムのコードを記録した記録媒体（または記憶媒体）が、負担データ特定システム１００に供給され、負担データ特定システム１００が記録媒体に格納されたプログラムのコードを読み出し実行してもよい。
【０１３６】
データ生成手順記憶装置３２０は、例えば、ハードディスクのような記憶装置によって実現される。
【０１３７】
次に、本実施の形態の動作について説明する。関係構造特定手段１１０が特定した各時刻におけるデータの種類と、データの関係構造の種類とを記憶する関係構造記憶装置１２０は、第４の実施の形態における関係構造記憶装置１２０と同様である。各データの関係構造の種類に属するデータの関係構造の重複構造数を特定する重複構造特定手段１３０の動作は、第４の実施の形態における重複構造特定手段１３０の動作と同様である。
【０１３８】
また各データの種類の残存時間を特定する残存時間特定手段１５０の動作は、第４の実施の形態における残存時間特定手段１５０の動作と同様である。データの関係構造の階層の深さを特定する構造深さ特定手段１７０の動作は、第４の実施の形態における構造深さ特定手段１７０の動作と同様である。負担データである可能性の高さを算出して、その結果を高い順にランキングするランキング手段１６０の動作は、第４の実施の形態におけるランキング手段１６０の動作と同様である。
【０１３９】
絞り込み手段３１０は、ランキング手段１６０によってランキングされたデータの種類をユーザへ表示する。絞り込み手段３１０がユーザへ表示するランキング結果は、例えば、図１４のランキング結果１０８０と、ランキング結果１０８１とでもよいし、図２０のランキング結果１０８２と、図２１のランキング結果１０８３とでもよい。絞り込み手段３１０は、このランキングされたデータを表示する際に、各データの種類が負担データの種類ではないことを示す情報をユーザに入力させるためのダイアログを表示させる。ユーザは、これらのようなランキング結果を見て、データの種類が負担データの種類か否かを確認する。そしてユーザは、負担データの種類ではない場合、そのデータの種類が負担データの種類ではないことを示す情報を、前述のダイアログを介して入力する。
【０１４０】
図２３、図２４、図２５および図２６は、絞り込み手段３１０がユーザへ表示するダイアログの一例を示す図である。例えば、絞り込み手段３１０が図２０のランキング結果１０８３をダイアログで表示する場合、図２３のランキングダイアログ１０９０のような情報を表示させる。ユーザは、ランキングダイアログ１０９０を見て、各データの種類が負担データの種類か否かを確認する。そしてユーザは、負担データの種類ではない場合、そのデータの種類が負担データではないことを、ランキングダイアログ１０９０を通じて、絞り込み手段３１０へ伝える。処理の詳細は、後述する。
【０１４１】
データ生成手順記憶装置３２０は、データの種類と、そのデータの種類がメモリ上に生成されることに伴い、必然的に生成される（依存関係になる）他のデータの種類とを対応付けて記憶する。図２７は、データ生成手順記憶装置３２０が記憶するデータの生成手順情報の一例を示す図である。図２７のデータ生成手順情報１１００は、データの種類と、そのデータの種類が生成される時に必然的に生成される他のデータの種類とを対応付けた情報である。
【０１４２】
例えば、図２７を参照すると、図２７のデータ生成手順情報１１００の２行目にあるデータの種類「１」が生成される時には、必然的に生成される他のデータの種類はないことが分かる。また、データ生成手順情報１１００の４行目にあるデータの種類「３」が生成される時には、必然的に生成される他のデータの種類として、まずデータの種類「４」があることが分かる。そしてそのデータの種類「４」が生成されることでさらに必然的に生成される他のデータの種類としてデータの種類「５」があることが分かる。
【０１４３】
図２７のデータ生成手順情報１１００には記載されていないが、１つのデータの種類が生成されることで、必然的に複数の他のデータの種類が生成される場合もある。その場合、複数のデータの種類に対して必然的に生成される全てのデータの種類が対応付けられてデータ生成手順記憶装置３２０に記憶されてもよい。
【０１４４】
図２８は、絞り込み手段３１０がユーザへランキングされたデータの種類を絞り込む処理の動作の概要の一例を示すフローチャートである。以下、図２３、図２４、図２５、図２６、図２７、および図２８を使って、絞り込み手段３１０の動作を説明する。
【０１４５】
絞り込み手段３１０は、まず、ランキング手段１６０が出力する負担データの種類の可能性の高い順に並んだデータの種類をユーザへ表示し、負担データの種類に対するユーザの判定の入力を待つ（ステップＶ１）。例えば、絞り込み手段３１０は、図２３のランキングダイアログ１０９０をユーザへ表示する。
【０１４６】
次に、ユーザによって入力される情報の中に負担データの種類ではないデータのチェックがあるか否かを判定する（ステップＶ２）。絞り込み手段３１０は、ユーザによって入力された情報の中に不要ではないデータのチェックがあると判定した場合（ステップＶ２のはい）、ステップＶ３の処理へ進む。一方、絞り込み手段３１０は、ユーザによって入力された情報の中に不要ではないデータのチェックがないと判定した場合（ステップＶ２のいいえ）、一連の処理を終了する。例えば、ユーザが図２３のランキングダイアログ１０９０に表示される負担データの種類のランキングを見て、ｒａｎｋ１．のデータの種類「３」が実際には負担データの種類ではないと判断する。そしてユーザは、ｒａｎｋ１．という表記の左に表示されているチェックボックスにチェックを入れた場合（図２３のランキングダイアログ１０９０では、黒色四角（■）で表示）、ステップＶ３の処理へ進む。
【０１４７】
次に、絞り込み手段３１０は、ユーザがチェックしたデータ毎に、そのデータの種類が生成されることによって必然的に生成されるデータの種類があるか否かを判定する（ステップＶ３）。この際、絞り込み手段３１０は、データ生成手順記憶装置３２０に記憶されるデータ生成手順情報１１００を使って判定を行う。絞り込み手段３１０は、ユーザがチェックしたデータの種類の中で、そのデータの種類が生成されることによって必然的に生成されるデータの種類があると判定した場合（ステップＶ３のはい）、ステップＶ４の処理へ進む。一方、絞り込み手段３１０は、ユーザがチェックしたデータの中で、そのデータの種類が生成されることによって必然的に生成されるデータの種類がないと判定した場合（ステップＶ３のいいえ）、ステップＶ５の処理へ進む。
【０１４８】
例えば、絞り込み手段３１０は、ステップＶ３の処理において、ユーザがチェックしたデータの種類「３」が生成されることによって必然的に生成されるデータの種類があるか否かを図２７のデータ生成手順情報１１００を使って調べる。すると絞り込み手段３１０は、データの種類「３」が生成されることで、データの種類「４」が必然的に生成されることが分かるため、ステップＶ４へ進む。一方、絞り込み手段３１０は、ユーザがチェックしたデータの中で、そのデータの種類が生成されることによって必然的に生成されるデータの種類がない場合、ステップＶ１で表示した負担データの種類「３」を削除する。
【０１４９】
そして絞り込み手段３１０は、残りの負担データの種類のランキング結果をユーザへ表示し（ステップＶ５）、ステップＶ２へ戻る。例えば、データの種類「３」が生成されることによって必然的に生成されるデータの種類がない場合、絞り込み手段３１０は、ステップＶ２においてユーザへ表示されていた図２３のランキングダイアログ１０９０の中から、データの種類「３」を削除する。そして絞り込み手段３１０は、図２４のランキングダイアログ１０９１をユーザへ表示し、ステップＶ２へ戻る。
【０１５０】
ここで、絞り込み手段３１０は、ステップＶ２の処理においてユーザが選択したデータの種類を、ステップＶ５の処理で削除してもよいし、図２５のランキングダイアログ１０９２のように、該当するデータの種類に削除線を引いてユーザへ表示してもよい。
【０１５１】
次に、絞り込み手段３１０は、ユーザがチェックしたデータの種類が生成されることで必然的に生成される全てのデータの種類を抽出する（ステップＶ４）。例えば、絞り込み手段３１０は、ステップＶ３の処理においてユーザがチェックしたデータの種類「３」が生成されることによって必然的に生成されるデータの種類があるか否かを図２７のデータ生成手順情報１１００を使って調べる。すると、データの種類「３」が生成されることで、データの種類「４」が必然的に生成されることが分かる。さらに、絞り込み手段３１０は、データの種類「４」が生成されることによって必然的に生成されるデータの種類があるか否かを調べる。すると、データの種類「４」が生成されることで、データの種類「５」が必然的に生成されることが分かる。さらに、絞り込み手段３１０は、データの種類「５」が生成されることによって必然的に生成されるデータの種類があるか否かを調べる。するとデータの種類「５」が生成されることによって、他に生成されるデータの種類は存在しないことが分かるため、絞り込み手段３１０の処理は、ステップＶ５へ進む。
【０１５２】
次に、絞り込み手段３１０は、ステップＶ１の表示内容からステップＶ４で抽出したデータの種類を削除して、残りの負担データのランキング結果をユーザへ表示し（ステップＶ６）、ステップＶ２へ戻る。例えば、図２３のランキングダイアログ１０９０で表示されているデータの種類の中から、ステップＶ５で抽出したデータの種類「３」と、データの種類「４」と、データの種類「５」とを削除した結果が図２６のランキングダイアログ１０９３である。絞り込み手段３１０は、このランキングダイアログ１０９３をユーザへ表示する。ここで、絞り込み手段３１０は、ステップＶ５の処理で抽出したデータの種類を、ステップＶ６の処理で削除してもよいし、該当するデータの種類に削除線を引いてユーザへ表示してもよい（図示せず）。絞り込み手段３１０は、ユーザが負担データの種類を特定できるまで同様の処理を繰り返す。
【０１５３】
次に、本発明の第５の実施の形態の効果について説明する。本実施の形態では、メモリに存在する複数の時刻におけるデータの種類と、データの関係構造とを使って、各データの関係構造の種類に属する関係構造の重複構造数を特定する。そして本実施の形態は、各データの種類の残存時間を特定する。そして本実施の形態は、データの関係構造の階層の深さを特定する。そして本実施の形態は、同じ関係構造を持つデータの数と、データの残存時間と、データの関係構造の階層の深さとを使って、負担データである可能性の高さを算出する。そして本実施の形態は、その算出結果を高い順にランキングし、ランキング結果を使って、ユーザへそのランキング結果を表示する。さらに本実施の形態は、ユーザによる負担データの種類ではないという判定を受けて、その負担データではないデータが生成されることで必然的に生成される他のデータの種類を抽出し、ランキング結果から削除して、ユーザへ再表示することを繰り返す。これによって、ユーザは、ユーザ自身の確認対象となるデータの数を減らすことができる。
【０１５４】
［第６の実施の形態］
図２９は、本発明の第６の実施の形態の構成例を示すブロック図である。第１、第２、第３、第４、および第５の実施の形態と同様の構成要素については、図１、図９、図１２、図１６、および図２２と同一の符号を付して説明を省略する。第６の実施の形態の負担データ特定システム１０５は、関係構造特定手段１１０と、関係構造記憶装置１２０と、重複構造特定手段１３０と、残存時間特定手段１５０と、ランキング手段１６０と、構造深さ特定手段１７０と、絞り込み手段３１０と、データ生成手順記憶装置３２０と、可視化手段４１０とを備える。
【０１５５】
可視化手段４１０は、絞り込み手段３１０によってユーザへ表示された負担データのランキング結果において、ユーザが指定した負担データの種類の関係構造を可視化してユーザへ表示する。可視化された関係構造とは、データの種類をノードとし、データの種類間の依存関係をエッジとしたグラフのことである。なお、ここでいう「グラフ」とは、棒グラフや円グラフ等に代表される統計図表ではなく、ノードとリンクを使ったネットワーク図を指す。
【０１５６】
可視化手段４１０は、例えば、プログラム（負担データ特定プログラム）によって動作するＣＰＵによって実現される。関係構造特定手段１１０と、重複構造特定手段１３０と、残存時間特定手段１５０と、ランキング手段１６０と、構造深さ特定手段１７０と、絞り込み手段３１０と、可視化手段４１０とが、同一のＣＰＵによって実現されてもよい。この場合、プログラムは、例えば、負担データ特定システム１００が備えるプログラム記憶装置（図示せず）に記憶される。ＣＰＵは、そのプログラムを読み込み、そのプログラムに従って、関係構造特定手段１１０と、重複構造特定手段１３０と、残存時間特定手段１５０と、ランキング手段１６０と、構造深さ特定手段１７０と、絞り込み手段３１０と、可視化手段４１０として動作すればよい。
【０１５７】
また、前述のプログラムのコードを記録した記録媒体（または記憶媒体）が、負担データ特定システム１００に供給され、負担データ特定システム１００が記録媒体に格納されたプログラムのコードを読み出し実行してもよい。
【０１５８】
次に、本実施の形態の動作について説明する。関係構造特定手段１１０が特定した各時刻におけるデータの種類と、データの関係構造の種類とを記憶する関係構造記憶装置１２０は、第５の実施の形態における関係構造記憶装置１２０と同様である。また関係構造記憶装置１２０に記憶される各情報を使って、各データの関係構造の種類に属するデータの関係構造の重複構造数を特定する重複構造特定手段１３０の動作は、第５の実施の形態における重複構造特定手段１３０の動作と同様である。
【０１５９】
各データの種類の残存時間を特定する残存時間特定手段１５０の動作は、第５の実施の形態における残存時間特定手段１５０の動作と同様である。データの関係構造の階層の深さを特定する構造深さ特定手段１７０の動作は、第５の実施の形態における構造深さ特定手段１７０の動作と同様である。負担データである可能性の高さを算出して、その結果を高い順にランキングするランキング手段１６０の動作は、第５の実施の形態におけるランキング手段１６０の動作と同様である。
【０１６０】
データが生成されることで必然的に生成される他のデータの種類の関係をまとめたデータ生成手順表を記憶するデータ生成手順記憶装置３２０は、第５の実施の形態におけるデータ生成手順記憶装置３２０と同様である。負担データの種類ではないデータの種類が生成されることで必然的に生成される他のデータの種類を抽出し、ランキング結果から削除して、ランキング結果をユーザへ再表示することを繰り返す絞り込み手段３１０の動作は、第５の実施の形態における絞り込み手段３１０の動作と同様である。
【０１６１】
可視化手段４１０は、絞り込み手段３１０によってユーザへ表示された負担データのランキング結果において、ユーザが指定した負担データの種類の関係構造を可視化して、可視化された関係構造をユーザへ表示する。図３０および図３１は、関係構造を可視化した情報の一例を示す図である。以下、図３０、図３１、図２０、および図２３を使って、可視化手段４１０の動作を説明する。
【０１６２】
可視化手段４１０は、絞り込み手段３１０によってユーザへ表示された負担データの種類のランキング結果において、ユーザが指定した負担データの種類の関係構造を可視化する。例えば、図２３のランキングダイアログ１０９０の中からランキング順位が最上位であるデータの種類「３」をユーザが指定する。この場合、データの種類「３」に対応付けられている関係構造の種類に属する関係構造は、図２０のランキング結果１０８２を参照すると、「１←２←３」であることが分かる。したがって、可視化手段４１０は、データの種類「１」と、「２」と、「３」とをそれぞれノードとし、データの種類「１」と「２」との依存関係を表す「←」と、データの種類「２」と「３」との依存関係を表す「←」とをそれぞれエッジとしたグラフを作成する。
【０１６３】
グラフは、例えば、図３０の関係構造グラフ１１１０のようになる。ここで、可視化手段４１０は、ユーザが負担データの種類を複数指定した場合に、それらの負担データの関係構造をひとつの表示画面に表示してもよい。例えば、図２３のランキングダイアログ１０９０の中からデータの種類「３」と「４」とをユーザが指定した場合、図２０のランキング結果１０８２を参照すると、データの種類「３」に対応付けられている関係構造の種類に属する関係構造は、「１←２←３」であることが分かる。またデータの種類「４」に対応付けられている関係構造の種類に属する関係構造は、「１←２←３←４」と、「１←２←４」とであることが分かる。
【０１６４】
そして、可視化手段４１０は、各データの種類（またはデータのＩＤ）をノードとし、データの種類間の依存関係をエッジとしたグラフを生成する。グラフは、例えば、図３１の関係構造グラフ１１１１のようになる。
【０１６５】
ここで、データの種類「４」に対応付けられている関係構造に属する関係構造は、「１←２←３←４」と、「１←２←４」とである。よって可視化手段４１０は、関係構造が含むデータの種類のすべての依存元であるデータの種類「４」を示すノードを関係構造グラフ１１１１のようにひとつにして表示させてもよい。または可視化手段４１０は、各関係構造それぞれの依存元であるデータの種類「４」を示すノードを別々のノードとして表示させてもよい。
【０１６６】
また、可視化手段４１０は、データの関係構造を可視化した結果からユーザが指定した負担データの種類を生成するプログラムの該当コードをユーザへ表示する機能を備えてもよい。図３２は、ユーザが指定した負担データの種類を生成するプログラムの該当コードを表示した一例を示す図である。以下、可視化手段４１０が、プログラムの該当コードを表示する機能を備えた場合の動作の例を図３２、図２３、および図３０を使って説明する。
【０１６７】
可視化手段４１０は、ユーザが指定した負担データの種類を生成するプログラムの該当コードをユーザへ表示する。例えば、ユーザが図３０の関係構造グラフ１１１０の中からデータの種類「３」を指定した場合、可視化手段４１０は、図３２のように、データの種類「３」を生成しているプログラムの中から該当するコード部分を見つけて、その部分をハイライト表示する。
【０１６８】
可視化手段４１０があるデータの種類を生成しているプログラムの中から該当するコード部分を見つけるためには、スタックトレース情報を使えばよい。スタックトレースとは、プログラムの実行過程を記録した情報のことである。これによって、可視化手段４１０は、あるデータが生成されるにあたって、どのようなコード部分がどのような順番で動作したかが分かる。図３２のコード表示１１２０では、データの種類「３」が生成されるプログラム中の該当コードとして、５行目「Ａｒｒａｙ［］＝ｎｅｗ  ｉｎｔ［１０００］；」が赤字で表示されている。
【０１６９】
ここで、該当コードの表示方法は、図３２のコード表示１１２０のように色を変える方法でもよいし、太字にして表示する方法でもよいし、矩形で囲んで表示する方法でもよいし、どのような表示方法であってもよい。また、ユーザが負担データの種類を複数指定した場合、可視化手段４１０は、それらの負担データの種類を生成する該当コードを複数表示してもよい。また、可視化手段４１０は、例えば、図２３のランキングダイアログ１０９０の中からランキング順位が最上位であるデータの種類「３」をユーザが指定した場合、そのデータの種類を生成するプログラムの該当コードをユーザへ表示してもよい。
【０１７０】
次に、本発明の第６の実施の形態の効果について説明する。本実施の形態では、メモリに存在する複数の時刻におけるデータの種類と、データの関係構造とを使って、各データの関係構造の種類に属する関係構造の重複構造数を特定する。そして本実施の形態は、各データの種類の残存時間を特定する。そして本実施の形態は、データの関係構造の階層の深さを特定する。そして本実施の形態は、同じ関係構造を持つデータの数と、データの残存時間と、データの関係構造の階層の深さとを使って、負担データである可能性の高さを算出する。さらに本実施の形態は、その算出結果を高い順にランキングし、ランキング結果を使って、ユーザへそのランキング結果を表示する。そして本実施の形態は、ユーザの負担データではないという判定を受けて、その負担データの種類ではないデータが生成されることで必然的に生成される他のデータの種類を抽出し、ランキング結果から削除して、ランキング結果をユーザへ再表示することを繰り返す。そして本実施の形態は、ユーザが指定した負担データの種類を使って、データの関係構造を可視化する。これによって、アプリケーションのプログラム内容に詳しくないプロジェクトマネージャや上流設計者等のユーザが、プログラムを見ずにデータの関係構造を正確に確認できる。また、アプリケーションのプログラム内容に詳しいプログラマや詳細設計者等のユーザが、問題のある可能性の高いコード部分を早く特定できる。
【０１７１】
［第７の実施の形態］
図３３は、本発明の第７の実施の形態の構成例を示すブロック図である。本実施形態の負担データ特定システム１０９は、関係構造特定手段１１９と、重複構造特定手段１３９と、負担データ特定手段１４９とを備える。本実施の形態の負担データ特定システム１０９は、メモリに存在するデータの中から負担データの種類を特定する。
【０１７２】
関係構造特定手段１１９は、依存先である一の種類と、その一の種類のデータの変化に応じてデータの内容に影響を受ける依存元である他の種類と、を対応付ける依存関係を示す、依存先を識別できるデータＩＤと依存元を識別できるデータＩＤとを対応付けた情報を一または複数含む関係構造を一または複数入力として受け取る。そして関係構造特定手段１１９は、受け取った関係構造を重複構造特定手段１３９へ渡す。
【０１７３】
重複構造特定手段１３９は、関係構造特定手段１１９が受け取った関係構造の中である関係構造が示す依存関係をすべて含む関係構造の数を特定する。そして重複構造特定手段１３９は、前述の関係構造と前述の特定した数とを対応付けて、負担データ特定手段１４９へ渡す。
【０１７４】
負担データ特定手段１４９は、重複構造特定手段１３９から受け取った数の大きさの順位が所定の順位以上であるか否か判定する。そして負担データ特定手段１４９は、その数の大きさが所定の順位以上である場合に、その数に対応付けられている関係構造が示すすべての依存関係における依存元であるデータの種類を、コンピュータシステムにとって過度の負担となりうる負担データの種類と特定する。
【０１７５】
このような構成により、本実施の形態における負担データ特定システム１０９は、コンピュータシステム上のデータに対して、人手による負担データの条件の定義を行うことなく負担データを特定することができる。
【０１７６】
近年、企業の業務アプリケーションやＥコマース等の各種サービスのためのＷｅｂアプリケーション（以下、業務アプリケーション、およびＷｅｂアプリケーションを総称してアプリケーションと称す）は、多種多様な機能や利用者数の増大に対応するため、大規模、複雑化してきている。アプリケーションが大規模、複雑化すると、アプリケーションが取り扱うデータの種類と数も膨大になる。メモリの容量は有限であるため、アプリケーションの設計者や開発者は、アプリケーションの稼働中に、これらのデータが必要な時に必要な分だけメモリに保持されるように、かつ、不要となったデータがメモリ上から削除されるようにあらかじめそのアプリケーションを設計する。
【０１７７】
しかし、アプリケーションが大規模、複雑化すると、設計やプログラミングのミスによって、不要なデータ（負担データ）がメモリ上に永続的に残ってしまうことがある。負担データがメモリ上に残り続けると、アプリケーションが動作不能となる可能性がある。設計者や開発者が、アプリケーションの設計や開発の段階で、負担データがメモリ上に残り続けてしまうことを発見できれば、アプリケーションの動作不能は回避されうる。
【０１７８】
しかし、アプリケーションが取り扱うデータの種類と数が膨大な場合、そのようなアプリケーションは、負担データが発生してしまうような設計や開発になりやすい。そのため、アプリケーションの稼働時や、アプリケーションの動作テストの段階において、負担データを特定する仕組みが重要となっている。
【０１７９】
特許文献１に記載された方法では、負担データの条件を、ユーザが定義することになっている。アプリケーションが稼働するにあたって生成される全てのデータをユーザがあらかじめ把握しておくことは難しいため、人手による負担データの条件の定義を完全に行うことは非常に困難である。
【０１８０】
一方、本発明の各実施の形態における負担データ特定システムは、コンピュータシステム上のデータに対して、人手による負担データの条件の定義を行うことなく負担データを特定することができる。
【０１８１】
また、別の問題として、次の問題がある。特許文献１に記載された方法では、ユーザが指定した条件に合致するデータの種類が大量にあった場合、それらのデータの種類をすべてユーザに表示する。ユーザはそれらの表示されたデータの種類の中のどのデータから確認すればよいのか分からず、負担データを特定するのに時間がかかってしまう。
【０１８２】
一方、本発明の各実施の形態における負担データ特定システムは、所定の条件を満たすデータの種類を負担データの種類と特定する。ユーザはどのデータから確認を行えばよいのかの示唆を与えられるので、負担データを特定する時間を特許文献１に記載の技術に比べ減少させることができる。
【０１８３】
上記の各実施の形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１８４】
（付記１）
依存先である一の種類と、当該一の種類のデータの変化に応じてデータの内容に影響を受ける依存元である他の種類と、を対応付ける依存関係を示す、前記依存先を識別できる識別子と前記依存元を識別できる識別子とを対応付けた情報を一または複数含む関係構造を一または複数入力として受ける関係構造特定手段と、
前記関係構造特定手段が受け取った関係構造の中で、ある関係構造が示す依存関係をすべて含む関係構造の数を特定し、前記ある関係構造と前記数とを対応付ける重複構造特定手段と、
前記重複構造特定手段が対応付けた前記数の大きさの順位が所定の順位以上の数に相当する前記ある関係構造が示すすべての依存関係における依存元であるデータの種類を、コンピュータシステムにとって過度の負担となりうる負担データの種類と特定する負担データ特定手段とを備える
負担データ特定システム。
【０１８５】
（付記２）
前記関係構造特定手段は、メモリに記憶されているデータの種類の識別子を受け取り、
前記重複構造特定手段は、前記関係構造特定手段が受け取ったデータの種類の識別子毎に、一の識別子で識別できるデータの種類を、すべての依存関係における依存元として含む関係構造を特定し、
前記重複構造特定手段は、前記関係構造が示す依存関係をすべて含む関係構造の数を特定し、前記関係構造と前記数と前記一の識別子とを対応付け、
前記負担データ特定手段は、前記数の大きさの順位が所定の順位以上の数に相当する識別子に基づいて識別されるデータの種類を、前記負担データの種類と特定する、付記１に記載の負担データ特定システム。
【０１８６】
（付記３）
前記負担データ特定手段は、前記重複構造特定手段が対応付けた識別子毎に、一の識別子に対応付けられている各前記数をそれぞれ加算し、前記加算された数の大きさの順位が所定の順位以上の場合に当該識別子で識別できるデータの種類を、前記負担データの種類と特定する、付記２に記載の負担データ特定システム。
【０１８７】
（付記４）
前記関係構造特定手段は、前記データの種類と前記関係構造とを受け取る際に前記データの種類または前記関係構造が生成された時刻を示す情報をそれぞれ受け取り、
前記負担データ特定システムは、
前記関係構造特定手段が受け取る関係構造が示すすべての依存関係における依存元であるデータの種類と前記関係構造が生成された時刻を示す情報とに基づいて、データの種類毎にその種類のデータが前記メモリに記憶されている時間を特定する残存時間特定手段を備え、
前記負担データ特定手段は、前記数の大きさの順位が所定の順位以上の場合で、かつ、当該数に対応付けられている識別子で識別される種類のデータが前記メモリに記憶されている時間が所定の基準値より長い当該データの種類を負担データの種類と特定する
付記２または３に記載の負担データ特定システム。
【０１８８】
（付記５）
前記負担データ特定システムは、
ある関係構造が示すすべての依存関係における依存元であるデータの種類から、前記ある関係構造が示すすべての依存関係における依存先であるデータの種類への依存関係の階層の深さを表すホップ数を特定する構造深さ特定手段と、
前記重複構造特定手段が対応付けた関係構造毎に、前記関係構造に対応付けられている前記数と、前記残存時間特定手段が特定した当該関係構造に対応付けられている識別子で識別される種類のデータが前記メモリに記憶されている時間と、前記構造深さ特定手段が特定した前記関係構造の前記ホップ数とに基づいて、前記種類が負担データの種類である可能性の高さを示す値を決定するランキング手段とを備える
付記４に記載の負担データ特定システム。
【０１８９】
（付記６）
前記負担データ特定システムは、
一のデータの種類の識別子と、当該種類のデータが生成されることに基づいて必然的に生成される他のデータの種類の識別子と、を対応付けた情報であるデータ生成手順情報を記憶するデータ生成手順記憶手段と、
前記ランキング手段が決定した前記負担データである可能性の高さを示す値と、前記データ生成手順記憶手段に記憶される前記データ生成手順情報と、に基づいて、前記負担データである可能性の高さを示す値に対応付けられている関係構造を当該値の高い順に並べて出力する出力手段と、
負担データではない種類のデータであることを示す判定情報の入力を受け、当該判定情報で特定される種類のデータが生成されることに基づいて必然的に生成される他の種類のデータを前記データ生成手順記憶手段に記憶されている前記データ生成手順情報に基づいて抽出し、前記出力手段が出力した値にそれぞれ対応するデータの種類の中から前記他の種類を特定する絞り込み手段とを備える、付記５に記載の負担データ特定システム。
【０１９０】
（付記７）
前記負担データ特定システムは、
前記出力手段が出力した前記値のいずれかを選択する情報の入力を受けると、当該値を決定する際にランキング手段が参照したデータの種類をすべての依存関係の依存元として含む関係構造に含まれるすべての依存関係を示すグラフを表示する可視化手段を備える
付記６に記載の負担データ特定システム。
【０１９１】
（付記８）
前記可視化手段は、
前記出力手段が出力した前記関係構造のいずれかを選択する情報の入力を受けると、該関係構造を示すすべての依存関係における依存元である種類のデータを使用する、前記メモリに記憶されているプログラムの該当コードを表示する
付記７に記載の負担データ特定システム。
【０１９２】
（付記９）
依存先である一の種類と、当該一の種類のデータの変化に応じてデータの内容に影響を受ける依存元である他の種類と、を対応付ける依存関係を示す、前記依存先を識別できる識別子と前記依存元を識別できる識別子とを対応付けた情報を一または複数含む関係構造を一または複数入力として受け、
前記受け取った関係構造の中で、ある関係構造が示す依存関係をすべて含む関係構造の数を特定し、前記ある関係構造と前記数とを対応付け、
前記対応付けた前記数の大きさの順位が所定の順位以上の数に相当する前記ある関係構造が示すすべての依存関係における依存元であるデータの種類を、コンピュータシステムにとって過度の負担となりうる負担データの種類と特定する負担データ特定方法。
【０１９３】
（付記１０）
依存先である一の種類と、当該一の種類のデータの変化に応じてデータの内容に影響を受ける依存元である他の種類と、を対応付ける依存関係を示す、前記依存先を識別できる識別子と前記依存元を識別できる識別子とを対応付けた情報を一または複数含む関係構造を一または複数入力として受ける処理と、
前記受け取った関係構造の中で、ある関係構造が示す依存関係をすべて含む関係構造の数を特定し、前記ある関係構造と前記数とを対応付ける処理と、
前記対応付けた前記数の大きさの順位が所定の順位以上の数に相当する前記ある関係構造が示すすべての依存関係における依存元であるデータの種類を、コンピュータシステムにとって過度の負担となりうる負担データの種類と特定する処理とをコンピュータに実行させるための負担データ特定プログラム。
【産業上の利用可能性】
【０１９４】
本発明の各実施の形態における負担データ特定システムは、アプリケーションを設計開発する際の動作確認等のテスト業務、アプリケーションを運用する際の管理や監視、アプリケーションに異常が発生した際のデバッグ作業などに好適に利用可能である。
【符号の説明】
【０１９５】
１００、１０１、１０２、１０３、１０４、１０５、１０９    負担データ特定システム
１１０、１１９    関係構造特定手段
１２０    関係構造記憶装置
１３０、１３９    重複構造特定手段
１４０、１４９    負担データ特定手段
１５０    残存時間特定手段
１６０    ランキング手段
１７０    構造深さ特定手段
２１０    入力装置
２２０    出力装置
３１０    絞り込み手段
３２０    データ生成手順記憶装置
４１０    可視化手段
１０１０    データ名一覧情報
１０２０    関係構造一覧情報
１０３０、１０３１、１０３２、１０３３、１０３４、１０３５、１０３６、１０３７、１０３８    関係構造数一覧情報
１０４０    残存時間一覧情報
１０５０    重複構造数一覧情報
１０６０    階層一覧情報
１０７０、１０７１    負担データ算出結果
１０８０、１０８１、１０８２、１０８３    ランキング結果
１０９０、１０９１、１０９２、１０９３    ランキングダイアログ
１１００    データ生成手順情報
１１１０、１１１１    関係構造グラフ
１１２０    コード表示
【図１】
2012008615.tif 000003
【図２】
2012008615.tif 000004
【図３】
2012008615.tif 000005
【図４】
2012008615.tif 000006
【図５】
2012008615.tif 000007
【図６】
2012008615.tif 000008
【図７】
2012008615.tif 000009
【図８】
2012008615.tif 000010
【図９】
2012008615.tif 000011
【図１０】
2012008615.tif 000012
【図１１】
2012008615.tif 000013
【図１２】
2012008615.tif 000014
【図１３】
2012008615.tif 000015
【図１４】
2012008615.tif 000016
【図１５】
2012008615.tif 000017
【図１６】
2012008615.tif 000018
【図１７】
2012008615.tif 000019
【図１８】
2012008615.tif 000020
【図１９】
2012008615.tif 000021
【図２０】
2012008615.tif 000022
【図２１】
2012008615.tif 000023
【図２２】
2012008615.tif 000024
【図２３】
2012008615.tif 000025
【図２４】
2012008615.tif 000026
【図２５】
2012008615.tif 000027
【図２６】
2012008615.tif 000028
【図２７】
2012008615.tif 000029
【図２８】
2012008615.tif 000030
【図２９】
2012008615.tif 000031
【図３０】
2012008615.tif 000032
【図３１】
2012008615.tif 000033
【図３２】
2012008615.tif 000034
【図３３】
2012008615.tif 000035