標準的なプロファイリングのワークフロー
dotMemory のワークフローは、分析する問題によって異なる場合があります。 それにもかかわらず、一般的に、次のステップが常に含まれます。
dotMemory プロファイリングセッション(dotMemory がアプリケーションのさまざまな側面を測定する期間)を実行します。 これにより、プロファイルのアプリも実行されます。
通常と同じようにしばらくの間あなたのアプリを操作してください。 特定のメモリ問題を探している場合は、アプリで問題を再現してください。
メモリスナップショット(管理されたヒープのインスタントイメージ)を取得します。
メモリ使用量の詳細については、さらに多くのスナップショット (たとえば、問題の再現前と再現後) を取得することもできます。 dotMemory を使用すると、これらのスナップショットを比較し、アプリが時間の経過とともにどのようにメモリを使用するかを理解できます。
スナップショットを分析して、問題の原因を特定します。
サンプル例
実際にはどのように見えるのでしょうか? 例えば、アプリにメモリリークがあります。 どのオブジェクトがリークの原因となっているか、そのオブジェクトがどこから発生したのか(正確な呼び出し元)を特定するのがタスクです。 ワークフローに従ってください:
プロファイリングセッションを実行します。
アプリを使って作業しているある時点で、メモリスナップショットを撮ります。
しばらくの間アプリを操作して、漏れが明らかに明らかになるようにします。
メモリスナップショットを再度取ります。
多数の dotMemory ビューを使用して、スナップショットを分析して以下を決定します。
どのようなタイプのオブジェクトが時間の経過と共に成長するのか?
これらのオブジェクトが収集されないようにするには?
どのような方法で漏れが発生したか?
他のメモリプロファイラを一度使用したことがある場合は、dotMemory が他のメモリプロファイラと比べて際立ったものではなく、そのワークフローが他のメモリプロファイラと非常によく似ていることがわかります。 dotMemory が本当に異なるのは、メモリスナップショットの分析方法です。 詳細については、次のセクションを参照してください。