静态/堆栈和堆内存之间的主要速度差异

时间:2011-12-28 16:23:01

标签: objective-c ios performance memory ipad-2

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

Reallocated every now and then

相比

Once allocated

有什么可以解释这种行为?

1 个答案:

答案 0 :(得分:1)

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

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

这在时间方面是一项昂贵的操作,每个分配的页面会发生一次(对于你正在分配的RAM,为550 x 4kbyte页面)