プロセスのメモリーリークの調査に必要な資料

目次

本記事はマイクロソフト社員によって公開されております。

こんにちは、日本マイクロソフトの Windows プラットフォーム サポートです。 本ブログでは、 特定のプロセスにおいてメモリリークが発生している場合に採取いただきたい資料についてご紹介いたします。

資料採取手順

※ 後述の情報採取開始後に一度でもログオフした場合、正常に情報を採取することができませんので、ご注意ください。

  1. 以下の URL より “shacollector.zip” をダウンロードおよび展開いただき、対象端末へ配置します。

    ダウンロード先: shacollector.zip

    shacollector の使い方についてはこちら

    (注意) shacollector は機能の拡張などにより内容が変更されることがあります。 そのため、毎回上記のダウンロード先から shacollector を取得いただき利用してください。

  2. 管理者権限のコマンド プロンプトから実行して以下のコマンドを実行して、対象プロセスの PID を確認します。

    tasklist /svc
    
    実行例)
    
    イメージ名                     PID サービス 
    ========================= ======== ============================================
    System Idle Process              0 N/A
    System                           4 N/A
    Secure System                   56 N/A
    
  3. shacollector を展開したフォルダーに移動し、トレースを有効にするため以下を実行します。

    shacollector.bat perf heap start pid <対象プロセスの PID> enable
    
    実行例)
    
    shacollector.bat perf heap start pid 56 enable
    
  4. 動作確認のために、続けて下記のコマンドを実行します。

    shacollector.bat perf heap start C:\mslog pid <対象プロセスの PID> snap
    
    実行例)
    
    shacollector.bat perf heap start C:\mslog pid 56 snap
    

    ※ 出力先フォルダー名に C:\mslog 以外のフォルダーを指定することも可能です。

    ※ 出力フォルダーに RDRxxx.tmp というフォルダーが作成されていることを確認してください。

  5. パフォーマンスモニターログの採取を開始します。

    shacollector.bat perf perfmon start C:\mslog interval 0:0:1 days 3
    

    ※ 出力先フォルダー名に C:\mslog 以外のフォルダーを指定することも可能です。

    ※ サンプリング インターバールは 1 秒を指定していますが interval の指定で変更することも可能です。

    ※ パフォーマンスログを保持する日数は、3 以外の日数を days オプションに指定することも可能です。正常時からメモリーリークが発生するまでの期間が含まれる日数をご指定ください。

  6. ログオン ユーザーはログオフせず、「画面のロック」にて、現象が発生するまでログの収集を継続してください。 ※ 後述の情報採取開始後に一度でもログオフした場合、正常に情報を採取することができませんので、ご注意ください。また、収集しているログ情報は、対象プロセスのメモリーリークに関する差分情報のみとなりますので、ログの採取中にかかる負荷はほとんどございません。

  7. メモリーリークの事象が発生しましたら、項番 6 と同様のコマンドを実行し、開始からメモリーリークが発生するまでのログ情報を取得します。

    shacollector.bat perf heap start C:\mslog pid <対象プロセスの PID> snap
    

    ※ 新たに出力フォルダーに RDRxxx.tmp というフォルダーが作成されていることを確認してください。

    ※ 出力先フォルダー名に C:\mslog 以外のフォルダーを指定することも可能です。

  8. パフォーマンスモニターログの採取を停止します。

    shacollector.bat perf perfmon stop
    
  9. shacollector を support オプションを指定して実行します。

    shacollector.bat support all C:\mslog
    

    ※ 出力先フォルダー名に C:\mslog 以外のフォルダーを指定することも可能です。

  10. 採取が完了しましたら、出力先フォルダーを zip などでアーカイブしていただきご提供ください。

以上となります。

本ブログが少しでも皆様のお役に立てば幸いです。

本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。