Process Explorer - ハンドルリーク調査
- 1. 概要
- 2. 状況
- 3. 操作
- 4. 保存
1. 概要
起動するところまでで、書く機会がなく、そのまま放っておりましたが、運よくというか運悪くというか、リーク調査する機会がありましたので、メモを残します。
本ページは、下記のサイトを参考にさせていただきました。
「Process Explorer でハンドルリークを調査する方法」
「メモリリーク/ハンドルリークの調査 #メモリリーク」
2. 状況
やたら、メモリがリークするプログラムがありましてな。
タスクマネージャで、見ていたら、どうもハンドルが増えているようです。
ログを入れたりしてみましたが、原因がわかりません。
そこで、検索すると「Process Explorer」で調査する方法がかかりました。
すっかり忘れていましたが、久々の登場となりました。
3. 操作
「Process Explorer」を起動して。
プログラムは伏せますので、代わりに「FFFTP」にしておきます(「FFFTP」には、なんの問題もありませんよ、念のため)。
ターゲットのプロセスは、選択状態にしておきます。
「表示」→「下のペインの表示」へチェックを入れます。
「表示」→「下ペインビュー」で「ハンドル」へチェックを入れます。
4. 保存
前項の状態にしておいて様子を見ます。

このプロセスを表示した状態で、Ctrl+A を押すと、ファイル保存ダイアログが表示されて、現在の状態を保存することができます。
保存ファイルは、こんな感じ。
プロセス CPU プライベート バイト ワーキング セット PID 説明 会社名
Registry 8,800 K 48,188 K 196
System Idle Process 96.64 60 K 8 K 0
・・・ 中略 ・・・
MoNotificationUx.exe 2,492 K 12,472 K 14080 通知ホスト プロセス Microsoft Corporation
Process: ffftp.exe Pid: 18232
種類 名前
ALPC Port \RPC Control\OLE81F5C64B6E64D0168BD2E52E8F8F
ALPC Port \BaseNamedObjects\[CoreUI]-PID(18232)-TID(9488) a61ccf09-7bb4-4337-9b2c-948b07b87345
ALPC Port \BaseNamedObjects\[CoreUI]-PID(18232)-TID(18816) 078f94e5-ddd7-49d1-b16d-b897e3035863
Desktop \Default
Directory \KnownDlls
Directory \Sessions\10\BaseNamedObjects
Event \KernelObjects\MaximumCommitCondition
File \Device\AvAswIDS_Ioc2
File C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_659...
・・・ 中略 ・・・
Thread ffftp.exe(18232): 18816
Thread ffftp.exe(18232): 18816
WindowStation \Sessions\10\Windows\WindowStations\WinSta0
WindowStation \Sessions\10\Windows\WindowStations\WinSta0
ここでは、重要なのは、9行目以下になります。
一定時間経過するごとに、このファイルを保存します。
すると、増えていれば、しれが少なくとも、なんの種類のハンドルかまではわかりますので、問題を特定するのに役立ちます。
「File」であれば、ファイルそのものまで判明しますので、一発でつきとめることもできそうです。
|
|