【问题标题】:Memory management when reading the same file over again再次读取相同文件时的内存管理
【发布时间】:2012-05-31 11:43:27
【问题描述】:

我想知道linux在一遍又一遍地读取文本文件时是否会在内存中保留一些东西(以便下次加快速度)? 我没有修改文本文件。只是阅读。

谢谢!

雷米

【问题讨论】:

    标签: java linux memory


    【解决方案1】:

    是的,Linux 内核会将未使用的内存分配给buffering disk accesses(这就是为什么如果您使用top,您会看到,在积极使用的情况下,您通常看不到多少可用内存)

    【讨论】:

    • +1 大多数操作系统已经这样做了几十年。是否修改文件都没关系。
    • 确实,当然,与任何其他缓存一样,修改文件实际上可能会从其中刷新 /other/ 文件
    • 如果文件显着增长并且没有足够的可用内存,它可能会刷新其他文件。如果文件大小相同,它将在内存中替换自己,而不是推出其他文件。
    • 取决于使用情况?编辑者通常会为您编辑的文件创建一个工作副本,并在您保存时将它们替换为原始文件;同样,对于更现代的写时复制文件系统,如果文件已被快照,您将保存一个新副本。实际上,我想知道在这种情况下缓存机制有多聪明
    • 这是真的。但是在你重写同一个文件的情况下,你应该没有问题。
    【解决方案2】:

    在 linux 内核中,read() 系统调用会将您的数据加载到页面缓存中,如果下次您在同一位置执行 read() 时该数据仍然存在,那么是的,它将从此缓存中读取并加快速度。

    您可以在 tutorial 中阅读更多内容,只需在 google 和其他搜索引擎中进行研究。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-29
      • 2011-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多