0

最近、一部のクライアント API でアプリケーション サーバーのメモリが増加し、最終的にクラッシュにつながることがわかりました。

そのため、boundschecker を使用してみましたが、メモリ リークはなく、メモリが増加するにつれてクラッシュにつながります (プライベート バイトが増加しています)。MS(sysinternals)のProcess Exploreで確認。

そのため、メモリがどのように順番に割り当てられるか (関数呼び出し)、またはハンドルが順番に割り当てられる方法を取得する方法はありますか。この位置でメモリが増加していることがわかります。

すべてのスレッドからのすべての関数呼び出しをキャプチャしたいと考えています。また、数千行のコードであるため、あまり多くのコードを変更することはできません。

4

1 に答える 1

1

メモリ リークが見つからない場合は、ハンドル リークが発生している可能性が非常に高くなります。列のリストで [ハンドル数] を選択すると、タスク マネージャーでもこれを確認できます。Process Explorer は、アプリケーションで開いているハンドルのリストを表示できるはずです。これは順番通りではないかもしれませんが、リークしているリソースの種類を把握できるはずです。多くの場合、すべてのリークはアプリケーションの同じ領域から発生し、時間の経過とともに蓄積してクラッシュを引き起こす可能性があります。

于 2010-11-02T22:58:33.190 に答える