是什么导致页面错误以及如何最小化它们?

时间:2010-02-10 05:06:21

标签: optimization memory-management

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

增加机器上的物理RAM可以减少页面错误,尽管对应用程序的设计更改比添加RAM要好得多。通常,具有较小的内存占用,并且通常可以在同一页面上同时访问的内容将减少页面错误的数量。同时,尝试使用内存中的一些数据同时执行所有操作也很有帮助,这样您就不需要多次访问它,这可能会导致页面错误(也就是颠簸)。

答案 2 :(得分:0)

设计选项是编写内存缓存系统,延迟创建内存(按需创建)。这样的缓存将具有预先分配的内存块的集合,按其大小访问。例如,一个N个列表的数组,每个列表都有M个缓冲区。每个列表负责为您提供一定大小范围的内存。 (例如,从每个列表中为您带来2 ^ i(i = 0..N-1)范围内的内存。即使您想使用少于2 ^ i,您也只是不使用缓冲区中的额外内存。 这将是一个小内存浪费,缓存和更少页面错误的权衡。

另一种选择是使用nedmalloc

祝你好运 利奥尔