回帰をチェックするために、さまざまなシナリオでアプリケーション (またはサブコンポーネント) のメモリ使用量を監視するさまざまなテストがあります。問題は、( を使用しProcess.Refresh(); Process.PrivateMemorySize64
た) 測定値が実行ごとに大きく変動することです。
現在行っていることは、X
ミリ秒ごとにバックグラウンド スレッドを介してポーリングすることです。到達した最大値をベンチマークと比較し、それに応じて合否を判定します。
興味深いことに、ポーリング間の時間を短縮すると、記録される最大メモリ値が大幅に減少します。一例では、メモリを 100ms ごとに読み取ると最大 360MB になり、10ms ごとに 147MB になり、1ms ごとに 35ms になります。おそらく、観測数の増加により、何らかの形で GC の動作がより積極的になります。
主な問題は、測定しようとしている「最大メモリ使用量」が特に明確に定義されていないことだと思います。使用可能なメモリが十分にある場合、GC は起動しない可能性があるため、メモリ使用量が高くなるように見えます。
パフォーマンスの低下を防ぐために、ドットネットでメモリ使用量を測定する標準的な方法はありますか?