如何增加Windows 7的磁盘缓存

19 windows-7 hard-drive cache file-io

在 Windows 7(64 位)下,我正在阅读 9000 个中等大小的文件。总共有超过 200 MB 的数据。使用 Java (JDK 1.6.21) 我正在遍历文件。第一个 1400 左右全速运行,但随后速度下降到每个文件 4ms。事实证明,主要成本仅是通过打开文件而产生的。

我正在使用打开文件new FileInputStream(当然还要及时关闭它们以避免文件泄漏)。经过一番调查,我发现 Windows 的磁盘缓存只使用了 100 MB 左右的 RAM,尽管我有 8 GiB 可用。我已尝试使用CacheSet工具增加缓存大小,但我提供的任何值都被视为超出范围

我也尝试启用LargeSystemCache注册表项,但(重新启动后)该CacheSet工具仍然表明我正在使用 100 MB 的缓存(并且在测试运行期间不会增加)。有人对“鼓励”Windows 7 缓存我的 9000 文件有什么建议吗?

Vla*_*eev 5

我尝试使用 CacheSet 工具增加缓存大小,但我提供的任何值都被认为超出范围。

  1. 确保您以“管理员身份”显式运行 CacheSet。当出现任何问题时,CacheSet 会提示值超出范围。
  2. 确保缓存大小可以被 4 KB 整除

另外,我注意到 CacheSet 在处理大值时存在一些问题,可能是因为它是 2006 年的 32 位应用程序。我围绕相同的 API 编写了一个 64 位程序,它允许设置超过 4GB 的缓存大小:http: // /blog.thecybershadow.net/2012/12/14/64-bit-cacheset/

注意:CacheSet 文章提到了 CacheMan,但是最新版本似乎使用与 CacheSet 相同的 API - 它只是打包到带有一堆预设和其他功能的 UI 中。


小智 4

Superfetch 不会缓存所有大文件,只会缓存访问的部分。因此,访问该文件仍然需要磁盘读取。像我这样的 210mb 磁盘缓存可以缓存 Windows 中所有这些小文件的所有内容。而且表现也是引人注目的。但我怀疑它会对更快的系统产生影响。

  • 什么是 superfetch,它与这个问题有何关系? (2认同)