Основные различия в скорости между статической памятью, стеком и кучей памяти - PullRequest
0 голосов
/ 28 декабря 2011

Я столкнулся с проблемой, что доступ к данным, хранящимся в памяти кучи, выполняется очень медленно, когда память часто перераспределяется.

Reallocated every now and then

по сравнению с

Once allocated

Чем можно объяснить такое поведение?

1 Ответ

1 голос
/ 28 декабря 2011

Возможно, проблемы со страницей. Если вы выделите большой блок ОЗУ, физическое ОЗУ, вероятно, не будет выделено сразу, будут установлены некоторые записи таблицы страниц. Физическое ОЗУ не будет выделено, пока вы не получите доступ к местоположению в нем в первый раз. Это включает

  • ошибка страницы,
  • поиск страницы физической памяти
  • обнуление каждого местоположения на этой странице
  • обновление таблицы страниц

Это дорогостоящая операция с точки зрения времени и будет выполняться один раз на выделенную страницу (550 x 4 Кбайт страниц для выделяемой ОЗУ)

...