代码之家  ›  专栏  ›  技术社区  ›  User1

什么导致页面错误以及如何将其最小化?

  •  5
  • User1  · 技术社区  · 15 年前

    在中检查进程时 Process Explorer ,当出现多个页面错误时,这意味着什么?应用程序正在处理相当多的数据,而UI的响应不是很快。是否对代码进行了优化以减少或消除页面错误?增加系统的物理RAM会有什么不同吗?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Brett Widmeier    15 年前

    http://en.wikipedia.org/wiki/Page_fault

    增加机器上的物理RAM可能会导致更少的页面错误,尽管对应用程序的设计更改将比添加RAM做得更好。一般来说,内存占用较小,并且经常在同一时间访问的内容位于同一个页面上,这将减少页面错误的数量。同时,它也有助于尽你所能同时处理内存中的一些数据,这样你就不需要多次访问它,这可能会导致页面错误(又称翻页)。

        2
  •  3
  •   Ritsaert Hornstra    15 年前

    如果这些对象有很多很少使用的数据,请将它们放在另一个类中,并使第一个类引用第二个类,这样可以确保在彼此接近之后访问的内存(例如,如果您有一些对象,请将它们放在一个数组中)也很有帮助。这样的话,大部分时间你会用更少的内存。

        3
  •  0
  •   Lior    15 年前

    一个设计选项是写一个内存缓存系统,懒惰地创建内存(按需创建)。这样的缓存将有一个预先分配的内存块集合,按其大小访问。例如,一个由n个列表组成的数组,每个列表有m个缓冲区。每个列表负责将内存带到一定的大小范围内。(例如,从每个列表中为您提供2^i(i=0..n-1)范围内的内存)。即使您想使用少于2^i的内存,也不要在缓冲区中使用额外的内存。 这将是一个小内存浪费的折衷,而不是缓存和更少的页面错误。

    另一个选择是使用 nedmalloc

    祝你好运 利奥尔