JP4512402B2 - メモリリークの原因箇所検出方法、及びその実行プログラム - Google Patents

メモリリークの原因箇所検出方法、及びその実行プログラム Download PDF

Info

Publication number
JP4512402B2
JP4512402B2 JP2004116581A JP2004116581A JP4512402B2 JP 4512402 B2 JP4512402 B2 JP 4512402B2 JP 2004116581 A JP2004116581 A JP 2004116581A JP 2004116581 A JP2004116581 A JP 2004116581A JP 4512402 B2 JP4512402 B2 JP 4512402B2
Authority
JP
Japan
Prior art keywords
data
memory leak
cause
memory
program
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.)
Expired - Fee Related
Application number
JP2004116581A
Other languages
English (en)
Other versions
JP2005301660A (ja
Inventor
元樹 小幡
博泰 西山
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2004116581A priority Critical patent/JP4512402B2/ja
Priority to US11/103,565 priority patent/US20050268286A1/en
Publication of JP2005301660A publication Critical patent/JP2005301660A/ja
Priority to US12/635,135 priority patent/US8250539B2/en
Application granted granted Critical
Publication of JP4512402B2 publication Critical patent/JP4512402B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System (AREA)
  • Stored Programmes (AREA)

Description

本発明は、コンピュータのメモリに格納された複数のデータに関して、データ相互間の参照関係をたどることができる、Java言語等のプログラミング言語で記述されたプログラムの実行で発生したメモリリークの原因箇所検出方法、及びその実行プログラムに関する。
コンピュータプログラムが期待通りの性能を示さない原因の一つとして、プログラムが使用するデータ記憶領域が増え続けるメモリリークという現象が挙げられる。通常、プログラムを実行する際に生成されるデータは、ヒープ領域と呼ばれる記憶領域に配置される。ヒープ領域とは、プログラム実行中に使用されるメモリ領域の一種であり、プログラムに入力されたデータなど、格納領域の大きさが動的に決定されるデータの格納に利用される。データを格納する際には、格納するデータの大きさに基づいた格納用領域確保が必要であり、そのデータが不要になった際には、確保した格納用領域を解放する操作が必要である。確保した領域の解放操作が適切に行われなかった場合や、実行系から未解放データが見えなくなってしまった場合、プログラムが使用しているメモリ領域が増加し続ける状態、すなわちメモリリークが発生する。
このメモリリークの発生パターンは、大きく2種類に分けることができる。1つは、C言語やC++言語のように、領域解放の操作を明示的に行う言語におけるメモリリークであり、もう1つは、Java言語(Javaは米国Sun Microsystems, Inc.及びその他の国における商標または登録商標)のように領域解放を暗黙的に行う言語におけるメモリリークである。
C言語やC++言語のように、ヒープ領域における領域解放を明示的に指示する言語の場合、領域解放不足によるメモリリークがある。また、ヒープ領域内のデータ格納領域への参照を保持しているフィールドに対して、領域解放前に誤って別の参照を代入した際に、ヒープ領域内に確保されていたデータ格納領域への参照が消滅してしまうことによるメモリリークもある。これを解決する方法として、以下の非特許文献1に記載されているように、プログラム実行中のデータ領域確保および解放を監視し、解放されていない領域をメモリリークの原因データと見なし、その発生箇所を特定するための技術や、また、以下の非特許文献2に記載されているように、コンパイル時の静的なポインタ解析によってメモリリークを防止する技術がある。
一方、Java言語のようにデータ領域解放を暗黙的に行うプログラミング言語では、不要になったデータ格納用領域を回収するガベージコレクション機能が利用可能であることが多い。Java言語によるプログラムは、一旦、中間言語によるプログラムに変換され、この中間言語によるプログラムが、仮想マシン上で実行される。このJava言語によるプログラムでは、このプログラム中でメモリ領域の解放を指定することはなく、仮想マシンに備わっているガベージコレクション機能により、不必要なデータが回収される。前述したデータ領域の暗黙的解放とは、このように、Java言語によるプログラム自体に、メモリ領域の解放が指定されておらず、ガベージコレクション機能等によりデータの領域が解放されることである。このガベージコレクション機能は、データの参照関係から外れたデータを回収する機能であるため、不必要になったデータに対して、プログラムミスによってプログラム作成者が予期しない参照が生じている場合には、ガベージコレクション機能による回収対象にならず、不要なデータがメモリ中で増え続けるメモリリークが発生してしまう。すなわち、ガベージコレクション機能では、たとえ、ユーザにとって不必要なデータであっても、データ参照関係があるデータに関しては、データ回収の対象にならない。
以上のように、Java言語のようなプログラミング言語では、データ領域の解放操作が非明示的であるため、プログラム中でリーク発生原因箇所を特定することは極めて困難である関係上、C言語やC++言語で用いたメモリリーク発生箇所検出手法を用いることできない。そのため、Java言語によるプログラムに関してメモリリークが疑われる際には、例えば、特許文献1,2に記載されているように、メモリ中で使用量が増加しているデータ群を示す技術や、非特許文献3に記載されているように、データ群から選択したあるデータに関する参照関係を図示することによって、メモリリーク発生箇所の発見を補助するための方法が開発されている。
RATIONAL Software, "Purify: Fast Detection of Memory Leaks and Access Errors", Purify Product Information White Papers. David L. Heine and Monica S. Lam, "A Practical Flow-Sensitive and Context Sensitive C and C++ Memory Leak Detector", Proc. of the ACM SIGPLAN 2003 conference on Programming language design and implementation, 2003 United States Patent 6,167,535 United States Patent 6,370,684 Wim De Pauw and Gary Sevitsky, "Visualizing Reference Patterns for Solving Memory Leaks in Java", Proc. of the 13th European Conference on Object-Oriented Programming, 1999
Java言語のように、データ領域解放を暗黙的に行う言語を用いたプログラムの実行で発生するメモリリークに対して、従来技術では、前述の特許文献1,2のように、メモリ中で使用量が増加しているデータ群を示すか、前述の非特許文献2のように、データ群から選択したあるデータに関する参照関係を図示するにとどまっている上に、多くの場合、メモリリークが疑われるデータは1つではないことが多く、しかも、データの参照関係も膨大な数であるため、メモリリーク発生源の調査が非常に困難な作業となっているという問題点がある。
本発明は、以上の従来技術の問題点に着目し、データ領域解放を明示しない言語を用いたプログラムの実行で発生するメモリリークに対して、メモリリーク発生源の調査にかかる労力を減らすことができるメモリリークの原因箇所検出方法、及びその実行プログラムを提供することを目的とする。
前記目的を達成するためのメモリリークの原因箇所検出方法に係る第一の発明は、
コンピュータのメモリに格納された複数のデータに関して、データ相互間の参照関係をたどることができるプログラム言語であって、前記複数のデータを格納するメモリ領域を非明示的に解放するプログラミング言語で記述されたプログラムの実行で発生したメモリリークの原因箇所検出方法において、
前記コンピュータ内の制御部が、
前記メモリに格納された複数のデータに関して、データ相互間の参照関係を把握する第1関係把握工程と、
前記第関係把握工程の後、前記メモリに格納された複数のデータに関して、データ相互間の参照関係を把握する第2関係把握工程と、
前記第2関係把握工程で参照関係が把握された複数のデータのうちから、前記第1関係把握工程で参照関係が把握された複数のデータ中に存在していなかった1以上の増加データを抽出する増加データ抽出工程と、
前記増加データ抽出工程で抽出された1以上の前記増加データ毎に、各増加データのデータサイズに応じた重みを付け、参照先の下位データから、順次、参照元の上位データに該重みを順次伝播させ、該重みの伝播過程で、複数の下位データに対して一の上位データが参照関係を成しているときには、該複数の下位データの重みを加算して、該一の上位データの重みとし、各データの重みをメモリリーク発生原因になっている可能性を示す危険度とする重み付け工程と
実行することを特徴とする。
メモリリークの原因箇所検出方法に係る第二の発明は、
メモリリークの原因箇所検出方法に係る第一の発明において、
前記制御部が、前記重み付け工程において、更に、
前記増加データ抽出工程で抽出した1以上の前記増加データをデータ種類毎に分類し、種類ごとに分類されたデータの総サイズに応じた重みを求め、前記重み付け工程での重みの伝播過程において利用する各増加データの重みとして、該データの種類に対応する前記分類過程で求めた重みを用いて、当該重み付け工程を実行することを特徴とする。
メモリリークの原因箇所検出方法に係る第三の発明は、
メモリリークの原因箇所検出方法に係る第一又は第二の発明において、
前記制御部が、
前記参照関係を成す複数のデータの各重みのうちで、最も大きな重みのデータが複数存在し、且つ最も大きな重みの複数のデータが上位データと下位データとの関係を成す際には、該下位データの方をメモリリーク発生原因の可能性が高いものとして抽出する最危険データ抽出工程をさらに実行することを特徴とする。
メモリリーク原因箇所検出方法に係る第四の発明は、
メモリリークの原因箇所検出方法に係る第一から第三の発明のいずれかにおいて、
前記制御部が、
前記メモリの使用量を複数回調査し、複数回の調査結果からメモリリークが発生しているか否かを判断するメモリリーク検出工程をさらに実行し
前記制御部が、
前記第2関係把握工程、前記メモリリーク検出工程でメモリリークが発生しているか否かの判断処理と並行して、又は、前記メモリリーク検出工程でメモリリークが発生していると判断された後に実行することを特徴とする。
メモリリークの原因箇所検出方法に係る第五の発明は、
メモリリーク原因箇所検出方法に係る第一からの第四の発明のいずれかにおいて、
前記制御部が、
前記プログラムから、メモリリーク発生原因になっている可能性の高いデータが記述されている箇所を抽出するプログラム原因箇所抽出工程をさらに実行することを特徴とする。
前記目的を達成するためのメモリリーク原因箇所検出プログラムに係る第の発明は、
コンピュータ内の制御部に、当該コンピュータ内のメモリに格納された複数のデータに関して、データ相互間の参照関係をたどることができるプログラム言語であって、前記複数のデータを格納するメモリ領域を非明示的に解放するプログラミング言語で記述されたプログラムの実行で発生したメモリリークの原因箇所を検出する機能を実行させるメモリリークの原因箇所検出プログラムにおいて、
前記制御部に、
前記メモリに格納された複数のデータに関して、データ相互間の参照関係を把握する第1関係把握工程と、
前記第関係把握工程の後、前記メモリに格納された複数のデータに関して、データ相互間の参照関係を把握する第2関係把握工程と、
前記第2関係把握工程で参照関係が把握された複数のデータのうちから、前記第1関係把握工程で参照関係が把握された複数のデータ中に存在していなかった1以上の増加データを抽出する増加データ抽出工程と、
前記増加データ抽出工程で抽出された1以上の前記増加データ毎に、各増加データのデータサイズに応じた重みを付け、参照先の下位データから、順次、参照元の上位データに該重みを伝播させ、該重みの伝播過程で、複数の下位データに対して一の上位データが参照関係を成しているときには、該複数の下位データの重みを加算して、該一の上位データの重みとし、各データの重みをメモリリーク発生原因になっている可能性を示す危険度とする重み付け工程と
を実行させることを特徴とする。
メモリリークの原因箇所検出プログラムに係る第の発明は、
メモリリークの原因箇所検出プログラムに係る第の発明において、
前記制御部に、
前記参照関係を成す複数のデータの各重みのうちで、最も大きな重みのデータが複数存在し、且つ最も大きな重みの複数のデータが上位データと下位データとの関係を成す際には、該下位データの方をメモリリーク発生原因の可能性が高いものとして抽出する最危険データ抽出工程をさらに実行させることを特徴とする。
メモリリーク原因箇所検出方法に係る第の発明は、
メモリリークの原因箇所検出プログラムに係る第又は第の発明において、
前記制御部に、
前記メモリの使用量を複数回調査し、複数回の調査結果からメモリリークが発生しているか否かを判断するメモリリーク検出工程をさらに実行させ
前記制御部に、
前記第2関係把握工程、前記メモリリーク検出工程でメモリリークが発生しているか否かの判断処理と並行して、又は、前記メモリリーク検出工程でメモリリークが発生していると判断された後に実行させることを特徴とする。
メモリリークの原因箇所検出プログラムに係る第の発明は、
メモリリーク原因箇所検出プログラムに係る第から第の発明のいずれかにおいて、
前記制御部に、
前記プログラムから、前記危険度の高いデータが記述されている箇所を抽出するプログラム原因箇所抽出工程をさらに実行させることを特徴とする。
メモリリークの原因箇所検出プログラムに係る第の発明は、
メモリリークの原因箇所検出プログラムに係る第から第の発明のいずれかにおいて、
前記コンピュータは、表示装置と接続され、
前記制御部に、
前記重み付け工程の結果を少なくとも前記表示装置に表示する表示工程をさらに実行させることを特徴とする。
メモリリークの原因箇所検出プログラムに係る第十一の発明は、
メモリリークの原因箇所検出プログラムに係る第の発明において、
前記制御部に、前記表示工程において
前記第2関係把握工程で把握された複数のデータを、参照関係が分かるように表示すると共に、該複数のデータ毎の危険度を表示させることを特徴とする。
メモリリークの原因箇所検出プログラムに係る第十二の発明は、
メモリリークの原因箇所検出プログラムに係る第の発明において、
前記制御部に、
前記危険度の高いデータのデータ名、該データのデータ種宣言、前記プログラム言語で記載された前記プログラム中の該データの記載箇所を表示する表示工程をさらに実行させることを特徴とする。
本発明によれば、参照関係を成している複数のデータに重みを付け、この重みをメモリリーク発生原因になっている可能性を示す危険度としているので、メモリリーク発生源となっているデータを特定し易くなり、メモリリーク発生源の調査にかかる労力を減らすことができる。
以下、本発明に係るメモリリーク原因箇所検出方法の一実施形態について、図面を用いて説明する。
図1は、本実施形態のメモリリーク原因箇所検出方法を実行するコンピュータ100の構成を示す図である。
このコンピュータ100は、ネットワーク1に接続されたサーバである。このサーバ100は、各種処理を実行するプロセッサ110と、プロセッサ110が実行する各種プログラム131,135が記憶されるプログラムメモリ130と、各種データが格納されるデータメモリ140と、外部記憶装置120と、表示装置150と、ネットワーク1を介して他の装置と通信するためのインタフェース160と、を備えている。
外部記憶装置120には、このサーバ100が提供するWebサービスを実行するプログラム121が格納されている。このプログラム121は、Java言語で記述されている。
プログラムメモリ130には、外部記憶装置120に格納されているJava言語のプログラム121が中間言語に変換されたプログラム131と、このプログラム131の実行により生じるメモリリークの原因箇所を検出するプログラム135とが格納されている。
プロセッサ110は、機能的には、外部記憶装置120に格納されているプログラム121をJava言語から中間言語に変換する変換部112と、中間言語で記述されたプログラム131を実行する仮想マシン111と、リーク原因箇所検出プログラム135の実行で機能するリーク原因箇所検出部115と、を有している。なお、変換部112及び仮想マシン111も、プログラムメモリ130中に格納されているプログラム(図示されていない。)を実行することで機能する。この仮想マシン111には、従来技術の欄で述べたガベージコレクション機能が設けられている。このガベージコレクション機能により、データメモリ140から不要なデータが回収される。リーク原因箇所検出部115は、データメモリ140のメモリ使用量を監視してメモリリークを検出するメモリリーク検出部116と、データメモリ140内のヒープ領域に格納されている複数のデータのリーク危険度を求めるリーク危険度算出部117と、検査対象プログラム121,131中から危険度の高いデータが記述されている箇所を抽出するプログラム原因箇所抽出部118と、以上の各部での結果等を表示装置150に表示させる表示部119と、を有している。
なお、この実施形態では、プログラムが格納されるプログラムメモリ130とデータが格納されるデータメモリ140とがあるが、本発明では、メモリ中にプログラム領域及びデータ領域があればよく、これらの領域毎にメモリが存在する必要性はない。また、ここでは、1つのコンピュータ100内で、検査対象プログラム121,131とリーク原因箇所検出プログラム135とを実行するようにしているが、それぞれのプログラムを異なるコンピュータで実行するようにしてもよい。
次に、図2に示すフローチャートに従って、メモリリーク検出部116の動作について説明する。
メモリリーク検出部116は、データメモリ140の使用量の調査をn回実行し(S11,S12)、このn回の調査結果からデータメモリ140にメモリリークが発生しているか否かを判断する(S13)。メモリリークが発生していないと判断した場合には、処理を終了し、メモリリークが発生していると判断した場合には、リーク危険度算出部117にその旨を通信して(S14)、処理を終了する。
このn回の調査結果からデータメモリ140にメモリリークが発生しているか否かを判断方法は、各種方法が考えられる。例えば、図3に示すように、n回の調査のうちの最初のm回の調査における使用量平均値AVE0と、後のm回の調査における使用量平均値AVE1との差Saが予め定められた値より大きい場合には、メモリリークが発生していると判断してもよい。なお、同図中の縦軸はメモリ使用量を示し、横軸は調査時刻を示している。
また、n回の調査のうちで最初の極大値T0と、最後の極小値Bnとの差Sbが予め定められた値より大きい場合には、メモリリークが発生していると判断してもよい。
次に、図4に示すフローチャートに従って、リーク危険度算出部117の動作について説明する。
リーク危険度算出部117は、まず、データメモリ140のヒープ領域内に格納されている全てのデータに関して、データ相互関係の参照関係を把握する(S21)。続いて、その後、再び、データメモリ140のヒープ領域内に格納されている全てのデータに関して、データ相互関係の参照関係を把握する(S22)。検査対象プログラム135の実行で、データメモリ140のヒープ領域に格納される各データ141は、図5に示すように、そのデータ本体であるペイロードフィールド142と、次のデータの先頭アドレスを示す参照関係フィールド143を有しており、リーク危険度算出部117は、この参照関係フィードに格納されている次のデータの先頭アドレスから、データ相互間の参照関係を把握する。
ここで、第一回目の参照関係把握工程(S21)では、例えば、図6(a)に示すように、データAがデータB,Bを参照し、データBがデータCを参照し、データBがデータDを参照し、このデータDがデータE,Eを参照していると把握したとする。なお、同図において、円はデータを示し、円の右下の通知はデータサイズを示している。また、同一アルファベットで示されるデータは、同種のデータ、つまり、Java言語では、所属するクラスが同じデータであることを示している。例えば、データE,Eは、同じE種のデータであることを示している。また、第二回目の参照関係把握工程(S22)では、同図(b)に示すように、第一回目の参照関係把握工程(S21)で把握されたデータBが新たにデータCを参照し、データDが新たにデータE,Eを参照していると把握したとする。
ところで、第一回目の参照関係把握工程(S21)は、例えば、図2に示すメモリ使用量の調査工程(S11)の初回の実施タイミングに併せて実行する。また、第二回目の参照関係把握工程(S22)は、図2に示すリーク危険度算出部への通知工程(S14)の実行により、メモリリークが発生している旨の通知を受けてから実行する。なお、ここでは、メモリリークが発生している旨の通知を受けてから、第二回目の参照関係把握工程(S22)を実行しているが、図2に示すn回のメモリ使用量の調査工程(S11,S12)毎に、参照関係把握工程を実行し、初回の参照関係把握工程を第一回目の参照関係把握工程とし、メモリリークが発生している旨の通知を受けたときの参照関係把握工程を第二回目の参照工程把握工程としてもよい。また、ここでは、メモリリーク検出部116でメモリリークの検出を行っているが、このリーク検出を実行せずに、第一回目の参照関係把握工程(S21)の後、予め定められた期間後に第二回目の参照関係把握工程(S22)を実行してもよい。この予め定められた期間としては、本実施形態のように、検査対象プログラムがWebサービス提供プログラムで、極めて長期間継続的に実行させるものでは、例えば、三日、さらには一週間等の期間が考えられる。
リーク危険度算出部117は、第二回目の参照関係把握工程(S22)が終了すると、第二回目の参照関係把握工程(S22)で把握した参照関係を成す複数のデータのうちで、第一回目の参照関係把握工程(S21)で把握した参照関係を成す複数のデータから新たに増加したデータを抽出し、この増加したデータに重みを付ける(S23)。
ここで、この新たに増加したデータの抽出、及び重み付け(S23)の手順について、図7に示すフローチャートに従って説明する。
リーク危険度算出部117は、まず、前述の第一回目の参照関係把握工程(S21)で参照関係を把握した複数のデータを走査し(S31)、続いて、前述の第二回目の参照関係把握工程(S22)で参照関係を把握した複数のデータを走査する(S32)。この第二回目の参照関係把握工程で参照関係を把握したデータの走査の際には、先ず、第二回目の参照関係把握工程で参照関係を把握した複数のデータのうちから、1つのデータを選択し(S41)、このデータが第一回目の参照関係把握工程で参照関係を把握した複数のデータのうちで同じものがあるか否か、つまり新しいデータであるか否かを判断する(S42)。このデータが新しいデータでなければ、再び、ステップ41に戻り、新しいデータであれば、このデータの種類を取得する(S43)。ここで、データの種類とは、データ相互間に一定の関係を有するデータのまとまりで、前述したように、Java言語では、所属するクラスに相当する。そして、データ種別毎にデータサイズを合計し(S44)、未走査のデータがあるか否かを判断し(S45)、未走査のデータがあればS41に戻り、未走査のデータがなければ終了する。
第二回目の参照関係把握工程で参照関係を把握したデータの走査(S32)が終了すると、図8に示すように、新たに増加したデータとして、データC及びデータE,Eが抽出され、これらのデータがデータC種のまとまりとデータE種のまとまりに分類され、各データ種の合計データサイズが取得される。具体的には、データC種としてデータCがまとめられ、データE種としてデータE,Eがまとめられる。そして、データC種の合計データサイズとして「2」が取得され、データE種の合計データサイズとして「10(=5+5)」が取得される。なお、同図において、各データの左下に付されている数値がデータサイズを示している。
リーク危険度算出部117は、続いて、増加データ種のデータサイズの小さい順に、各データ種に順位をつける(S33)。ここでは、図8に示すように、増加データ種C,Eのうちで、合計データサイズの小さい方のデータ種Cが1位となり、データ種Eが2位となる。
次に、リーク危険度算出部117は、増加データ種C,E毎に、それらの順位に応じた重みを付けて(S34)、増加データの抽出及び各増加データへの重み付け工程(S23)が終了する。各増加データ種へ付ける重みは、具体的には、図9中の重み例1のように、S33で付けた順位をそのまま重みとして付ける。なお、このように、順位をそのまま重みとしてもよいが、同図中の重み例2のように、データサイズ比を重みとしてもよい。すなわち、データサイズに応じて、データサイズが大きいものには大きな重みを付け、データサイズが小さいものには小さな重みを付ければよい。また、ここでは、データ種別に分類して、各データ種毎に重みを付けているが、データ種別に分類せずに、各データ毎に重みを付けてもよい。
S23の工程が終了すると、図4のフローチャートに示すように、第二回目の参照関係把握工程(S22)で把握した全てのデータに重みを付ける(S24)。すなわち、最下位の増加データの重みを、参照元である上位データに順次伝播させて行く。
具体的には、図10のフローチャートに示すように、リーク危険度算出部117は、先ず、第二回目の参照関係把握工程(S22)で把握した全てのデータの集合を取得し(S51)、このデータの集合から後続データのないデータを1つ取得する(S52)。
続いて、この取得したデータが最上位データであるか否かを判断し(S53)、最上位データであれば、S56へ進み、最上位データでなければ、そのデータの重みを、そのデータの参照元である上位のデータに加算する(S54)。そして、そのデータと上位データとの参照関係を除去した後(S55)、データの集合が空になったか否かを判断し(S56)、空になっていれば処理を終了し、空になっていなければ、S52に戻る。S52では、前述したように、データの集合から後続データのないデータを1つ取得する。この場合、先に実行したS55の処理で、最下位の増加データとこれに対する上位データとの参照関係が除去され、この上位データが後続データのないデータとなるので、このデータが取得される。すなわち、S52〜S56の処理を繰り返すことにより、増加データの重みが順次、上位データに伝播して行く。
例えば、図11に示すように、S52の処理で、データCを取得した場合には、このデータCの参照元の上位データであるデータBにデータCの重み「1」を加えて、データBの重みを「1」にする。なお、同図において、各データの右上に付されている数値が重みを示している。また、S52の処理で、データEを取得した場合には、このデータEの参照元の上位データであるデータDにデータEの重み「2」を加える。そして、再度のS52の処理で、データEを取得した場合には、このデータEの参照元の上位データであるデータDにデータEの重み「2」を加える。結局、上位データDに対しては、データEの重み「2」とデータEの重み「2」とが加えられるので、上位データDの重みは「4」となる。さらに、S52の処理で、データDを取得した場合には、このデータDの上位データであるデータBにデータDの重み「4」を加えて、データBの重みを「4」にする。最上位のデータAの重みは、参照先の下位データであるデータB,Bの重みが加えられるので、「5」となる。
S24が終了すると、リーク危険度算出部117は、図4のフローチャートに示すように、最大重みのデータが2以上あるか否かを判断する(S25)。最大重みのデータが2以上ない、つまり最大重みのデータが1つの場合には、このデータを、メモリリーク発生に関する最大危険度のデータとする(S26)。具体的には、図11に示すように、最大重み「5」のデータが最上位のデータAのみである場合には、このデータAを最大危険度のデータとする。また、最大重みのデータが2以上ある場合には、これらのデータのうちで最下位のデータを最大危険度のデータとする(S27)。具体的には、図12に示すように、最上位のデータAの参照先のデータとして、データBのみしかなく、データD、データB、データAの全ての危険度が4の場合には、これらのデータのうち、最下位のデータDを最大危険度のデータとする。
最大危険度のデータを求めると(S26,27)、最大危険度のデータ名及びその危険度、二番目に危険度の高いデータのデータ名及びその危険度、三番目に危険度の高いデータのデータ名及びその危険度を、プログラム原因箇所抽出部118と表示部119に通知する。表示部119には、さらに、第二回目の参照関係把握工程(S22)で把握した全てのデータと、各データ相互の参照関係を通知する(S28)。
次に、プログラム原因箇所抽出部118の動作について、図13に示すフローチャートに従って説明する。
プログラム原因箇所抽出部118は、リーク危険度算出部117から最大危険度のデータ名及びその危険度等の通知を受けると、動作を開始し、プログラムメモリ130に格納されている中間言語で記述されている検査対象プログラム131中から、最大危険度のデータ名のデータが生成又は代入される箇所を抽出する(S61)。この中間言語で記述されている検査対象プログラム131には、Java言語で記述されている検査対象プログラム121中の対応箇所の行番号が記述されているので、中間言語で記述されている検査対象プログラム131から該当箇所を抽出した後、この該当箇所の傍に設定されている行番号デーブルから、Java言語で記述されている検査対象プログラム121中の対応箇所の行番号を取得する(S62)。次に、リーク危険度算出部117から通知された全てのデータに関して、その代入又は生成箇所の行番号を取得したか否かを判断し、全てのデータに関して行番号を取得していれば、S64に進み、行番号を取得していないデータが残っていれば、S61に戻る。S64では、全てのデータに関するそれぞれの行番号を表示部119に通知する。
表示部119は、以上のように、リーク危険度算出部117、プログラム原因箇所抽出部118から通知された情報を、表示装置150に表示する。
具体的に、表示装置150には、図14に示すように、リーク危険度ランキングウィンドウ160と、参照関係ウィンドウ170と、ソースコードウィンドウ180とが表示される。
リーク危険度ランキングウィンドウ160には、リーク危険度算出部117から通知された危険度が上位3位までのデータに関する、順位及び危険度161と、宣言クラス162と、データ名163と、データの所属クラス164と、該当データが記述されているプログラムソース名及び行番号165とが表示される。なお、図14に示す例では、上から危険度が大きい順に並んでいるが、危険度の小さい順や、名前別などの表示も可能である。
参照関係ウィンドウ170には、リーク危険度検出部117から通知された、第二回目の参照関係把握工程で把握した全てのデータ及び各データ相互の参照関係を示す図が表示される。この参照関係図では、リーク危険度ランキングウィンドウ160で指定されたデータの強調表示171が行われる。また、参照関係を示すノード間の線172は、危険度に応じた太さで表示される。また、リーク危険度ランキングウィンドウ160で表示されたデータ173に関しては、他のランキング外のデータと区別するために異なる色等で表示される。また、ここでは、図示していないが、データを示すノードの傍に、リーク危険度算出117で求められた危険度の数値を表示してもよい。
ソースコードウィンド180には、リーク危険度ランキングウィンドウ160で指定されたデータに関する、Java言語で記述されている検査対象プログラム121中の該当行181、及びこの行の近傍行が表示される。これらの行の内容は、外部記憶装置120に記憶されているJava言語の検査対象プログラム121から抽出される。該当行181は、他の行と区別するために強調表示される。ここでは、リーク危険度ランキングウィンドウ160で、危険度ランキングが3位のデータ名「vec」が指定されているので、データ名「vec」が使用される行181が強調表示される。
システム管理者は、以上の表示内容を見て、例えば、Java言語で記述されている検査対象プログラム121の該当箇所に関して、配列クラスから該当要素データを外す、又は、該当要素データの参照関係を断ち切る等のプログラム変更処理を行うことになる。なお、参照関係が断ち切られたデータは、前述のガベージコレクション機能によりデータメモリ140から回収される。
以上のように、本実施形態では、リーク危険度の高いデータが、危険度という数値と併せて表示されると共に、そのデータの参照関係図や、Java言語で記述されている検査対象プログラム121中のリーク危険度の高いデータが使用される行が表示されるので、メモリリーク発生源になっているデータを特定し易い上に、プログラム121中から対応箇所を探し出す手間を省くことができ、メモリリーク発生源の調査にかかる労力を大幅に減らすことができる。
なお、以上の実施形態では、Java言語で記述されたプログラムを対象にしているが、本発明はこれに限定されるものではなく、メモリ内の領域の確保及び解放を明示的に行わず、メモリに格納された複数のデータに関して、データ相互間の参照関係をたどることができる言語で記述されたプログラムであれば、いかなる言語で記述されたプログラムであっても、本発明の対象となる。
本発明に係る一実施形態におけるコンピュータの構成を示す説明図である。 本発明に係る一実施形態におけるメモリリーク検出部の動作を示すフローチャートである。 時間経過に伴うメモリ使用量の変化を示す説明図である。 本発明に係る一実施形態におけるリーク危険度算出部の動作を示すフローチャートである。 本発明に係る一実施形態におけるデータメモリ中のデータ格納状態を示す説明図である。 本発明に係る一実施形態における参照関係把握工程で把握された参照関係を示す説明図で、同図(a)は第1回の参照関係把握工程で把握された参照関係を示し、同図(b)は第2回の参照関係把握工程で把握された参照関係を示している。 図4のフローチャート中のS23の詳細フローチャートである。 本発明に係る一実施形態における増加データの抽出、及びその順位付けを示す説明図である。 本発明に係る一実施形態における各増加データ毎の重みの例を示す説明図である。 図4のフローチャート中のS24の詳細フローチャートである。 本発明に係る一実施形態における参照関係を有する各データへの重み付けについて説明するための説明図(その1)である。 本発明に係る一実施形態における参照関係を有する各データへの重み付けについて説明するための説明図(その2)である。 本発明に係る一実施形態におけるプログラム原因箇所抽出部の動作を示すフローチャートである。 本発明に係る一実施形態における情報表示例を示す説明図である。
符号の説明
1…ネットワーク、100…サーバ、110…プロセッサ、111…仮想プロセッサ、112…変換部、115…リーク原因箇所検出部、116…メモリリーク検出部、117…リーク危険度算出部、118…プログラム原因箇所抽出部、119…表示部、120…外部記憶装置、121…検査対象プログラム(Java言語での記述)、130…プログラムメモリ、131…検査対象プログラム(中間言語での記述)、135…リーク原因箇所検出プログラム、140…データメモリ、150…表示装置。

Claims (20)

  1. コンピュータのメモリに格納された複数のデータに関して、データ相互間の参照関係をたどることができるプログラム言語であって、前記複数のデータを格納するメモリ領域を非明示的に解放するプログラミング言語で記述されたプログラムの実行で発生したメモリリークの原因箇所検出方法において、
    前記コンピュータ内の制御部が、
    前記メモリに格納された複数のデータに関して、データ相互間の参照関係を把握する第1関係把握工程と、
    前記第関係把握工程の後、前記メモリに格納された複数のデータに関して、データ相互間の参照関係を把握する第2関係把握工程と、
    前記第2関係把握工程で参照関係が把握された複数のデータのうちから、前記第1関係把握工程で参照関係が把握された複数のデータ中に存在していなかった1以上の増加データを抽出する増加データ抽出工程と、
    前記増加データ抽出工程で抽出された1以上の前記増加データ毎に、各増加データのデータサイズに応じた重みを付け、参照先の下位データから、順次、参照元の上位データに該重みを順次伝播させ、該重みの伝播過程で、複数の下位データに対して一の上位データが参照関係を成しているときには、該複数の下位データの重みを加算して、該一の上位データの重みとし、各データの重みをメモリリーク発生原因になっている可能性を示す危険度とする重み付け工程と
    実行することを特徴とするメモリリークの原因箇所検出方法。
  2. 請求項1に記載のメモリリークの原因箇所検出方法において、
    前記制御部が、前記重み付け工程において、更に、
    前記増加データ抽出工程で抽出した1以上の前記増加データをデータ種類毎に分類し、種類ごとに分類されたデータの総サイズに応じた重みを求め、前記重み付け工程での重みの伝播過程において利用する各増加データの重みとして、該データの種類に対応する前記分類過程で求めた重みを用いて、当該重み付け工程を実行することを特徴とするメモリリークの原因箇所検出方法。
  3. 請求項1又は2に記載のメモリリークの原因箇所検出方法において、
    前記制御部が、
    前記参照関係を成す複数のデータの各重みのうちで、最も大きな重みのデータが複数存在し、且つ最も大きな重みの複数のデータが上位データと下位データとの関係を成す際には、該下位データの方をメモリリーク発生原因の可能性が高いものとして抽出する最危険データ抽出工程をさらに実行することを特徴とするメモリリーク原因箇所検出方法。
  4. 請求項1から3のいずれか一項に記載のメモリリークの原因箇所検出方法において、
    前記制御部が、
    前記メモリの使用量を複数回調査し、複数回の調査結果からメモリリークが発生しているか否かを判断するメモリリーク検出工程をさらに実行し
    前記制御部が、
    前記第2関係把握工程、前記メモリリーク検出工程でメモリリークが発生しているか否かの判断処理と並行して、又は、前記メモリリーク検出工程でメモリリークが発生していると判断された後に実行することを特徴とするメモリリークの原因箇所検出方法。
  5. 請求項4に記載のメモリリークの原因箇所検出方法において、
    前記制御部が、前記メモリリーク検出工程において
    複数回の調査のうちで、一の調査時のメモリ使用量に対して、該一の調査以降の調査時のメモリ使用量が予め定められた増加量以上に増加しているときには、メモリリークが発生していると判断することを特徴とするメモリリークの原因箇所検出方法。
  6. 請求項1から5のいずれか一項に記載のメモリリーク原因箇所検出方法において、
    前記制御部が、
    前記プログラムから、メモリリーク発生原因になっている可能性の高いデータが記述されている箇所を抽出するプログラム原因箇所抽出工程をさらに実行することを特徴とするメモリリークの原因箇所検出方法。
  7. 請求項6に記載のメモリリークの原因箇所検出方法において、
    前記プログラミング言語で記述された前記プログラムは、中間言語に変換されて実行されるプログラムであり、
    前記制御部が、前記プログラム原因箇所抽出工程において
    前記中間言語に変換された前記プログラムから、前記メモリリーク発生原因になっている可能性の高いデータが記述されている箇所を見出し、前記プログラム言語で記述された前記プログラムから該箇所と対応する個所を抽出することを特徴とするメモリリークの原因箇所検出方法。
  8. 請求項1から7のいずれか一項に記載のメモリリークの原因箇所検出方法において、
    前記コンピュータは、表示装置と接続され、
    前記制御部が、
    前記重み付け工程の結果を少なくとも前記表示装置に表示する表示工程をさらに実行することを特徴とするメモリリークの原因箇所検出方法。
  9. コンピュータ内の制御部に、当該コンピュータ内のメモリに格納された複数のデータに関して、データ相互間の参照関係をたどることができるプログラム言語であって、前記複数のデータを格納するメモリ領域を非明示的に解放するプログラミング言語で記述されたプログラムの実行で発生したメモリリークの原因箇所を検出する機能を実行させるメモリリークの原因箇所検出プログラムにおいて、
    前記制御部に、
    前記メモリに格納された複数のデータに関して、データ相互間の参照関係を把握する第1関係把握工程と、
    前記第関係把握工程の後、前記メモリに格納された複数のデータに関して、データ相互間の参照関係を把握する第2関係把握工程と、
    前記第2関係把握工程で参照関係が把握された複数のデータのうちから、前記第1関係把握工程で参照関係が把握された複数のデータ中に存在していなかった1以上の増加データを抽出する増加データ抽出工程と、
    前記増加データ抽出工程で抽出された1以上の前記増加データ毎に、各増加データのデータサイズに応じた重みを付け、参照先の下位データから、順次、参照元の上位データに該重みを伝播させ、該重みの伝播過程で、複数の下位データに対して一の上位データが参照関係を成しているときには、該複数の下位データの重みを加算して、該一の上位データの重みとし、各データの重みをメモリリーク発生原因になっている可能性を示す危険度とする重み付け工程と
    を実行させることを特徴とするメモリリークの原因箇所検出プログラム。
  10. 請求項9に記載のメモリリークの原因箇所検出プログラムにおいて、
    前記制御部に、前記重み付け工程において、更に、
    前記増加データ抽出工程で抽出した1以上の前記増加データをデータ種類毎に分類し、種類ごとに分類されたデータの総サイズに応じた重みを求め、前記重み付け工程での重みの伝播過程において利用する各増加データの重みとして、該データの種類に対応する前記分類過程で求めた重みを用いて、当該重み付け工程を実行させることを特徴とするメモリリークの原因箇所検出プログラム。
  11. 請求項9又は10に記載のメモリリークの原因箇所検出プログラムにおいて、
    前記制御部に、
    前記参照関係を成す複数のデータの各重みのうちで、最も大きな重みのデータが複数存在し、且つ最も大きな重みの複数のデータが上位データと下位データとの関係を成す際には、該下位データの方をメモリリーク発生原因の可能性が高いものとして抽出する最危険データ抽出工程をさらに実行させることを特徴とするメモリリーク原因箇所検出プログラム
  12. 請求項9から11のいずれか一項に記載のメモリリークの原因箇所検出プログラムにおいて、
    前記制御部に、
    前記メモリの使用量を複数回調査し、複数回の調査結果からメモリリークが発生しているか否かを判断するメモリリーク検出工程をさらに実行させ
    前記制御部に、
    前記第2関係把握工程、前記メモリリーク検出工程でメモリリークが発生しているか否かの判断処理と並行して、又は、前記メモリリーク検出工程でメモリリークが発生していると判断された後に実行させることを特徴とするメモリリークの原因箇所検出プログラム。
  13. 請求項12に記載のメモリリークの原因箇所検出プログラムにおいて、
    前記制御部に、前記メモリリーク検出工程において
    複数回の調査のうちで、一の調査時のメモリ使用量に対して、該一の調査以降の調査時のメモリ使用量が予め定められた増加量以上に増加しているときには、メモリリークが発生していると判断させることを特徴とするメモリリークの原因箇所検出プログラム。
  14. 請求項9から13のいずれか一項に記載のメモリリーク原因箇所検出プログラムにおいて、
    前記制御部に、
    前記プログラムから、前記危険度の高いデータが記述されている箇所を抽出するプログラム原因箇所抽出工程をさらに実行させることを特徴とするメモリリークの原因箇所検出プログラム。
  15. 請求項14に記載のメモリリークの原因箇所検出プログラムにおいて、
    前記プログラミング言語で記述された前記プログラムは、中間言語に変換されて実行されるプログラムであり、
    前記制御部に、前記プログラム原因箇所抽出工程において
    前記中間言語に変換された前記プログラムから、前記危険度の高いデータが記述されている箇所を見出し、前記プログラム言語で記述された前記プログラムから該箇所と対応する個所を抽出させることを特徴とするメモリリークの原因箇所検出プログラム。
  16. 請求項9から15のいずれか一項に記載のメモリリークの原因箇所検出プログラムにおいて、
    前記コンピュータは、表示装置と接続され、
    前記制御部に、
    前記重み付け工程の結果を少なくとも前記表示装置に表示する表示工程をさらに実行させることを特徴とするメモリリークの原因箇所検出プログラム。
  17. 請求項16に記載のメモリリークの原因箇所検出プログラムにおいて、
    前記制御部に、前記表示工程において
    前記第2関係把握工程で把握された複数のデータを、参照関係が分かるように表示すると共に、該複数のデータ毎の危険度を表示させることを特徴とするメモリリークの原因箇所検出プログラム。
  18. 請求項14又は15に記載のメモリリークの原因箇所検出プログラムにおいて、
    前記制御部に、
    前記危険度の高いデータのデータ名、該データのデータ種宣言、前記プログラム言語で記載された前記プログラム中の該データの記載箇所を表示する表示工程をさらに実行させることを特徴とするメモリリークの原因箇所検出プログラム。
  19. 請求項18に記載のメモリリークの原因箇所検出プログラムにおいて、
    前記プログラム言語は、Java言語であり、
    前記制御部に、前記表示工程において
    前記危険度の高いデータのデータ名と関係付けて、該データの所属するデータ種を表示させることを特徴とするメモリリークの原因箇所検出プログラム。
  20. 請求項9から19のいずれか一項に記載のメモリリーク原因箇所検出プログラムにおいて、
    前記プログラムは、Webサービス提供プログラムであることを特徴とするメモリリーク原因箇所検出プログラム。
JP2004116581A 2004-04-12 2004-04-12 メモリリークの原因箇所検出方法、及びその実行プログラム Expired - Fee Related JP4512402B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004116581A JP4512402B2 (ja) 2004-04-12 2004-04-12 メモリリークの原因箇所検出方法、及びその実行プログラム
US11/103,565 US20050268286A1 (en) 2004-04-12 2005-04-12 Method of detecting memory leak causing portion and execution program thereof
US12/635,135 US8250539B2 (en) 2004-04-12 2009-12-10 Method of detecting memory leak causing portion and execution program thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004116581A JP4512402B2 (ja) 2004-04-12 2004-04-12 メモリリークの原因箇所検出方法、及びその実行プログラム

Publications (2)

Publication Number Publication Date
JP2005301660A JP2005301660A (ja) 2005-10-27
JP4512402B2 true JP4512402B2 (ja) 2010-07-28

Family

ID=35333114

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004116581A Expired - Fee Related JP4512402B2 (ja) 2004-04-12 2004-04-12 メモリリークの原因箇所検出方法、及びその実行プログラム

Country Status (2)

Country Link
US (2) US20050268286A1 (ja)
JP (1) JP4512402B2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7089460B2 (en) * 2003-02-28 2006-08-08 Microsoft Corporation System and method for memory leak detection
US8219856B2 (en) * 2004-03-09 2012-07-10 Alcatel Lucent Memory growth detection
JP4512402B2 (ja) * 2004-04-12 2010-07-28 株式会社日立製作所 メモリリークの原因箇所検出方法、及びその実行プログラム
US20060248103A1 (en) * 2005-04-29 2006-11-02 Cisco Technology, Inc. Method of detecting memory leaks in software applications
DE102006029138A1 (de) * 2006-06-22 2007-12-27 Dspace Digital Signal Processing And Control Engineering Gmbh Verfahren und Computerprogrammprodukt zur Detektion von Speicherlecks
US7500079B2 (en) * 2006-07-31 2009-03-03 Microsoft Corporation Detection of memory leaks
KR100965426B1 (ko) * 2008-04-24 2010-06-24 주식회사 파수닷컴 메모리 누수 검출 장치 및 방법
JP5327886B2 (ja) * 2010-04-30 2013-10-30 Necシステムテクノロジー株式会社 メモリリーク判定装置、メモリリーク判定方法およびプログラム
US8863094B2 (en) 2010-05-18 2014-10-14 International Business Machines Corporation Framework for a software error inject tool
JP5618796B2 (ja) 2010-12-02 2014-11-05 株式会社日立製作所 計算機、計算機の制御方法及びプログラム
CN103714004A (zh) * 2014-01-02 2014-04-09 金蝶软件(中国)有限公司 Jvm在线内存泄露分析方法及系统
US10108475B2 (en) * 2014-08-20 2018-10-23 Oracle International Corporation Pattern analysis for triaging memory leaks
CN105446871B (zh) * 2014-08-26 2018-08-17 华为技术有限公司 一种资源泄漏检测方法、装置及系统
CN105630662B (zh) * 2014-10-28 2019-07-19 腾讯科技(深圳)有限公司 内存检测方法和装置
CN106776342B (zh) * 2017-01-03 2020-04-21 百度在线网络技术(北京)有限公司 一种对移动应用的内存对象进行分析的方法和装置
CN110134611B (zh) * 2019-05-20 2021-06-25 腾讯科技(深圳)有限公司 内存泄漏分析方法、装置、终端和存储介质
CN111352734A (zh) * 2020-02-26 2020-06-30 烽火通信科技股份有限公司 一种内存泄漏检测方法及内存管理模块
CN113535150B (zh) * 2021-07-29 2023-09-22 北京大学 一种针对dram/nvm混合内存的无内存泄漏编程方法
JP7427143B2 (ja) 2022-02-15 2024-02-02 三菱電機株式会社 要因分析装置、要因分析方法及び要因分析プログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000003303A (ja) * 1998-06-16 2000-01-07 Nippon Signal Co Ltd:The 情報処理装置、情報処理方法、記憶媒体

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6167535A (en) * 1997-12-09 2000-12-26 Sun Microsystems, Inc. Object heap analysis techniques for discovering memory leaks and other run-time information
US6370684B1 (en) * 1999-04-12 2002-04-09 International Business Machines Corporation Methods for extracting reference patterns in JAVA and depicting the same
US7234080B2 (en) * 2002-10-18 2007-06-19 Computer Associates Think, Inc. Locating potential sources of memory leaks
US7089460B2 (en) * 2003-02-28 2006-08-08 Microsoft Corporation System and method for memory leak detection
US7568192B2 (en) * 2003-09-29 2009-07-28 International Business Machines Corporation Automated scalable and adaptive system for memory analysis via identification of leak root candidates
US7257692B2 (en) * 2003-10-01 2007-08-14 Lakeside Software, Inc. Apparatus and method for detecting memory leaks
US7577943B2 (en) * 2003-10-24 2009-08-18 Microsoft Corporation Statistical memory leak detection
JP4512402B2 (ja) * 2004-04-12 2010-07-28 株式会社日立製作所 メモリリークの原因箇所検出方法、及びその実行プログラム
US7293142B1 (en) * 2004-04-19 2007-11-06 Cisco Technology, Inc. Memory leak detection system and method using contingency analysis
US7716648B2 (en) * 2005-08-02 2010-05-11 Oracle America, Inc. Method and apparatus for detecting memory leaks in computer systems
CN101615143B (zh) * 2008-06-27 2013-04-17 国际商业机器公司 用于内存泄漏诊断的方法和装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000003303A (ja) * 1998-06-16 2000-01-07 Nippon Signal Co Ltd:The 情報処理装置、情報処理方法、記憶媒体

Also Published As

Publication number Publication date
US20050268286A1 (en) 2005-12-01
US20100153922A1 (en) 2010-06-17
US8250539B2 (en) 2012-08-21
JP2005301660A (ja) 2005-10-27

Similar Documents

Publication Publication Date Title
JP4512402B2 (ja) メモリリークの原因箇所検出方法、及びその実行プログラム
CN106294134B (zh) 代码的崩溃定位方法及装置
Khalid et al. Prioritizing the devices to test your app on: A case study of android game apps
CN100405311C (zh) 用于计算机系统中的多个分区的错误监视的方法
Arisholm et al. Predicting fault-prone components in a java legacy system
US7496904B2 (en) Mining dependencies for testing and risk management
US8336030B1 (en) System and method for coding standard testing
JP5914521B2 (ja) 処理装置、トレースユニット、および診断装置
JP6217212B2 (ja) テストプログラム、テスト方法及びテスト装置
JP4395761B2 (ja) プログラムテスト支援装置およびその方法
US20040205302A1 (en) Method and system for postmortem identification of falsely shared memory objects
US20080162888A1 (en) Differential comparison system and method
JP5556655B2 (ja) 解析支援プログラム,解析支援装置および解析支援方法
WO2006007588A2 (en) Method and system for test case generation
US11837309B2 (en) Processing method of chip probing data and computer-readable storage medium
JP6585338B2 (ja) 生体試料の処理方法および分析システム
CN103713995B (zh) 用于确定测试数据的方法和设备
Röthlisberger et al. Autumn leaves: Curing the window plague in IDEs
CN107402883B (zh) 一种数据测试处理方法和装置
US7506319B2 (en) Generating a model of software in execution
US20170277623A1 (en) Method of ascertaining primary cause of memory consumption in program, and computer system and computer program for the same
JP2008282174A (ja) 情報処理装置、情報処理方法、および情報処理プログラム
Ferreira et al. Testing configurable software systems: the failure observation challenge
JP2006023865A (ja) データ検査装置、データ検査方法
Reiss Visualizing the Java heap

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061116

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091019

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100329

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: 20100427

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100510

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130514

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130514

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130514

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees