了解仪器和所有堆&匿名VM

时间:2016-01-26 17:12:01

标签: memory-management memory-leaks xcode7 instruments allocation

我正在尝试理解仪器/分配中的“所有堆和匿名虚拟机”。

这是事情:我只是创建一个新的Swift SpriteKit项目而没有做任何事情我得到了下一个结果:

enter image description here

正如你所看到的,堆积正在成长。不过我没有内存泄漏。我怎么解释呢?这是一个好结果吗?

2 个答案:

答案 0 :(得分:2)

关注所有堆分配的实时字节列,以查看应用程序使用的内存量。您无法控制应用程序的匿名VM大小。

  

专注于堆分配,因为您的应用可以更好地控制   堆分配。 您应用所做的大部分内存分配   堆分配。

     

匿名VM中的VM代表虚拟内存。   当您的应用程序启动时,操作系统会保留一个块   应用程序的虚拟内存。这块通常要大得多   比你的应用程序需要的内存量。当您的应用分配时   内存,操作系统从块中分配内存   保留

     

记住前一段中的第二句话。经营   系统确定虚拟内存块的大小,而不是您的应用程序。   这就是为什么你应该专注于堆分配而不是   匿名VM。 您的应用无法控制匿名的大小   VM

来源:http://meandmark.com/blog/2014/01/instruments-heap-allocations-and-anonymous-vm/

答案 1 :(得分:0)

分配信息不包括使用VRAM(视频内存),因此它没有显示APP内存的完整状态,而Xcode内存报告就是这样。

如果您使用图形渲染API,则内存增加的速度将比您想象的要快得多。图形API在VRAM中创建的OpenGL /金属对象的大小将算作APP内存使用。

许多OpenGL指令会将数据从RAM复制到VRAM以供GPU使用。

例如,如果您创建许多纹理并为其设置图像数据。堆分配比VARM分配少得多。

内存增长曲线

Allocation

使用过多的RAM和VRAM时将收到提醒MemoryWarning