人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

WindowsXPをずっと起動しておくと、explorer.exeのハンドルの数が5M近くなってしまいます。何が原因なのでしょうか?

●質問者: gakyou
●カテゴリ:ウェブ制作
✍キーワード:exe EXPLORER WindowsXP ハンドル
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● jelly
●60ポイント

常駐してるアプリケーションは何もないんですか?

◎質問者からの返答

自作のアプリケーションが上げっぱなしですが、エクスプローラのハンドルを増やす原因になるのでしょうか?


2 ● snitch
●70ポイント

http://www.google.co.jp/search?hl=ja&lr=&ie=UTF-8&q=+site:suppor...

マイクロソフトのサポート技術情報にもハンドル リークを起こす例が多数挙げられています。

特定のAPIの使用や特定の処理を行なうとハンドル リークが起こるようです。

英語からまだ訳されていないサポート技術情報もありますので、プログラムの処理を見直されてはどうでしょうか?

http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=+site%3Asupport....


3 ● aki73ix
●80ポイント

>常駐してるアプリケーションは何もないんですか?

何もって言うのは無理でしょう

Explorerが通信をSPYで監視していれば分かると思うのですが、他のアプリケーションの窓に変化があると随時何らかのメッセージのやり取りが起こります。

透明化などのXPのレイヤ機能を使っていると内部で、Windowハンドルを開放したり再取得したりするかもしれません。

それにしても、ハンドルの数が5Mっていうことは5000000個ですか?

それだけのハンドルが増殖するのなら、タスクマネージャーやサービスマネージャーを操作して、タスクやサービスを一時停止してみれば原因が突き止められそうな気がします

ちなみに今うちは2日起動しっぱなしのWin2000ですがexplorer.exeのメモリ使用量は5,376K、ハンドルの数は770位ですね・・・数は5Mじゃなくて5Kの間違いのような気もしますが・・・本当に5M (500万)個なんですか?

◎質問者からの返答

はい、3週間くらいで5Mです。異常ですよねー。


4 ● ataraxia
●90ポイント

http://pcweb.mycom.co.jp/news/2003/06/03/23.html

Windows XPでExplorer.exeがCPUリソースを100%使用するバグが発覚 | ネット | マイコミジャーナル

ひょっとしてこれかな


5 ● aki73ix
●100ポイント

http://www.forest.impress.co.jp/article/2003/08/27/syu.html

窓の杜 - 【Review NEWS】ウィンドウの表示位置や大きさを数値入力で変更できる「珠[Window Manager]」

2回目の回答でなので、最後の回答になります

いろいろ考えてみましたので、確認してみてください

・Officeのファイルサーチサービスが悪さをしている(CTFMONや、FINDFASTなど)・・・聞いた話ですが、裏で検索しながら、ファイルが変更されたり追加するたびにリソースが消費されていくそうな

・何らかのアプリケーションがGetWindowTextの値が空の見えないWindowを大量に作っている(1番目のリンクのソフトで見えないWindowと見えないWINDOW名を持つ窓の検索ができます)窓の名前がないと、タスクマネージャーにも表示されないので、大量のゴーストが居る可能性があるわけです

・IISが起動していると、場合によってはハンドルのりソースリークを起こすケースがあるそうです、サービスを切ってみて改善するようならばそうなのかもしれません

・Explorerが内部でオブジェクトを大量に作っている・・・VS6などにSPYをつかってオブジェクトハンドルの一覧を見てみれば何かわかるかもしれません、自作で EnumChildWindowの一覧を表示するソフトを作って検証してみるのもいいかもしれません

500万のハンドルが3週間ほどで徐々に生成されると仮定すると20秒ほどで1つずつハンドルが増えていくことになります普通、何もしていなければハンドルの変化はそう簡単に起こりません。

1回目の回答で述べたように、まずは、ハンドルを増やすアプリケーションを突き止めることが大事です。

Explorer.exeは他のアプリケーションが窓を作成してもハンドルが増えるので、アプリケーションを順番に落としていくと増えなくなる可能性があります

よくわからなければ、ネットワークつきセーフモードで起動してみて増えるか確認してみればよいでしょう

したのリンクのFILEMONでファイルアクセスしているプログラムを見つけると、関連している場合もあります

EXPLORER.EXEのハンドル数をモニタリングするソフトならばAPIの知識で簡単に作れるので、それに増え方を時間月LOGで記録させてみて増え方の傾向がわかれば原因がもう少し絞れるかもしれませんね

以下はGDIとUSERハンドルの数を調べるサンプルです

hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

lppe.dwSize=sizeof(lppe);

if(Process32First(hProcessSnap, &lppe)){

do{

hProcess = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ, 0, lppe.th32ProcessID);

ModuleHandles, sizeof(ModuleHandles), &ReturnSize);

if(hProcess){

if(cmplchar/*大文字小文字を区別しない比較*/(lppe.szExeFile,”explorer.exe”)<2){

RS1=GetGuiResources(hProcess,GR_GDIOBJECTS);

RS2=GetGuiResources(hProcess,GR_USEROBJECTS);

}

}

http://www.sysinternals.com/ntw2k/source/filemon.shtml

http://nifberry.727.net/test/hatena11.lzh

◎質問者からの返答

やってみます。

どうもありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ