免责声明:我对内存管理或性能知之甚少,而且我用C#编写代码 .

问题:

面对任何操作系统将交换的事实,"caching"中等数据(按照数十MB的顺序),特别是 media ,它们将是 sent at any time to a device (音频和图像),在磁盘上(而不是"keeping it in (virtual) memory")也许"page"是正确的单词)未使用的内存到磁盘?

这可能不太清楚,所以我将发布示例 .
它主要与 user interfaces, not network I/O 有关 .

我所说的例子:

  • FooSlideshow应用程序可以将幻灯片存储在磁盘上,而不是为它们分配虚拟内存 .

  • BarGame可以在磁盘上存储不同的大量事件的声音并加载它们进行播放 .

  • BazRenderer可以在合成图像中存储多个图层的位图,如果它们不容易不断变化(如果只有一个图层发生变化,则其余图层必须从磁盘中读取) .

我不是在谈论的例子:

  • FooPlayer在从服务器流式传输时缓存歌曲的缓冲区 .

  • BarBrowser缓存图像,因为用户可能访问同一页面 .

我为什么要关心:

因为,假设一个幻灯片显示,当在1024x768屏幕上以32位/像素全屏显示时,将花费 1024 * 768 * 32 bytes = 3 MiB8 MiB 用于高清屏幕) . 因此,对于10张幻灯片幻灯片,只需缓存图像即可.818989_ . 一首短歌,转换为16位样本44.1 KHz(CD质量)也会平均加权 .

从我的C#代码(但它可能是Java,Python,无论如何), should I care 关于使复杂的缓存系统尽可能释放内存, or should I trust the OS 将其交换掉? (而且,结果会是一样的吗?一种方法会比另一种更好?为什么?)