top 20 memory leak detection tools
Java、JavaScript、C、C ++、Linux、Windows、Androidシステム上のVisual Studio用のトップメモリリーク検出および管理ツールのリストと比較:
このチュートリアルでは、他に類を見ない新しい概念を紹介します。 メモリリーク管理 。
私たちのシステムプログラムは、マシン上で実行中にメモリの問題が発生する傾向があり、その結果、メモリ割り当てが台無しになる可能性があります。
メモリリークは、システム内の各プログラムで使用可能なメモリの量を減らすことにより、システムのパフォーマンスを低下させます。これらのメモリの問題は、通常、ソフトウェアシステムのソースコードにアクセスするプログラマによって決定および解決されます。
今日の最新のオペレーティングシステムは、メモリの問題に適応できます。それらは即座にメモリ消費を削減し、アプリケーションが閉じられると、アプリケーションによって占有されていたメモリを解放します。
このチュートリアルでは、メモリリークが正確に関係していることと、そのツールの処理方法を確認します。
学習内容:
- トップメモリリーク検出および管理ツール
- #1)GCeasy
- #2)Eclipse MAT
- #3)ValgrindによるMemcheck
- #4)GlowCode
- #5)SmartbearによるAQTime
- #6)WinDbg
- #7)BoundsChecker
- #8)Deleaker
- #9)メモリ博士
- #10)Intel Inspector XE
- #11)Insure ++
- #12)Visual C ++ 2008-2015用のビジュアルリークディテクタ
- #13)VisualStudioプロファイラー
- #14)Mtuner
- #15)Windowsリークディテクタ
- #16)AddressSanitizer(A San)
- #17)GCViewer
- #18)Plumbr
- #19).NETメモリバリデータ
- #20)C ++メモリバリデータ
- #21)Dynatrace
- 追加のメモリリークツール
- 結論
- 推奨読書
メモリリークとは何ですか?
#1) コンピュータプログラムがメモリを不必要に使用し、それを不適切に割り当てると、最終的にはシステムでメモリリークが発生します。
#二) アプリケーションまたはプログラムを閉じた後でもメモリを解放しなかったため、システムが不要なメモリ割り当てを解放しない場合があります。
#3) プログラムが実際に必要なメモリを超えて消費すると、その結果、メモリの問題が発生し、システムパフォーマンスが低下します。
#4) オブジェクト指向プログラミングに関して、オブジェクトがメモリに格納されているが、プログラムコードからアクセスできない場合(オブジェクトを定義してメモリを割り当てましたが、オブジェクトが定義されていないことを示すエラーが発生します)。
#5) 自動ガベージコレクションを暗黙的にサポートせず、作業中にそのようなメモリリークの問題を引き起こす可能性があるCやC ++などのプログラミング言語がいくつかあります(Javaはガベージコレクションプロセスを使用してメモリリークを処理します)。
#6) メモリリークは、使用可能なメモリの量を減らし、スラッシングの量を増やし、最終的にシステム障害または速度低下を引き起こすことにより、システムパフォーマンスを低下させます。
# 7) メモリリーク管理は、オペレーティングシステムで実行され、メモリを動的に割り当て、使用されていないときに解放するメカニズムです。
メモリリークの種類
メモリリークはいくつかのタイプに分類できますが、そのいくつかを以下に説明します。
- 漏洩したデータメンバー: クラスメンバーに割り当てられたメモリは、クラスが破棄される前に割り当てが解除されています。
- リークされたグローバルメモリ: 作成されたクラスの一部ではないが、さまざまな関数やメソッドで使用できるメモリをリークします。
- リークされた静的メモリ: 作成されたクラスによって定義された関数専用のメモリをリークします。
- 仮想メモリリーク: 基本クラスがVirtualとして宣言されていない場合、派生オブジェクトのデストラクタを呼び出すことはできません。
- 間違ったデアロケーターを呼び出す。
メモリリーク管理
#1) メモリ割り当てへの参照がない場合、メモリリークは持続します。
#二) このようなメモリリークにより、プログラムが予想以上に実行され、バックグラウンドまたはサーバーで継続的に実行されるため、余分なメモリが消費されます。
#3) ポータブルデバイスは、メモリの量が少なく、デバイスの処理能力が低下するため、メモリリークの影響をより受けます。
#4)私たちは取ることができます例のような.NETメモリリーク管理システムの
- CLR(共通言語ランタイム)は、.NETでのリソース割り当てを処理し、それらを解放します。
- .NETは、次の3種類のメモリ割り当てをサポートしています。
- スタック: ローカル変数とメソッドのパラメーターを格納します。作成されたすべてのオブジェクトへの参照は、スタックに保存されています。
- 管理されていないヒープ: アンマネージコードは、オブジェクトをアンマネージスタックに割り当てます。
- マネージヒープ: マネージコードは、オブジェクトをマネージスタックに割り当てます。
#5) ガベージコレクターは、使用されていないオブジェクトをチェックし、見つかったら、ガベージコレクターによって削除されます。
#6) ガベージコレクターは、ツリーまたはグラフのような構造を管理して、直接および間接的にアクセス可能な各オブジェクトへのアプリケーションルートをチェックし、存在しないオブジェクトが見つかった場合は、ガベージコレクションに配置します。
次に、メモリリークを管理するために広く使用されているいくつかの一般的なメモリリーク管理ツールを確認します。
******************
= >> お問い合わせ ここにリストを提案します。
*****************
トップメモリリーク検出および管理ツール
以下に、最も一般的に使用されるメモリリーク検出および管理ツールのリストを示します。
#1)GCeasy
- この無料のツールは、メモリの問題をすばやく解決し、優れたメモリアナライザとして知られています。
- これは、最初のマシンガイド付きガベージコレクションログ分析ツールです。
- すべてのAndroidGCログもサポートし、機械学習アルゴリズムを使用して発生したメモリの問題を検出し、将来の問題についても通知します。
- 自動問題検出、インスタントオンラインGC分析、統合GCロギング分析は、このツールの重要な機能の一部です。
クリック ここに GCeasy公式サイトに移動します。
#2)Eclipse MAT
- Eclipse MATは、高速で機能のあるJavaヒープアナライザーとして知られています。
- このツールは、メモリ消費を削減し、メモリリークを検出するのに役立ちます。
- ガベージコレクタがオブジェクトを収集するのを妨げるエラーに関する情報を生成する自動レポートを生成します。
- このツールの主な焦点は、高いメモリ消費とメモリ不足エラーにあります。
- このプロジェクトには、Eclipse Photon、Eclipse Oxygen、Neon、Keplerなどが組み込まれています。
クリック ここに EclipseMAT公式サイトに移動します。
#3)ValgrindによるMemcheck
- Memcheckは、malloc、new、free、deleteのメモリ呼び出しに基づいて次のメモリの問題を検出できます。
-
- 初期化されていないメモリ
- ポインタを失った
- 解放されたメモリの使用
- スタック上の不適切な領域へのアクセス
-
- パラメータが定義されている場所では、パラメータを自動的にチェックして指示します。
- ValgrindによるMemcheckは、メモリエラーを検出するための商用ソフトウェアです。
- CおよびC ++で発生したメモリエラーを検出すると便利です。
- また、Memcheckは、プログラムによって定義されたバッファがアドレス可能かどうかをチェックします。
- Memcheckは、プログラムが終了すると、ヒープブロックを追跡して、解放されていないブロックを認識します。
クリック ここに Memcheck公式サイトに移動します。
#4)GlowCode
- GlowCodeは、Windowsおよび.NETFramework専用の商用リアルタイムパフォーマンスおよびメモリアナライザーです。
- GlowCodeは、C ++、C#、またはNET準拠の言語で記述された実行中のアプリケーションのメモリリークを識別します。
- また、パフォーマンスフロー、コードカバレッジ、およびメモリの過剰消費もチェックします。
- Windows10とWindowsServer 2016をサポートし、実行中のシステムのパフォーマンスとメモリの問題を早期に検出します。
- ネイティブ、マネージド、および混合コードをサポートします。
クリック ここに GlowCode公式サイトに移動します。
Windows10用の最高の無料レジストリクリーナー
#5)SmartbearによるAQTime
- AQTimeは、Delphi、C#、C ++ 、. NET、JavaなどをサポートするSmartbear独自のツールです。
- アプリケーションシステムのメモリリーク、パフォーマンスボトルネック、コードカバレッジギャップを検出します。
- 複雑なメモリとパフォーマンスに関する情報を効率的に分析して、根本原因のあるバグを特定します。
- メモリリーク、コードカバレッジギャップ、パフォーマンスのボトルネックを検出するための最速のアプローチ。
- メモリとリソースリークを特定するためのアプリケーションのトップツーボトムデルファイ分析。
クリック ここに AQTime公式サイトに移動します。
#6)WinDbg
- Windbg for Windowsは、カーネルメモリダンプを識別し、CPUレジスタを調べるために使用されます。
- これは、Windowsデバイス、Webおよびデスクトップアプリケーション用に異なるビルドで提供されます。
- ユーザーモードのクラッシュダンプを識別する機能は、「事後デバッグ」として知られています。
- DLL拡張機能をデプロイして、コマンド言語ランタイム(CLR)をデバッグできます。
- Windbgには、標準のWindowsデバッガ拡張機能として使用されるExt.dllがプリロードされています。
クリック ここに Windbg公式サイトに移動します。
#7)BoundsChecker
- これは、C ++ソフトウェア用のメモリおよびAPI検証ツール専用のツールです。
- 二つあります ActiveCheck そして FinalCheck、ActiveCheck アプリケーションに対して実行され、 FinalCheck システムの機器形式をチェックするために使用されます。
- ActiveCheckは、APIおよびCOM呼び出しを監視することにより、メモリリークを検出できます。
- FinalCheckには、バッファオーバーフローと未定義のメモリを検出する機能に加えて、ActiveCheckの機能が付属しています。
- メモリオーバーラン検出は、BoundsCheckerが知られている最高の機能です。
クリック ここに BoundsChecker公式サイトに移動します。
#8)Deleaker
- Deleakerは、スタンドアロンの独自のメモリリーク検出ツールであり、Visual C ++拡張機能としても使用されます。
- ヒープおよび仮想メモリのメモリリークも検出し、任意のIDEと簡単に統合できます。
- スタンドアロンバージョンは、アプリケーションをデバッグして、オブジェクトの現在の割り当てを表示します。
- すべての32ビットおよび64ビットシステムをサポートし、VisualStudioと完全に統合されています。
- 豊富なレポートを生成し、最終結果をXMLにエクスポートします。
クリック ここに Deleaker公式サイトに移動します。
#9)メモリ博士
- Dr. Memoryは、Windows、Linux、およびMac用の無料のメモリ監視ツールです。
- このツールは、初期化されていないアドレス指定できないメモリと解放されたメモリを識別することができます。
- Dr. Memoryは、次の3種類のエラーを定義しています。
-
-
- それでも–到達可能な場所: アプリケーションが到達可能なメモリ。
- リーク: アプリケーションがメモリに到達できません。
- リークの可能性: ポインタを介して到達可能なメモリ。
-
-
- さらに、次のような2種類のリークを定義します。 直接 そして 間接 リーク。
クリック ここに Deleaker公式サイトに移動します。
#10)Intel Inspector XE
- この独自のツールは、メモリリークの早期検出に役立ち、メモリリークの修正にかかる費用を削減するのに役立ちます。
- 特別なコンパイラを使用せずにWindowsおよびLinuxで実行されるC、C ++アプリケーションのエラーデバッガとして知られています。
- また、Intel Parallel StudioXEおよびIntelSystemStudioの一部としても利用できます。
- Intel Inspector XEは、静的および動的分析を実行して、メモリリークの根本原因を特定します。
- 動的分析は、静的分析では検出されないメモリリークの複雑な根本原因を検出します。
- 破損したメモリ、不正なメモリアクセス、初期化されていないメモリ、一貫性のないメモリなどを検出します。
クリック ここに Intel InspectorXE公式サイトに移動します。
#11)Insure ++
- Parasoft Insure ++は、C / C ++専用の商用メモリデバッガです。
- 不正確な配列バインド違反、未割り当てメモリを自動的に検出します。
- 実際のリークが発生したときにスタックトレースを実行できます。
- テストされたコードのセットに対して、Insure ++は線形コードシーケンスとジャンプコードシーケンスを生成します。
クリック ここに Insure ++公式サイトに移動します。
#12)Visual C ++ 2008-2015用のビジュアルリークディテクタ
- Visual Leak Detectorは、C / C ++用の無料のオープンソースメモリリーク検出ツールです。
- C ++アプリケーションのメモリリークを迅速に診断し、メモリリークから除外する必要のあるモジュールを選択します。
- Visual C ++は、組み込みのメモリリーク検出を提供し、リークされたブロックの完全なセットを利用します。
- カスタマイズ可能で詳細なメモリリークレポートは、このツールの最高の機能です。
- 完全に文書化されたソースコードをライブラリに対して有効にします。
クリック ここに thにナビゲートするeビジュアルリークディテクタ公式サイト。
#13)VisualStudioプロファイラー
- Visual Studioには、メモリリークや非効率的なメモリの検出に役立つメモリ使用量ツールが付属しています。
- このツールは、デスクトップアプリ、ASP.NETアプリ、およびWindowsアプリに使用されます。
- 管理対象メモリとネイティブメモリのスナップショットを作成し、単一のスナップショットを分析して、オブジェクトがメモリに与える影響を理解できます。
- 複数のスナップショットを使用して、過剰なメモリ使用の根本原因を見つけることができます。
- 完全に文書化されたソースコードをライブラリに対して有効にします。
クリック ここに thにナビゲートするe Visual StudioProfilerの公式サイト。
#14)Mtuner
- Mtunerは、WindowsアプリケーションとPlayStationで使用されるメモリリークファインダーです。
- メモリプロファイリングのための追加機能を提供します。
- Mtunerは、線形パフォーマンススケーリングを使用して、1秒あたりの割り当て数を処理できます。
- Mtunerには、メモリ使用量の毎日の変化を追跡するのに役立つコマンドラインベースのプロファイリングが付属しています。
クリック ここに thにナビゲートするeMtuner公式サイト。
#15)Windowsリークディテクタ
- Windows Leak Detectorは、Windowsアプリケーション用のメモリリーク検出ツールです。
- 主なWindowsリークディテクタは次のとおりです。
-
-
- ソースコードは必要ありません。ソースコードがある場合は、変更が少なくて済みます。
- 任意の言語で記述された任意のWindowsアプリケーションを分析できます。
- サイクリックパターンで開発されたアプリケーションに効果的で最適です。
-
-
- このツールは一貫して開発中であり、まだいくつかの制限があります。
-
-
- 一度に管理できるプロセスは1つだけです。プロセス間通信機能は、将来追加される予定です。
- HeapAlloc、HeapRealloc、およびHealFree関数のみを分析します。
-
-
システムのシステム開発者は、HeapCreateなどのメモリ関数の追加に取り組んでいます。
クリック ここに thにナビゲートするeWindowsリークディテクタ公式サイト。
#16)AddressSanitizer(A San)
- このオープンソースツールは、C / C ++プログラムのメモリリークを検出するように設計されています。
- 最速のツールは、Compiler InstrumentationModuleとランタイムライブラリで構成されています。
- このツールは、ヒープとスタックのバッファオーバーフローとメモリリークを検出します。
- LeakSanitizerは、メモリリーク検出の仕事をするAddressSanitizerと統合されています。
- LeakSanitizerを使用すると、別のSuppressionファイルで送信することにより、一部のメモリリークを無視する命令を指定できます。
- このツールは、Linux、Mac、OS X、Android、iOSシミュレーターでサポートされています。
クリック ここに thにナビゲートするeAddressSanitizer公式サイト。
#17)GCViewer
- GCViewerは、IBM、HP、Sun Oracle、およびBEAJVMによって生成された無料のツールです。
- このツールは、GCログファイルの解析と分析に使用されます。
- スプレッドシートアプリケーションとしてCSV形式でデータを生成できます。
- Verboseガベージコレクションで動作します。 要するに、Verbose GarbageCollectionは次のとおりです。
-
- 各操作のイベントベースの生成ガベージコレクション。
- 出力される詳細なガベージコレクションには、増分IDとローカルタイムスタンプが含まれます。
-
クリック ここに thにナビゲートするeGCViewer公式サイト。
#18)Plumbr
hpクオリティセンターインタビューの質問と回答
- これは、JVMアプリケーションのメモリリークとガベージコレクションをチェックするために使用される独自の商用ツールです。
- Plumbrは、エージェントとポータルなどの2つの重要なモジュールに基づいています。
- エージェントはJVMをサポートし、ガベージコレクションとメモリリーク情報をポータルに送信します。
- ポータルでメモリ使用量とヒープに関する情報を確認できます。
- このツールは、パフォーマンスデータの分析に基づく検出アルゴリズムを使用します。
クリック ここに thにナビゲートするePlumbr公式サイト。
#19).NETメモリバリデータ
- .NET Memory Validatorは、ソフトウェア開発と品質保証に使用されるメモリプロファイラーである商用メモリリークアナライザです。
- 次のような複数の洞察を提供する、複数のメモリ割り当てを監視する最速の方法として知られています。
-
- 割り当て: クラスとに基づいて色分けされた割り当て統計を表示します
関数を割り当てるために定義されたメソッド。 - オブジェクト: オブジェクトビューには、色分けされたオブジェクトとメモリの割り当てが表示されます
実行中のアプリケーションの統計。 - 世代: すべてのオブジェクトのオブジェクトタイプごとのオブジェクト数を表示します
アプリケーションによって割り当てられた世代。 - 記憶: メモリビューには、現在のオブジェクトとに関する情報が表示されます。
オブジェクトタイプ、割り当てサイズ、および呼び出しスタック、タイムスタンプ。 - 分析: このビューには、メモリ使用量が表示されます。
- 割り当て: クラスとに基づいて色分けされた割り当て統計を表示します
-
- このツールの主な機能には、メモリリークの検出、メモリリークの処理、メモリリークを特定するための回帰テストの実行が含まれます。
- .NETメモリバリデータは、.NETFrameworkおよびCLRのすべてのバージョンと互換性があります。
- 使いやすく、メモリリークを特定するための構成可能で強力な多目的ツール。
クリック ここに thにナビゲートするe.NETメモリバリデーター公式サイト。
#20)C ++メモリバリデータ
- .NET Memory Validatorと同様に、このツールも商用のメモリリーク検出器およびアナライザーです。
- C ++メモリバリデータは、次のような複数の洞察を提供します。
-
- 記憶: 割り当てられたメモリとリークされたメモリに関する情報を表示し、エラーメッセージをトレースします。データは、選択およびフィルタリングできるツリー構造で表示されます。
- オブジェクト: オブジェクトタイプと割り当て済み、割り当て解除済み、および再割り当て済みのオブジェクトを含むオブジェクト統計を表示します。
- カバレッジ: このビューは、メモリ使用量に関する情報を提供します。このツールには、サードパーティのファイルを削除するフィルターが付属しています。
-
- 自動マージ機能は、複数のインサイトからの複数の統計をマージして、回帰テストスイートの複合カバレッジを形成するのに役立ちます。
- これらの洞察とは別に、ツールはアプリケーションのタイムライン、ホットスポット、サイズ、および分析ビューを提供します。
- MicrosoftCおよびC ++、Intel C ++などと互換性のある強力で構成可能なツール。
クリック ここに thにナビゲートするe C ++メモリバリデータの公式サイト。
#21)Dynatrace
- Dynatraceは、オールインワンパフォーマンス管理をサポートする商用ツールであり、フルスタックモニタリング、シングルトランザクション分析で構成されています。
- これは、メモリ消費量を決定するためのメモリリーク検出ツールを提供します。
- Dynatrace Javaメモリリーク検出ツールはJavaで記述されたアプリケーションで使用でき、.NETProfilerツールはJavaで実行されているアプリケーションで使用されます。
- 独自のホットスポットビューにより、メモリを有効に活用していないオブジェクトを見つけることができます。
- メモリ使用量のメモリトレンドダンプを実行できます。このツールは、メモリ消費量が継続的に増加していて、メモリから適切に割り当て解除されていないオブジェクトを識別するのに役立ちます。
クリック ここに thにナビゲートするeDynatrace公式サイト。
追加のメモリリークツール
これらは、メモリリークを検出するために広く使用されているツールです。ここでもリストはまだ完成していません。同じ目的を達成するために使用される他のツールもいくつかあります。
簡単に確認します。
#22)NetBeansプロファイラー :
NetBeans Profilerは、メモリ、スレッド、SQLクエリなどの機能で開発された独自のJavaプロファイリングツールです。現在、このツールには、スレッドダンプを処理するためのいくつかの新しい高度な機能が付属しています。
URL: NetBeansプロファイラー
#23)Mtrace :
Mtraceにはglibc(GNUCはC標準ライブラリの実装を成功させるためのライブラリプロジェクト)が組み込まれており、異常なmalloc / free呼び出しによって引き起こされるメモリリークを検出するために使用されます。
呼び出されると、オブジェクトへのメモリの割り当てが停止します。 Mtrace Perlスクリプトは、メモリリークがないか作成されたログファイルをスキャンするために使用されます。また、ソースコードを提供すると、問題が発生した正確な場所を理解できます。
URL: Mtrace
#24)Java Visual VM :
Visual VMは、開発者がメモリリークを追跡および追跡するための非常に便利なツールです。ヒープデータとガベージコレクターを分析します。これにより、メモリの使用が最適化され、アプリケーションのパフォーマンスが向上します。
実行時の問題を解決するためのスレッド分析やヒープダンプ分析などの機能を提供します。
ここでは、最も人気のあるメモリリーク管理ツールを使用しました。システムの重要なメモリ領域ごとに1つ以上を選択できます。
また、このソフトウェアを使用することで、作業が簡単になるだけでなく、比較的面倒なメモリリークの検出にかかる時間を短縮することができます。
URL: Java Visual VM
結論
メモリリーク管理ツールは、メモリの管理に費やされる労力と時間を削減します。メモリはデータを効率的に保持および管理するためのソフトウェアのバックボーンであるため、メモリアクセスと割り当ての管理およびリークの追跡は非常に重要なタスクです。
繰り返しますが、適切なメモリ割り当てがないと、アプリケーションシステムを実行することさえできません。システム障害を回避してパフォーマンスを向上させるには、メモリリーク管理を実行する必要があります。
この必要性を念頭に置いて、多くの組織はこれに利用できるツールを利用しますが、最終的には組織とエンドユーザーにとって物事が容易になります。
******************
= >> お問い合わせ ここにリストを提案します。
******************