不合理的堆增长

时间:2013-01-09 09:03:28

标签: ios memory memory-management instruments heapsort

您好我已经分配了内存,因为我在仪器中注意到很多堆增长,所以我设计了一个测试应用程序。

测试应用包含两个ViewControllers,每个都有一个按钮。 第一个ViewController通过Segue Modal链接到SecondViewController(除了自动生成之外它根本没有代码)。

第二个ViewController只有函数

 -(IBAction)back:(id)sender{
      [self dismissModalViewControllerAnimated:YES];
}

所以我可以翻看视图。

当我测试仪器时,我在第二次观察并返回后注意到堆增长。

enter image description here enter image description here

那怎么可能?我错过了什么?

1 个答案:

答案 0 :(得分:1)

堆的大小不是应用程序内存使用情况。

当你的应用程序处于活动状态时,内核必须为你分配内存 现代系统使用虚拟内存。基本上,他们将物理地址映射到您的进程将访问的虚拟地址。

这个映射由内核处理,它需要内存。

如果您请求1MB内存,则必须通过增加地址空间的大小来分配内存以跟踪分配的物理页面。

如果释放所有内存,内核通常会保留用于映射的内存,并将其重新用于下一次分配,从而无需为其重新分配空间。

这就是堆大小不变的原因。但它并不表示您的应用程序的内存使用情况。

如果使用Instruments,请查看VM Tracker工具。