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

Optimization 是什么导致页面错误以及如何将其最小化?,optimization,memory-management,Optimization,Memory Management,在中检查流程时,如果存在多个页面错误,这意味着什么?应用程序正在处理相当多的数据,UI的响应性不强。是否对代码进行了优化以减少或消除页面错误?增加系统的物理RAM会有所不同吗? 增加计算机上的物理RAM可能会减少页面错误,尽管对应用程序的设计更改要比添加RAM好得多。一般来说,内存占用较小,并且经常在同一时间访问的内容位于同一页面上,这将减少页面错误的数量。同时,尝试在内存中同时存储一些数据,尽可能地做到这一点也很有帮助,这样您就不需要多次访问这些数据,这可能会导致页面错误(也称为抖动)。确保在

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


增加计算机上的物理RAM可能会减少页面错误,尽管对应用程序的设计更改要比添加RAM好得多。一般来说,内存占用较小,并且经常在同一时间访问的内容位于同一页面上,这将减少页面错误的数量。同时,尝试在内存中同时存储一些数据,尽可能地做到这一点也很有帮助,这样您就不需要多次访问这些数据,这可能会导致页面错误(也称为抖动)。

确保在彼此之后访问的内存彼此靠近也很有帮助(例如,如果你有一些对象,将它们放在一个数组中)如果这些对象有大量不常使用的数据,则将其放在另一个类中,并使第一个类引用第二个类。这样,你将在大多数情况下使用更少的内存。

一个设计选项是编写一个内存缓存系统,惰性地创建内存(按需创建)。这样的缓存将有一组预先分配的内存块,按其大小进行访问。例如,一个由N个列表组成的数组,每个列表有M个缓冲区。每个列表负责为您带来一定大小范围内的内存。(例如,从每个列表中,为您带来2^i(i=0..N-1)范围内的内存).即使您想使用少于2^i的内存,也不要使用缓冲区中多余的内存。 这将是一个小内存浪费、缓存和更少页面错误的折衷方案

另一个选择是使用

祝你好运
Lior

+1:虽然这是我在数据库设计中非常了解的一种模式,但我从来没有在OO设计中真正考虑过。我喜欢它!只是一个想法,在linux中,我们可以使用
mloc
事先获取整个物理地址,以避免页面错误。