2

WPF で開発されたアプリケーションがあるとします。アプリケーションを実行して最小化すると、しばらくして (30 分以上とします)、アプリケーションのウィンドウを復元すると、しばらくの間フリーズ (または低速) していることがわかります。数秒。

私の質問は、なぜ遅くなるのか、それを修正する方法はありますか?

4

1 に答える 1

2

これは WPF のプロパティではなく、仮想メモリのプロパティです。

基本的に、最新のオペレーティング システムはプログラムをできるだけ高速に実行しようとしますが、多くのプログラムを一度に実行することもできます。すべてのメモリがわずかな RAM に一度に収まるわけではありません。そのため、実行中のプログラムがメモリの新しいページを割り当てる必要があることを OS が認識すると、RAM がすでにページでいっぱいになっている場合、OS はページの 1 つ (しばらく使用されていないページを優先) をハードディスクにキックします。ページファイルと呼ばれるファイル。

そのメモリ ページが属していたプログラムがそれにアクセスしようとすると、これは「ページ フォールト」と呼ばれます。OS はページが RAM ではなくディスク上にあることを検出し、実行を続行する前に RAM に読み込む必要があります。ハードディスクからの読み取りは RAM からの読み取りよりも遅いため、これは比較的低速です。プログラムがしばらく実行されていない場合、そのすべてのページが RAM にページアウトされていると考えられます。そのため、ページ フォールトが発生しなくなるまでプログラムは遅くなります。

この問題に対処する方法については経験がありませんが、次のようなことを試すことができます。

1) 非同期で動作するようにプログラムを作成する - そのため、1 つのスレッドがページ フォールトをトリガーする処理を実行している間、プログラムは他のスレッドで応答します。

2) メモリのすべてのページに意図的にアクセスして、ページインを維持する (プログラムが非常に重要で、使用していないときでも常に RAM を占有するに値する場合にのみお勧めします!)

3)「ハードウェアを投げる」ソリューション-RAMを購入します:)

于 2013-03-17T22:35:45.443 に答える