7

私のアプリケーションの 1 つで、ハンドルの数が増えていることがわかりました。アプリケーションを使用せずに、およそ 1 秒ごとに数値がインクリメントされるため、バックグラウンド処理コードの一部でハンドル リークが発生しているはずです。

このようなリークを追跡するにはどうすればよいですか? これを支援するツールはありますか?ハンドル リークをトレースするときに探すべきパターンは何ですか? ハンドルリークを引き起こす最も一般的な間違いは何ですか?

たくさんの質問がありますが、1 つの質問にまとめるのに十分な関連性があることを願っています。事前にご連絡いただきありがとうございます。

4

3 に答える 3

7

Process Explorerの使用をお勧めします。管理者として実行して、関連するすべてのデータが表示されることを確認してください。そこでは、プロセスにどのような種類のハンドルがあり、どれが過度に作成されていて解放されていないかを観察できます。これは、検索を絞り込むのに役立つはずです (私の場合、winsock の動作に関するいくつかの誤った仮定が原因で、あちこちでソケットがリークしていました)。おそらく、関連するコードを分離してここに投稿して、何か問題があるかどうかを確認してください。幸運を!

于 2011-10-21T07:29:40.327 に答える
5

一部のプロファイラー (つまりAQTime ) は、Windows リソース アプリケーションをプロファイリングできます。XE を使用している場合は、AQTime の基本バージョンが利用可能です。

ハンドル リークは、実行パスが適切に閉じない場合によく発生します。しかし、Windows では、ハンドルは非常に多くの異なる状況で使用される非常に一般的な項目です。どの種類のハンドルがアプリケーションでリークしているのでしょうか?

于 2011-10-21T07:29:52.167 に答える