7

私はC#.NET WinFormsアプリケーションのプロファイリングを行っていますが、それが何百万ものソフトページフォールトを生成し、作業中に増加し続けることに気づきました...

.NETでは、アプリケーションが生成するページフォールトの数は通常多いことを知っていますが、数百万のページフォールトが多すぎるようです...アプリケーションがGCで競合状態を引き起こしたようですが、それは可能ですか?

この状況につながる可能性のある、不適切に設計された既知のコードはありますか?コードにない場合、ページフォールトの数を減らすことができる.NETフレームワークのいくつかの隠された設定がありますか?

ますます多くのソフトページフォールトの生成を回避できますか?

4

1 に答える 1

4

問題がなければ、このままにしておくことをお勧めします。ただし、パフォーマンスに問題がある場合は、最も多くのページ フォールトを生成するコードを分離してみてください。おそらく、大きなメモリ フットプリント オブジェクトを使用している場所です。

「安全でない」コードをできるだけ分離してシンプルに保つようにしてください。すべてのアンセーフ コードをクラスまたは関数にカプセル化します。.NET GC を台無しにすると、ほとんど不要な複雑化につながる可能性があることに注意してください。

安全でない導入については、この記事を確認してください (少し古いですが、まだ真実です): http://www.codeproject.com/KB/cs/unsafe_prog.aspx

また、GC が収集されるまでの時間を増やすこともできます。これは役立つかもしれません

于 2011-11-26T11:52:46.627 に答える