-1

POC については、複数のアプローチで同じ結果を達成するためのテスト メソッドを作成しました。問題は、最初のテストを実行すると、一部の (.txt) ファイルがキャッシュされることです。これらのファイルのサイズとほぼ同じ量だけ RAM 使用量が増加していることがわかります。統合されたファイルのサイズはほぼ 1 GB であり、ディスクからそれらを読み取るのは簡単ではありません。これにより、2 番目の方法は最初の方法よりも不当に有利になります。

両方のテストの前に、C# コードで Windows デスクトップの RAMをプログラムで消去するにはどうすればよいですか? FreeRAM()基本的に、以下のスニペットのメソッドのコード (またはいくつかのヒント) が必要です。

public static void Main()
{
    FreeRAM(); // Need code for this method
    RunAndTimeTestOne();
    FreeRAM();
    RunAndTimeTestTwo();
    FreeRAM();
    RunAndTimeTestThree();
    .
    .
    .
}

また、これをプログラムで行うことができない場合は、それも教えていただければ幸いです。

4

2 に答える 2

1

まず、Mac OS X の「パージ」が正確に何をするのかを理解しましょう...

purge -- ディスク キャッシュを強制的にパージします (フラッシュして空にします)。

パージを使用して、パフォーマンス分析用のコールド ディスク バッファ キャッシュで初期ブート条件を概算できます。malloc、vm_allocate などによって割り当てられた匿名メモリには影響しません。

ただし、Windows は、ディスクから読み取られ、ディスクに書き込まれるファイル データをキャッシュします。これは、読み取り操作が、物理ディスクからではなく、システム ファイル キャッシュと呼ばれるシステム メモリ内の領域からファイル データを読み取ることを意味します。これに対応して、書き込み操作は、ファイル データをディスクではなくシステム ファイル キャッシュに書き込みます。このタイプのキャッシュは、ライトバック キャッシュと呼ばれます。キャッシュは、ファイル オブジェクトごとに管理されます。したがって、「データがディスクに書き戻されるのはいつですか?」Cache Manager によって決定されます。

キャッシュ マネージャーはどのように機能しますか? 以下をお読みください...

キャッシュは、キャッシュ マネージャーの指示の下で発生します。、Windows の実行中に継続的に動作します。システム ファイル キャッシュ内のファイル データは、オペレーティング システムによって決定される間隔でディスクに書き込まれ、そのファイル データによって以前に使用されていたメモリが解放されます。これは、キャッシュのフラッシュと呼ばれます。ファイルへのデータの書き込みを遅らせ、キャッシュがフラッシュされるまでデータをキャッシュに保持するポリシーは遅延書き込みと呼ばれ、一定の時間間隔でキャッシュ マネージャーによってトリガーされます。ファイル データのブロックがフラッシュされる時間は、キャッシュに格納されていた時間と、データが読み取り操作で最後にアクセスされてからの時間に部分的に基づいています。これにより、頻繁に読み取られるファイル データが、システム ファイル キャッシュ内で最大限の時間アクセス可能な状態に保たれます。

キャッシュ マネージャーの動作を変更できますか? はい、できます。このページでは、Windows のキャッシュ管理 API を使用して RAM に対して実行できる他のすべてのことについても説明します。しかし、予期しない動作が発生する可能性があります。

システムが頻繁にフラッシュされない場合、システム メモリがキャッシュによって使い果たされるか、フラッシュの前に突然のシステム障害 (コンピュータへの電源喪失など) が発生する可能性が高くなります。後者の場合、キャッシュされたデータは失われます。

Windows で「パージ」を実行する方法と、それが決して必要ない操作である理由を理解していただければ幸いです。

于 2014-07-14T21:54:19.307 に答える
0

本当に不要です。Win 7 はメモリを適切に管理します。

しかし、それが十分な答えでない場合は、 http://www.tomshardware.com/forum/37230-63-free-memoryをご覧ください。

于 2014-07-14T21:13:04.437 に答える