(57)【特許請求の範囲】
【請求項１】
ユーザが作成したプログラムを実行してプログラムのメモリの使用状況を分析し、分析結果のデータを、オブジェクトのオブジェクトＩＤとクラス名とメンバのオブジェクトＩＤを含むメンバに関する情報を対応付けたデータと、前記オブジェクトＩＤとトレース番号を対応付けたデータと、前記トレース番号と複数のメソッド名と行番号を対応付けたデータとして記憶手段に記憶させるステップと、
前記オブジェクトＩＤをキーとして分析結果の前記データを検索して前記オブジェクトＩＤと対応付けられている前記トレース番号を取得し、取得した前記トレース番号をファイル名として含むリンク情報を、前記オブジェクトＩＤのスタックトレースへのリンク情報として作成するステップと、
前記オブジェクトＩＤと前記クラス名と前記スタックトレースへの前記リンク情報からなるインデックスファイルを作成するステップと、
ユーザにより前記インデックスファイルの前記スタックトレースへの特定のリンク情報が選択された時点で、選択された前記リンク情報に含まれる前記トレース番号をキーにして分析結果の前記データを検索し、前記トレース番号と対応付けられている前記複数のメソッド名と前記行番号を取得し、取得した前記複数のメソッド名と前記行番号をＨＴＭＬで記述して、前記スタックトレースのＨＴＭＬファイルを生成するステップを、コンピュータに実行させ、リンク先のＨＴＭＬファイルを動的に生成するプログラム。
【請求項２】
親オブジェクトとメンバの関連を示すチェーン情報へのリンク情報として前記メンバのオブジェクトＩＤをファイル名として含むリンク情報を作成するステップと、
メンバリストへのリンク情報として前記メンバのオブジェクトＩＤをファイル名として含むリンク情報を作成するステップを有し、
前記インデックスファイルを作成するステップは、前記チェーン情報への前記リンク情報と前記メンバリストへの前記リンク情報を前記インデックスファイルとして作成し、
前記ＨＴＭＬファイルを生成するステップは、前記ユーザにより前記インデックスファイルの前記チェーン情報への特定のリンク情報が選択された時点で、選択された前記リンク情報に含まれる前記メンバの前記オブジェクトＩＤをキーにして解析結果の前記データを検索し、前記メンバの前記オブジェクトＩＤがメンバとして登録されている親オブジェクトの前記クラス名を取得し、取得した前記親オブジェクトの前記クラス名と前記親オブジェクトのリンク先のファイル名をＨＴＭＬで記述して前記チェーン情報のＨＴＭＬファイルを生成するステップと、前記ユーザにより前記インデックスファイルの前記メンバリストへの特定のリンク情報が選択された時点で、選択された前記リンク情報に含まれる前記メンバの前記オブジェクトＩＤをキーにして解析結果の前記データを検索し、前記メンバの前記オブジェクトＩＤと対応付けられている前記メンバに関する情報を取得し、取得した前記メンバに関する情報をＨＴＭＬで記述して、前記メンバリストのＨＴＭＬファイルを生成するステップからなる請求項１記載のリンク先のＨＴＭＬファイルを動的に生成するプログラム。
【請求項３】
ユーザが作成したプログラムを解析して前記プログラムのメモリの使用状況を分析し、分析結果のデータを、オブジェクトのオブジェクトＩＤとクラス名とメンバのオブジェクトＩＤを含むメンバに関する情報を対応付けたｄｕｍｐデータと、前記オブジェクトＩＤとトレース番号を対応付けたデータ及びトレース番号と複数のメソッド名と行番号を対応付けたデータからなるトレースデータとして記憶手段に記憶させるステップと、
スタックトレースへのリンク情報として前記オブジェクトＩＤと対応付けられている前記トレース番号をファイル名として含むリンク情報を作成するステップと、
親オブジェクトとメンバの関連を示すチェーン情報へのリンク情報として前記メンバのオブジェクトＩＤをファイル名として含むリンク情報を作成するステップと、
メンバリストへのリンク情報として前記メンバのオブジェクトＩＤをファイル名として含むリンク情報を作成するステップと、
前記スタックトレースへの前記リンク情報と前記チェーン情報への前記リンク情報と前記メンバリストへの前記リンク情報からなるインデックスファイルを作成するステップと、
ユーザにより前記インデックスファイルの前記スタックトレースへの特定のリンク情報が選択された時点で、選択された前記リンク情報に含まれる前記トレース番号をキーにして前記トレースデータを検索し、前記トレース番号に対応する前記複数のメソッド名と前記行番号を取得し、取得した前記トレース番号と前記複数のメソッド名と前記行番号をＨＴＭＬで記述して前記スタックトレースのＨＴＭＬファイルを生成するステップと、
前記ユーザにより前記インデックスファイルの前記チェーン情報への特定のリンク情報が選択された時点で、選択された前記リンク情報に含まれる前記メンバの前記オブジェクトＩＤをキーにして前記ｄｕｍｐデータを検索し、前記メンバの前記オブジェクトＩＤがメンバとして登録されている親オブジェクトの前記クラス名を取得し、取得した前記親オブジェクトの前記クラス名と前記親オブジェクトのリンク先ファイル名をＨＴＭＬで記述して前記チェーン情報のＨＴＭＬファイルを生成するステップと、
前記ユーザにより前記インデックスファイルの前記メンバリストへの特定のリンク情報が選択された時点で、選択された前記リンク情報に含まれる前記メンバのオブジェクトＩＤを取得し、取得した前記メンバの前記オブジェクトＩＤをキーにして前記ｄｕｍｐデータを検索し、前記メンバの前記オブジェクトＩＤと対応付けて記憶されている前記メンバに関する情報を取得し、取得した前記メンバに関する情報をＨＴＭＬで記述して、前記メンバリストのＨＴＭＬファイルを生成するステップを、コンピュータに実行させ、リンク先のＨＴＭＬファイルを動的に生成するプログラム。
【請求項４】
前記ｄｕｍｐデータは、前記オブジェクトＩＤと前記クラス名と前記メンバに関する情報を対応付けたｄｕｍｐ．ｈｌｍであり、前記トレースデータの前記オブジェクトＩＤと前記トレース番号を対応付けたデータはｓｅｒ．ｈｌｍであり、前記トレース番号と前記複数のメソッド名と行番号を対応付けたデータはｔｒａｃｅ．ｈｌｍであり、
前記ユーザにより前記インデックスファイルの前記チェーン情報への特定のリンク情報が選択された時点で、選択された前記リンク情報に含まれる前記メンバの前記オブジェクトＩＤをキーにして前記ｄｕｍｐ．ｈｌｍを検索し、前記メンバの前記親オブジェクトの前記クラス名を取得し、取得した前記親オブジェクトの前記クラス名と前記親オブジェクトのリンク先ファイル名をＨＴＭＬで記述して前記チェーン情報のＨＴＭＬファイルを生成し、
前記ユーザにより前記インデックスファイルの前記メンバリストへの特定のリンク情報が選択された時点で、選択された前記リンク情報に含まれる前記メンバのオブジェクトＩＤをキーにして前記ｄｕｍｐ．ｈｌｍを検索して前記メンバに関する情報を取得し、取得した前記メンバに関する情報をＨＴＭＬで記述して、前記メンバリストのＨＴＭＬファイルを生成する請求項３記載のリンク先のＨＴＭＬファイルを動的に生成するプログラム。
【請求項５】
ユーザが作成したプログラムを実行してプログラムのメモリの使用状況を分析し、分析結果のデータを、オブジェクトのオブジェクトＩＤとクラス名とメンバのオブジェクトＩＤを含むメンバに関する情報を対応付けたデータと、前記オブジェクトＩＤとトレース番号を対応付けたデータと、前記トレース番号と複数のメソッド名と行番号を対応付けたデータとして記憶する記憶手段と、
前記オブジェクトＩＤをキーとして分析結果の前記データを検索して前記オブジェクトＩＤと対応付けられている前記トレース番号を取得し、取得した前記トレース番号をファイル名として含むリンク情報を、前記オブジェクトＩＤのスタックトレースへのリンク情報として作成するリンク情報手段と、
前記オブジェクトＩＤと前記クラス名と前記スタックトレースへの前記リンク情報からなるインデックスファイルを作成するインデックス作成手段と、
ユーザにより前記インデックスファイルの前記スタックトレースへの特定のリンク情報が選択された時点で、選択された前記リンク情報に含まれる前記トレース番号をキーにして分析結果の前記データを検索し、前記トレース番号と対応付けられている前記複数のメソッド名と前記行番号を取得し、取得した前記複数のメソッド名と前記行番号をＨＴＭＬで記述して、前記スタックトレースのＨＴＭＬファイルを生成するＨＴＭＬファイル生成手段とを備える情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のファイルからハイパーリンクをサポートするファイルを生成するプログラム、そのプログラムを記録した記録媒体及び情報処理装置に関する。
【０００２】
【従来の技術】
プログラムの開発時やデバッグ時には、ユーザが作成したプログラムのメモリの使用状況等を解析し、解析結果のデータを端末装置に表示させることが必要となる。その際、ユーザが利用しやすいようにデータをブラウザで表示させることのできるようにＨＴＭＬ（hypertext markup language）等のハイパーリンクをサポートするファイルを生成している。
【０００３】
従来、複数のファイルからＨＴＭＬファイルを作成する方法として、以下の２つの方法が行われている。
第１の方法は、クライアント側の端末装置において複数のファイルからすべてのＨＴＭＬファイルを生成して記憶装置に記憶しておき、クライアントから表示要求があったとき、記憶してあるＨＴＭＬファイルを表示する。
【０００４】
第２の方法は、サーバとクライアントからなるシステムにおいて、ＨＴＴＰ（hypertext transfer protocol）サーバにＨＴＭＬファイルを記憶しておき、クライアントからの要求に応じてサーバがＨＴＭＬファイルをクライアントに送信する。
【０００５】
また、特開平１０−６９４２４号公報には、ウェブページ内の動的データを効率的に処理する装置について記載されている。
【０００６】
【特許文献１】
特開平１０−６９４２４号公報（段落００２６〜００２９）
【０００７】
【発明が解決しようとする課題】
しかしながら、第１の方法は、ＨＴＭＬファイルの生成に時間がかかるばかりでなく、生成したＨＴＭＬファイルをすべて記憶しておくためには大きな記憶容量が必要となるという問題点があった。
【０００８】
また、第２の方法は、ＨＴＭＬファイルを生成し、生成したＨＴＭＬファイルを記憶しておく専用のサーバを設ける必要があり、システムのリソースがその分消費される。さらに、サーバにＨＴＭＬファイルを記憶しておく場合には、サーバとクライアント間でデータを送信しなければならないので通信回線のトラヒックが増大するという問題点がある。
【０００９】
特許文献１記載の発明は、ウェブページが動的データを含むかどうかをＳＱＬ照会があるかどうかにより判定し、ＳＱＬ照会がある場合には、言語プロセッサが動的データを組み込んだＨＴＭＬデータを生成するものであり、本発明の特徴を示唆するものではない。
【００１０】
本発明の課題は、ハイパーリンクをサポートするファイルを生成するための時間を短縮することである。
【００１１】
【課題を解決するための手段】
本発明のリンク先のＨＴＭＬファイルを動的に生成するプログラムは、ユーザが作成したプログラムを実行してプログラムのメモリの使用状況を分析し、分析結果のデータを、オブジェクトのオブジェクトＩＤとクラス名とメンバのオブジェクトＩＤを含むメンバに関する情報を対応付けたデータと、前記オブジェクトＩＤとトレース番号を対応付けたデータと、前記トレース番号と複数のメソッド名と行番号を対応付けたデータとして記憶手段に記憶させるステップと、前記オブジェクトＩＤをキーとして分析結果の前記データを検索して前記オブジェクトＩＤと対応付けられている前記トレース番号を取得し、取得した前記トレース番号をファイル名として含むリンク情報を、前記オブジェクトＩＤのスタックトレースへのリンク情報として作成するステップと、前記オブジェクトＩＤと前記クラス名と前記スタックトレースへの前記リンク情報からなるインデックスファイルを作成するステップと、ユーザにより前記インデックスファイルの前記スタックトレースへの特定のリンク情報が選択された時点で、選択された前記リンク情報に含まれる前記トレース番号をキーにして分析結果の前記データを検索し、前記トレース番号と対応付けられている前記複数のメソッド名と前記行番号を取得し、取得した前記複数のメソッド名と前記行番号をＨＴＭＬで記述して、前記スタックトレースのＨＴＭＬファイルを生成するステップを、コンピュータに実行させる。
【００１２】
この発明は、例えば、第１段階においては、インデックスファイルのみを生成し、特定のインデックスファイルがユーザにより選択された第２段階において、選択されたインデックスファイルにより指定されるリンク先のＨＴＭＬファイルを作成するようにしたので、予めＨＴＭＬファイルを作成する処理が不要となり、またユーザが違和感を感じない程度の時間でリンク先のＨＴＭＬファイルを生成することができる。さらに、予めすべてのＨＴＭＬファイルを記憶しておく必要がないのでファイルの記憶領域を少なくできる。
【００１３】
さらに、ハイパーリンクをサポートするファイルを記憶しておく専用のサーバを設ける必要がないので、システムのリソースをより有効に活用できる。
本発明は、リンク先のファイルを動的に生成する情報処理装置及びプログラムを記録したコンピュータ読み取り可能な記録媒体にも同様に適用できる。
【００１４】
上記の発明のリンク先のＨＴＭＬファイルを動的に生成するプログラムにおいて、親オブジェクトとメンバの関連を示すチェーン情報へのリンク情報として前記メンバのオブジェクトＩＤをファイル名として含むリンク情報を作成するステップと、メンバリストへのリンク情報として前記メンバのオブジェクトＩＤをファイル名として含むリンク情報を作成するステップを有し、前記インデックスファイルを作成するステップは、前記チェーン情報への前記リンク情報と前記メンバリストへの前記リンク情報を前記インデックスファイルとして作成し、前記ＨＴＭＬファイルを生成するステップは、前記ユーザにより前記インデックスファイルの前記チェーン情報への特定のリンク情報が選択された時点で、選択された前記リンク情報に含まれる前記メンバの前記オブジェクトＩＤをキーにして解析結果の前記データを検索し、前記メンバの前記オブジェクトＩＤがメンバとして登録されている親オブジェクトの前記クラス名を取得し、取得した前記親オブジェクトの前記クラス名と前記親オブジェクトのリンク先のファイル名をＨＴＭＬで記述して前記チェーン情報のＨＴＭＬファイルを生成するステップと、前記ユーザにより前記インデックスファイルの前記メンバリストへの特定のリンク情報が選択された時点で、選択された前記リンク情報に含まれる前記メンバの前記オブジェクトＩＤをキーにして解析結果の前記データを検索し、前記メンバの前記オブジェクトＩＤと対応付けられている前記メンバに関する情報を取得し、取得した前記メンバに関する情報をＨＴＭＬで記述して、前記メンバリストのＨＴＭＬファイルを生成するステップからなる。
【００１７】
本発明の情報処理装置は、ユーザが作成したプログラムを実行してプログラムのメモリの使用状況を分析し、分析結果のデータを、オブジェクトのオブジェクトＩＤとクラス名とメンバのオブジェクトＩＤを含むメンバに関する情報を対応付けたデータと、前記オブジェクトＩＤとトレース番号を対応付けたデータと、前記トレース番号と複数のメソッド名と行番号を対応付けたデータとして記憶する記憶手段と、前記オブジェクトＩＤをキーとして分析結果の前記データを検索して前記オブジェクトＩＤと対応付けられている前記トレース番号を取得し、取得した前記トレース番号をファイル名として含むリンク情報を、前記オブジェクトＩＤのスタックトレースへのリンク情報として作成するリンク情報手段と、前記オブジェクトＩＤと前記クラス名と前記スタックトレースへの前記リンク情報からなるインデックスファイルを作成するインデックス作成手段と、ユーザにより前記インデックスファイルの前記スタックトレースへの特定のリンク情報が選択された時点で、選択された前記リンク情報に含まれる前記トレース番号をキーにして分析結果の前記データを検索し、前記トレース番号と対応付けられている前記複数のメソッド名と前記行番号を取得し、取得した前記複数のメソッド名と前記行番号をＨＴＭＬで記述して、前記スタックトレースのＨＴＭＬファイルを生成するＨＴＭＬファイル生成手段とを備える。
【００１８】
この発明によれば、例えば、第１段階ではインデックスファイルのみを生成し、ユーザによりインデックスファイルが選択された時点で、リンク先のＨＴＭＬファイルを動的に生成する。これにより第１段階におけるリンクの解析及びファイルの生成に要する時間を大幅に短縮できる。
【００１９】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。図１は、実施の形態の情報処理装置１１の機能の説明図である。このシステムは、ユーザの作成したＪａｖａ(R) プログラムを実行、解析してメモリの使用状況等を示すデータを生成する装置と、入力されるメモリの使用状況等を示すデータからＨＴＭＬ等のハイパーリンクをサポートするファイルを生成して表示する情報処理装置１１（パーソナルコンピュータなど）とから構成されている。
【００２０】
Ｊａｖａ(R) ＶＭ(virtual machine)によりユーザが作成したプログラムが実行され、そのプログラムのメモリ使用状況等がメモリプロファイラ１２により分析され、分析結果のデータが生成される。このとき生成されるデータは、dump.hlm, ser.hlm. trace.hlm, liv.hlm, method.hlm等のファイルである。
【００２１】
dump.hlmは、図２に示すようにオブジェクトＩＤとクラス名とメンバーのオブジェクトＩＤ等から構成されている。
ser,hlmは、図３に示すようにオブジェクトＩＤとサイズとトレース番号とから構成されている。
【００２２】
trace.hlmは、図４に示すように、１つのトレースに対してトレース番号とメソッド名と行番号を１組とする複数のデータで構成されている。
liv.hlmには、図示していないが、メモリ上に割り当てられたファイルの個数と、残存しているファイルの個数とが格納されている。
【００２３】
情報処理装置１１は、図５のフローチャートのステップＳ１１に示すように、第１段階として、ユーザプログラムを実行する装置からメモリ使用状況等を示すファイルを読み込み、最小限のＨＴＭＬファイルからなるインデックスファイル１３を作成する。インデックスファイル１３には、詳細なデータが記述されるＨＴＭＬファイルへのリンクのみが記述される。この段階ではリンク先のＨＴＭＬファイルは作成されない。
【００２４】
図６は、インデックスファイル作成処理の詳細なフローチャートである。
最初に、dump.hlmにデータがあるか否かを判別する（図６，Ｓ２１）。dump.hlmにデータがある場合には（Ｓ２１，ＹＥＳ）、dump.hlmの１レコード分のデータを読み込む（Ｓ２２）。そして、クラス一覧のＨＴＭＬファイルへ読み込んだオブジェクトのエントリを追加する（ステップ２３）。
【００２５】
上記の処理により、図７に示すファーストレベルのインデックスファイルとセカンドレベルのインデックスファイルが作成される。
例えば、図２のdump.hlmの１レコード分のデータとしてオブジェクトＩＤ0x438f6ca8（１６進数）と、クラス名”java.lang.String”が読み込まれ、図示しないliv.hlmから同じクラス名の割当て済みのファイル数”１６１３０”と、その割当て済みのファイルの中で残っているファイル数”４８９８”が読み込まれ、図７に示すファーストレベルのインデックスファイル（ＨＴＭＬファイル）の１番目のレコードが作成される。また、このオブジェクトは”java.lang.String”のオブジェクトであるので、セカンドレベルのインデックスファイルである”java.lang.String”のＨＴＭＬファイル”139.html”に追加される。なお、”java.lang.String”のＨＴＭＬファイル名の139.htmlは予め決められている。
【００２６】
図７のＨＴＭＬファイルの１番目のレコードの最初の”１６１３０”が割当て済みのファイル数を示し、次の”<a href＝139.html>”が、リンク先のＨＴＭＬファイル名を示し、”４８９８”が残っているファイル数を示し、次の”java.lang.String”がクラス名を示す。図７において、＜tr＞はテーブルの行を定義するタグであり、＜th＞は見出しセルを指定するタグであり、＜a href＝"URL"＞は、ハイパーリンクを指定するタグである。
【００２７】
図６に戻り、次のステップＳ２４において、dump.hlmから読み込んだオブジェクトＩＤをキーにしてser.hlmを検索し、同じオブジェクトＩＤに対応づけて格納されているサイズとトレース番号を取得する。さらに、そのトレース番号でtrace.hlmを検索し、トレース情報であるスタックトレースへのリンクを作成する。
【００２８】
例えば、図２のdump.hlmの１レコード分のデータとしてオブジェクトＩＤ0x438f6cc0（１６進数）と、クラス名”java.lang.String”を読み込むと、図３のser.hlmから同じオブジェクトＩＤに対応づけて格納されているサイズ２４と、トレース番号１１（１０進数）を取得しスタックトレースへのリンクを作成する。
【００２９】
これらの処理により、図８に示すようにセカンドレベルのインデックスファイルである”java.lang.String”のオブジェクトＩＤ0x438f6cc0に対応させて、サイズ２４バイト、トレース情報のリンク先を指すリンク情報”<a href＝trace/11.html>”が作成される。
【００３０】
次に、図６のステップＳ２５において、親オブジェクトとの関連を示すreachable chainへのリンクを自己のオブジェクトＩＤをファイル名として生成する。さらに、次のステップＳ２６において、member listへのリンクを同様に自己のオブジェクトＩＤをファイル名として生成する。
【００３１】
上記の処理により、例えば、図２のdump.hlmに基づいて、図８の”java.lang.String”に登録されているオブジェクトＩＤと対応づけてスタックトレース、チェーン及びメンバリストへのリンクが作成される。”セカンドレベルのインデックスファイルである”java.lang.String”には、オブジェクトＩＤ0x438f6cc0のトレース情報を示すスタックトレース（call stack）のリンク先がtrace/11.htmlであること、reachable chainのリンク先がchain/1133472960.htmlであること、member listのリンク先がmember/1133472960.htmlであることがＨＴＭＬで記述されている。
【００３２】
図９及び図１０は、ブラウザで図７のファーストレベルのインデックスファイルと図８の”java.lang.String”を表示させたときの表示例を示している。
図９に示すように、ファーストレベルのインデックスファイルには、メモリに割り当てられたオブジェクト数と、残存しているオブジェクト数と、クラス名とが表示される。そして、ユーザが、３行目のクラス名”java.lang.String”を選択すると、図１０の”java.lang.String”のインデックスファイルが表示される。
【００３３】
図１０のcall stack, reachable chain, member listにはハイパーリンクをサポートするファイルであることを示す下線が表示されるが、この時点ではリンク情報のみが生成され、リンク先のＨＴＭＬファイルは生成されていない。
【００３４】
次に、インデックスファイルから特定のファイルが選択されたときに、選択されたリンク先のＨＴＭＬファイルを生成する処理を、図１１のフローチャートを参照して説明する。
【００３５】
情報処理装置１１は、トップページ、すなわち、上述したファーストレベルのインデックスファイルをブラウザで読み込み表示部に表示する（図１１，Ｓ３１）。そして、ユーザの入力操作を待つ（Ｓ３２）。
【００３６】
ユーザによりファーストレベルのインデックスファイルの中の特定のインデックスファイルが選択されたなら、ステップＳ３３に進み、選択されたインデックスファイルにより指定されるリンク先のファイルが存在するか否かを判別する（Ｓ３３）。
【００３７】
リンク先ファイルが存在する場合には（Ｓ３３，ＹＥＳ）、ステップＳ３４に進み選択されたリンク先ファイルを表示部に表示する。
リンク先ファイルが存在しない場合には（Ｓ３３，ＮＯ）、ステップＳ３５に進み、リンク先ファイルを生成する。新たに生成されたリンク先ファイルは、上記のステップＳ３４において表示部に表示される。
【００３８】
次に、図１１のフローチャートのステップＳ３５のリンク先ファイルの生成処理を、図１２〜図２０を参照して具体的に説明する。
図１２は、スタックトレースのＨＴＭＬファイルを生成する処理のフローチャートである。
【００３９】
ユーザにより選択されたファイル名からトレース番号を取得する（図１２，Ｓ４１）。セカンドレベルのインデックスファイルのスタックトレースのリンク先ファイル名としてトレース番号が使用されているので、選択されたファイル名からトレース番号が分かる。
【００４０】
次に、trace.hlmから該当するトレース番号を検索し、そのトレース番号と対応づけて格納されているメソッド名と行番号を取得する（Ｓ４２）。
次に、トレーススタックのＨＴＭＬファイルを作成し、そのファイルにメソッド名と行番号を書き出す（Ｓ４３）。
【００４１】
上記の処理の一例を図１０の”java.lang.String”の表示例と図８のＨＴＭＬファイルを参照して説明する。
例えば、ブラウザにより表示された図１０の”java.lang.String”のオブジェクトＩＤ0x438f6cc0のcall stackがユーザにより選択された場合、情報処理装置１１は、図８のＨＴＭＬファイルのリンク先ファイル名trace/11.htmlから、そのトレース番号が”１１”であることが分かる。次に、trace.hlmからトレース番号１１（＝0xb）を検索し、トレース番号に対応させて格納されているメソッド名と行番号データを取得する。そして、取得したトレース番号１１のメソッド名"java.lang.String#substring(II)Ljava/lang/String"と行番号”１５２２”等をＨＴＭＬで記述して”java.lang.String”のスタックトレースのＨＴＭＬファイルを生成する。
【００４２】
図１３は、スタックトレースの生成処理により生成されるスタックトレースのＨＴＭＬファイルを示している。
１行目にtrace.hlmから取得した"java.lang.String#substring(II)Ljava/lang/String"と行番号”１５２２”がＨＴＭＬで記述され、以下、trace.hlmから読み込まれるメソッド名と行番号がＨＴＭＬで順に記述される。図１３の行の先頭の＜ｂｒ＞は、改行を指定するタグである。
【００４３】
図１４は、図１３のスタックトレースのＨＴＭＬファイルをブラウザで表示させた場合の表示例を示している。
次に、図１５は、チェーン（reachable chain）の生成処理のフローチャートである。
【００４４】
ユーザにより選択されたファイル名からオブジェクトＩＤを取得する（図１５，Ｓ５１）。実施の形態では、インデックスファイルのチェーンのファイル名としてオブジェクトＩＤを使用しているので、ファイル名からオブジェクトＩＤを知ることができる。
【００４５】
次に、dump.hlmから該当するオブジェクトＩＤをメンバとする親オブジェクトを検索する（Ｓ５２）。そして、次のステップＳ５３で、親オブジェクトが見つかったか否かを判別する。選択されたオブジェクトＩＤをメンバとする親オブジェクトが見つからない場合には（Ｓ５３，ＮＯ）、ステップＳ５２に戻り検索を継続する。
【００４６】
親オブジェクトが見つかった場合には（Ｓ５３，ＹＥＳ）、ステップＳ５４に進み、チェーンのＨＴＭＬファイルを作成し、dump.hlmから抽出した親オブジェクト名と、オブジェクトＩＤのリンク情報をチェーンのＨＴＭＬファイルに書き出す。
【００４７】
ここで、上記のチェーンの生成処理の一例を、図１０の表示例と図８の”java.lang.String”のＨＴＭＬファイルを参照して説明する。
例えば、情報処理装置１１の表示部に表示された”java.lang.String”（図１０）のオブジェクトＩＤ0x438f6cc0のreachable chainが、ユーザにより選択された場合に、情報処理装置１１は、図８のreachble chainのリンク先ファイル名chain/1133472960.htmlから、そのオブジェクトＩＤが”1133472960”であることが分かる。次に、dump.hlmから”1133472960（＝0x438f6cc0）がメンバとして登録されている親のオブジェクトを検索する。そして、検索により得られた親オブジェクト名と親オブジェクトのリンク先ファイル名をＨＴＭＬで記述してチェーンのＨＴＭＬファイルchain/1133472960.htmlを作成する。
【００４８】
図１６は、上述したチェーンの生成処理により生成されるＨＴＭＬファイルchain/1133472960.htmlを示す図である。
図１６の１行目に選択されたオブジェクトＩＤ0x438f6cc0のクラス名”java.lang.String”と、リンク先ファイル名"../139.html"と、オブジェクトＩＤ0x438f6cc0がＨＴＭＬで記述される。以下、dump.hlmから抽出された親のオブジェクト名とオブジェクトＩＤがＨＴＭＬで記述される。
【００４９】
図１７は、図１６のチェーンのＨＴＭＬファイルをブラウザで表示させた場合の表示例を示している。
図１８は、メンバリスト（member list）の生成処理のフローチャートである。
【００５０】
ユーザにより選択されたファイル名からオブジェクトＩＤを取得する（図１８，Ｓ６１）。実施の形態では、インデックスファイルのメンバーリストのファイル名としてオブジェクトＩＤを使用しているので、ファイル名からオブジェクトＩＤを知ることができる。
【００５１】
次に、dump.hlmから該当するオブジェクトＩＤを検索し、そのオブジェクトＩＤに対応させて格納されているメンバのオブジェクトＩＤを取得する（Ｓ６２）。
【００５２】
次に、オブジェクトＩＤをファイル名とするファイルを作成し、dump.hlmから取得したメンバのチェーンのＨＴＭＬファイルを作成し、dump.hlmから抽出したメンバリストをＨＴＭＬで記述する（Ｓ６３）。
【００５３】
ここで、上記のメンバリストの生成処理の一例を、図１０の”java.lang.String”の表示例と、図８の”java.lang.String”のＨＴＭＬファイルを参照して説明する。
【００５４】
例えば、情報処理装置１１の表示部に表示された”java.lang.String”（図１０）のオブジェクトＩＤ0x438f6cc0のmember listが、ユーザにより選択された場合に、情報処理装置１１は、図８のmember listのリンク先ファイル名member/1133472960.htmlから、そのオブジェクトＩＤが”1133472960”であることが分かる。次に、dump.hlmから”1133472960（＝0x438f6cc0）のオブジェクトＩＤを検索し、検索により得られたメンバの型、名前、値、すなわち、I hash :0,I count :40,I offset :137をＨＴＭＬで記述して、メンバリストのＨＴＭＬファイルmember/1133472960.htmlを作成する。
【００５５】
図１９は、上述したメンバリストの生成処理により生成されるＨＴＭＬファイルmember/1133472960.htmlを示す図である。
１行目にクラス名と、選択されたオブジェクトＩＤ0x438f6cc0が、２行目以降に、メンバの型、名前、値、I hash :0,I count :40,I offset :137がＨＴＭＬで記述されている。
【００５６】
また、図２０は、図１９のメンバリストをブラウザで表示させたときの表示例を示している。
ここで、実施の形態の情報処理装置１１のハードウェア構成の一例を図２１に示す。
【００５７】
バス２１を介してＣＰＵ２２と接続されたＲＯＭ２３には、ＢＩＯＳなどの基本プログラムが格納される。また、基本プログラムは、バス２１により接続されるハードディスクなどの記憶装置２４に格納され、ＲＡＭ２５にコピーされてＣＰＵ２２により実行される。表示部２０には、ユーザから表示要求のあったデータ等が表示される。
【００５８】
記憶媒体読み取り装置２６は、フレキシブルディスク、ＣＤＲＯＭ、ＤＶＤ、ＩＣカード等の可搬記録媒体２７から本発明に係るプログラム等を読み取り、ＣＰＵ２２に実行させることもできる。
【００５９】
入出力装置２８は、キーボード、マウス、ディスプレイなどからなり、ユーザのからの指示をＣＰＵ２２に伝え、あるいはＣＰＵ２２の処理結果を出力するためのものである。
【００６０】
通信インターフェース２９は、インターネット等のネットワーク３０を介して情報提供者３１と通信を行うためのものである。情報提供者３１は、本発明に係るプログラムをサーバ等に保持し、そのプログラムをネットワーク３０を介して情報処理装置１１にダウンロードできるようにしても良い。
【００６１】
なお、上記の情報処理装置１１は、ネットワーク３０を介してプログラムをダウンロードするための通信インタフェース２９及び記録媒体２７に記録されたプログラムを読み取るための記録媒体読み取り装置２６を備えているが、これらの機能をすべて備える必要はない。
【００６２】
上述した実施の形態によれば、Ｊａｖａ(R) で記述されたプログラムのメモリの使用状況等を示すファイルからＨＴＭＬファイルを生成する際に、予めすべてのＨＴＭＬファイルを作成するのではなく、必要最小限のＨＴＭＬファイルを作成し、そのＨＴＭＬファイルの中の特定ＨＴＭＬファイルが選択されたとき、該当するＨＴＭＬファイルを動的に生成するようにしたので、ファイル相互間のリンクの解析及びＨＴＭＬファイルの作成を一度に行う必要がなくＨＴＭＬファイルを生成するための時間を短縮できる。また、ＨＴＭＬファイルをすべて作成して記憶装置に予め記憶しておく必要がないので、記憶装置の記憶容量も少なくて済む。
【００６３】
また、ＨＴＭＬファイルを閲覧する装置と別のサーバにＨＴＭＬファイルを格納する場合に生じるサーバとクライアント間でのデータ転送によるトラヒックの増大を防止できる。また、ＨＴＭＬファイルを格納する専用のサーバが必要ないのでシステム構成も簡素になる。
【００６４】
上述した実施の形態は、ユーザが作成したプログラムを実行してメモリの使用状況等を解析する装置と、その装置から出力されるデータに基づいてメモリの使用状況等を示すＨＴＭＬファイルを生成する情報処理装置１１との２台の装置からなるシステムを前提にして説明したが、対象となるデータはメモリの使用状況を示すデータには限らず、どのようなデータでもよい。また、ユーザプログラムの実行及び解析と、ＨＴＭＬファイルの生成を１台の情報処理装置１１で行ってもよい。
【００６５】
また、情報処理装置１１が生成するハイパーリンクをサポートするファイルは、ＨＴＭＬファイルに限らず、ブラウザ等により表示可能なファイルであればどのようなものでも良い。
【００６６】
本発明は、Ｊａｖａ(R) で記述されたプログラムに限らず、他のプログラム言語にも適用できる。
（付記１）複数のファイルからハイパーリンクをサポートするファイルを生成するプログラムにおいて、
リンク先のファイルを指す複数のインデックスファイルを生成するステップと、
前記複数のインデックスファイルの中の特定のインデックスファイルが選択されたとき、選択されたインデックスファイルにより指定されるリンク先のファイルが存在するか否かを判別するステップと、
リンク先のファイルが存在しない場合に、リンク先のハイパーリンクをサポートするファイルを生成するステップとからなるリンク先のファイルを動的に生成するプログラム。
【００６７】
（付記２）複数のファイルからハイパーリンクをサポートするファイルを生成する情報処理装置において、
リンク先のファイルを指す複数のインデックスファイルを生成するインデックスファイル生成手段と、
前記インデックスファイル生成手段により生成される複数のインデックスファイルの中の特定のインデックスファイルが選択されたとき、選択されたインデックスファイルにより指定されるリンク先のファイルが存在するか否かを判別する判別手段と、
前記判別手段により前記リンク先のファイルが存在しないと判別された場合に、リンク先のハイパーリンクをサポートするファイルを生成するハイパーリンクファイル生成手段とを備えるリンク先のファイルを動的に生成する情報処理装置。
【００６８】
（付記３）複数のファイルからハイパーリンクをサポートするファイルを生成するプログラムを記録した記録媒体であって、
リンク先のファイルを指す複数のインデックスファイルを生成するステップと、
前記複数のインデックスファイルの中の特定のインデックスファイルが選択されたとき、選択されたインデックスファイルにより指定されるリンク先のファイルが存在するか否かを判別するステップと、
前記リンク先のファイルが存在しない場合に、リンク先のハイパーリンクをサポートするファイルをして生成するステップとを備えるリンク先のファイルを動的に生成するプログラムを記録したコンピュータ読み取り可能な記録媒体。
【００６９】
（付記４）前記ハイパーリンクをサポートするファイルはブラウザにより表示可能なＨＴＭＬファイルであり、選択されたインデックスファイルにより指定されるリンク先のファイルが存在しない場合に、リンク先のＨＴＭＬファイルを生成する付記１記載のリンク先のファイルを動的に生成するプログラム。
【００７０】
（付記５）前記複数のファイルは、解析対象のプログラムのメモリの使用状況を示すデータを含み、前記複数のファイルからリンク先のＨＴＭＬファイルを指すインデックスファイルを生成し、選択されたインデックスファイルにより指定されるリンク先のファイルが存在しない場合に、リンク先のＨＴＭＬファイルを生成する付記１記載のリンク先のファイルを動的に生成するプログラム。
【００７１】
（付記６）複数のファイルからハイパーリンクをサポートするファイルを生成するプログラムであって、
リンク先のファイルを指す複数のインデックスファイルを生成するステップと、
生成された複数のインデックスファイルの中の特定のインデックスファイルが選択されたとき、該インデックスファイルのリンク先のファイルが存在するか否かを判別するステップと、
リンク先のファイルが存在しないと判別されたとき、前記複数のファイル相互のリンクを解析するステップと、
前記ステップの解析結果に基づいてリンク先のハイパーリンクをサポートするファイルを生成するステップとからなるリンク先のファイルを動的に生成するプログラム。
【００７２】
【発明の効果】
本発明によれば、第１段階においては、例えば、インデックスファイルのみを生成するようにしたので、ファイルを生成するために要する時間を大幅に短縮できる。また、特定のインデックスファイルが選択された第２段階において、選択されたインデックスファイルにより指定されるリンク先のファイルが存在しない場合に、そのリンク先のハイパーリンクをサポートするファイルを生成するようにしたので、例えば、ユーザが違和感を感じないように短時間にハイパーリンクをサポートするファイルを生成して表示させることができる。この場合、選択されたインデックスファイルにより指定されるリンク先のファイルのみを生成すればよいので短時間でファイルを生成することができる。
【図面の簡単な説明】
【図１】実施の形態の情報処理装置の機能の説明図である。
【図２】  dump.hlmの一例を示す図である。
【図３】  ser.hlmの一例を示す図である。
【図４】  trace.hlmの一例を示す図である。
【図５】インデックスファイル作成処理のフローチャートである。
【図６】インデックスファイル作成処理の詳細なフローチャートである。
【図７】ファーストレベルのインデックスファイルを示す図である。
【図８】  java.lang.Stringのファイルを示す図である。
【図９】ファーストレベルのインデックスファイルの表示例を示す図である。
【図１０】  java.lang.Stringの表示例を示す図である。
【図１１】リンク先のＨＴＭＬ文書を作成する処理のフローチャートである。
【図１２】スタックトレースの生成処理のフローチャートである。
【図１３】スタックトレースのＨＴＭＬファイルを示す図である。
【図１４】スタックトレースの表示例を示す図である。
【図１５】チェーンの生成処理のフローチャートである。
【図１６】チェーンのＨＴＭＬファイルを示す図である。
【図１７】チェーンの表示例を示す図である。
【図１８】メンバーリストの生成処理を示すフローチャートである。
【図１９】メンバリストのＨＴＭＬファイルを示す図である。
【図２０】メンバリストの表示例を示す図である。
【図２１】実施の形態の情報処理装置のハードウェア構成を示す図である。
【符号の説明】
１１      情報処理装置
１２      メモリプロファイラ
１３      インデックスファイル
２０      表示部
２２      ＣＰＵ
２４      記憶装置
２５      ＲＡＭ
２６      記録媒体読み取り装置
２７      可搬記録媒体
３０      ネットワーク
【図１】
0003926721.tif 000002
【図２】
0003926721.tif 000003
【図３】
0003926721.tif 000004
【図４】
0003926721.tif 000005
【図５】
0003926721.tif 000006
【図６】
0003926721.tif 000007
【図７】
0003926721.tif 000008
【図８】
0003926721.tif 000009
【図９】
0003926721.tif 000010
【図１０】
0003926721.tif 000011
【図１１】
0003926721.tif 000012
【図１２】
0003926721.tif 000013
【図１３】
0003926721.tif 000014
【図１４】
0003926721.tif 000015
【図１５】
0003926721.tif 000016
【図１６】
0003926721.tif 000017
【図１７】
0003926721.tif 000018
【図１８】
0003926721.tif 000019
【図１９】
0003926721.tif 000020
【図２０】
0003926721.tif 000021
【図２１】
0003926721.tif 000022