perfmon を使用してメモリ リークが存在するかどうかを判断する
Windows のパフォーマンスが徐々に低下していて、メモリ リークが関係していると思われる場合は、Windows パフォーマンス モニターを使用して、メモリ リークがあるかどうかを調べます。 このプロセスでは、リークの原因や、ユーザー モードとカーネル モードのどちらであるか、といったことは示されません。
まず、パフォーマンス モニターを起動します。 パフォーマンス モニターを開くには、次のいずれかの手順を使用します。
- [スタート] メニューを開き、パフォーマンス モニターを検索して、結果をクリックします
Windows Key + R
キーボード ショートカットを使用して [実行] コマンドを開き、「perfmon
」と入力し、[OK] をクリックして開きます。
カウンターの追加
パフォーマンス モニターを開いた後、パフォーマンス モニターのメイン グラフに次のカウンターを追加します。 [モニター ツール] の下の [パフォーマンス モニター] を右クリックして、[プロパティ] を選択します。
Memory --> Pool Nonpaged Bytes
Memory --> Pool Paged Bytes
Paging File --> % Usage
アクティビティをキャプチャするための期間を設定する
リークのグラフを経時的にキャプチャするには、[サンプリング間隔] を 600 秒に設定して、10 分ごとに値を測定します。 アクティビティをキャプチャするのに十分な [期間] を設定します。 たとえば、24 時間に設定するには、値は 60*60*24 = 86,400
になります。後で調べるため、データをファイルに記録することもできます。
アプリケーションの起動と監視
リークの原因と思われるアプリケーションまたはテストを開始します。 アプリケーションまたはテストを、しばらくそのまま実行させておきます。この間に、ターゲット コンピューターを使用しないでください。 通常、リークは遅く、検出に数時間かかる場合があります。 数時間待ってから、リークが発生したかどうかを判断します。
パフォーマンス モニターのカウンターを監視します。 テストを開始すると、カウンターの値がめまぐるしく変化し、メモリ プールの値が安定した状態になるまでしばらくかかる場合があります。
ユーザー モードのメモリ リークは常にページング可能なプールで発生し、Pool Paged Bytes カウンターとページ ファイルの Usage カウンターの両方が、時間の経過と共に着実に増加します。 カーネル モードのメモリ リークでは、通常、非ページング プールが使い果たされ、Pool Nonpaged Bytes カウンターが増加しますが、ページング可能メモリも影響を受ける可能性があります。 アプリケーションによるデータのキャッシュのため、これらのカウンターが擬陽性を示すことがあります。