【问题标题】:Memory mapped files that are backed up by the System page file由系统页面文件备份的内存映射文件
【发布时间】:2012-12-23 10:03:12
【问题描述】:

我有一个使用由系统页面文件备份的 MMF 的软件。该应用程序使用 MMF 来缓存大图像。写入和读取操作的发生频率非常高。

虽然我可以清楚地看到使用 MMF 的性能提升,但我仍然想知道什么是更好的方法,将 MMF 映射到常规文件,或映射到系统页面文件。

我想知道这里是否有人可以对此提供一些见解,将其映射到系统页面文件或仅映射到另一个文件更好?

注意:我的问题不是关于 MMF 一般,我不知道是否使用 MMF,我只是想知道应该将 MMF 映射到哪里。

对此有何见解?

【问题讨论】:

    标签: winapi memory-management memory-mapped-files win32-process pagefile


    【解决方案1】:

    底层机制和性能是相同的,主要区别在于您与系统中的所有其他进程共享页面文件,因此如果您有大量数据,您可能会遇到大小限制页面文件。

    【讨论】:

    • 另一个区别是映射一个真实文件,除非你使用FILE_ATTRIBUTE_TEMPORARY,否则页面文件支持的MMF不会触及磁盘区域,除非你的物理内存不足。那,文件是世界可见的(这通常不是问题)。
    • damon ,你的语法对我来说有点混乱(英语不是我的母语)。你能写得更清楚吗?谢谢。
    • MMF 将内存页面从底层文件映射到内存页面。您修改的页面被标记为脏页并被刷新到磁盘。关闭映射时也会发生同样的情况。有时您不希望这样,例如,如果您知道无论如何都会删除该文件。仅当您使用FILE_ATTRIBUTE_TEMPORARY 打开时,这不会自动完成。但是,当 MMF 由页面文件支持时,页面也仅在必要时写入磁盘,即,如果它们被换出(当它们当前不在活动进程的工作集中时)没有足够的物理内存供所有人使用)。
    猜你喜欢
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 2017-10-19
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    相关资源
    最近更新 更多