通过清除缓存文件模拟新的测试条件

本文关键字:测试 条件 模拟 清除 缓存文件 | 更新日期: 2023-09-27 18:12:58

对于poc,我已经为多种方法编写了测试方法来实现相同的结果。问题是,当我运行第一个测试时,一些(.txt)文件被缓存。可以看到,随着这些文件大小的增加,RAM的使用量也在增加。合并文件的大小几乎是1 GB,从磁盘读取它们并不容易。这将使第二种方法比第一种方法具有不公平的优势。

在两个测试之前,我如何在c#代码中以编程方式清除Windows桌面上的RAM ?实际上,我需要以下代码片段中FreeRAM()方法的代码(或一些编写技巧):

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

另外,如果这样做是不可能的编程,我也很乐意学习。

通过清除缓存文件模拟新的测试条件

让我们首先了解一下Mac OS X上的"purge"到底是什么…

purge——强制磁盘缓存清除(刷新和清空)

Purge可用于近似冷启动时的初始启动条件用于性能分析的磁盘缓冲缓存。它不影响通过malloc、vm_allocate、等。

但是Windows缓存从磁盘读取和写入的文件数据磁盘。这意味着读取操作从文件中读取文件数据系统内存中称为系统文件缓存的区域,而不是来自物理磁盘。相应的,写操作写文件数据到系统文件缓存而不是到磁盘,这种类型的缓存被称为回写缓存。缓存是按文件对象。因此,'何时将数据写回磁盘?

缓存管理器如何工作?阅读下面…

缓存在缓存管理器的指导下进行在Windows运行时连续运行。中的文件数据将系统文件缓存写入磁盘的时间间隔由操作系统,以及该文件数据先前使用的内存被释放——这被称为刷新缓存。的政策延迟向文件写入数据,并将其保存在直到缓存被刷新为止的缓存称为惰性写入,确实如此由缓存管理器以确定的时间间隔触发。的刷新文件数据块的时间部分基于它在缓存中存储的时间以及上一次在读操作中访问数据后的时间。这确保经常读取的文件数据在系统文件缓存的最长时间。

可以更改缓存管理器的行为吗?是的,你可以。这里是你如何做到这一点,这个页面也告诉所有其他的事情,可以做你的RAM使用Windows的缓存管理API。但是可能会导致意外的行为

如果系统没有足够频繁地刷新,则可能是系统内存会被缓存耗尽,或者突然的系统故障(如计算机断电)将会发生在同花顺之前。在后一种情况下,缓存的数据将丧失。

希望你明白如何在Windows中执行"清除",以及为什么它是一个永远不需要的操作。

真的没必要。win7管理内存非常好。

但是,如果这对你来说不是一个足够好的答案,看看-http://www.tomshardware.com/forum/37230 - 63 -免费-记忆