Что вызывает отсутствие страницы и как минимизировать их?

При исследовании процесса в Проводнике Процесса, что означает то, когда существует несколько отсутствий страницы? Приложение обрабатывает довольно мало данных, и UI не является очень быстро реагирующим. Там оптимизация к коду, который мог уменьшить или устранить отсутствия страницы? Был бы, увеличивая физическую RAM системы, имеют значение?

5
задан User1 10 February 2010 в 05:06
поделиться

3 ответа

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

Увеличение физического ОЗУ на вашем компьютере может привести к меньшему количеству ошибок страниц, хотя конструкция изменения в вашем приложении принесут гораздо больше пользы, чем добавление ОЗУ. В общем, меньший объем памяти и то, что вещи, к которым часто будут обращаться примерно в одно и то же время, будут находиться на одной и той же странице, уменьшат количество ошибок страниц. Также может быть полезно попытаться сделать все, что в ваших силах, с некоторым битом данных в памяти одновременно, чтобы вам не приходилось обращаться к ним много раз, что может вызвать сбои страниц (также называемые перебоями).

2
ответ дан 14 December 2019 в 19:12
поделиться

Также может быть полезно убедиться, что память, к которой осуществляется доступ после друг друга, находится рядом друг с другом (например, если у вас есть несколько объектов, поместите их в массив), если эти объекты имеют много данных, которые используются очень редко. , поместите его в другой класс и сделайте так, чтобы первый класс имел ссылку на второй. Таким образом вы будете использовать меньше памяти большую часть времени.

3
ответ дан 14 December 2019 в 19:12
поделиться

Вариантом дизайна может быть написание системы кэширования памяти, лениво создающей память (create on demand). Такой кэш будет иметь коллекцию предварительно выделенных кусков памяти, доступ к которым осуществляется по их размеру. Например, массив из N списков, каждый список имеет M буферов. Каждый список отвечает за предоставление памяти в определенном диапазоне размеров. (например, каждый список приносит память в диапазоне 2^i (i = 0..N-1). даже если вы хотите использовать меньше 2^i, вы просто не используете дополнительную память в буфере. Это будет компромисс между небольшими потерями памяти, кэшированием и меньшим количеством ошибок страниц.

Другой вариант - использовать nedmalloc

Удачи! Lior

0
ответ дан 14 December 2019 в 19:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: