-1

我遇到过这样的问题:当频繁重新分配内存时,访问存储在堆内存中的数据执行速度非常慢。

时不时重新分配

相比

一旦分配

什么可以解释这种行为?

4

1 回答 1

2

可能是页面错误问题。如果你 malloc 一大块 RAM,物理 RAM 可能不会立即分配,一些页表条目将被设置。在您第一次访问其中的位置之前,不会分配物理 RAM。这涉及

  • 页面错误,
  • 寻找物理内存页
  • 将该页面上的每个位置归零
  • 更新页表

就时间而言,这是一项昂贵的操作,并且每个分配的页面都会发生一次(您分配的 RAM 为 550 x 4kbyte 页面)

于 2011-12-28T16:51:48.923 回答