1

我想了解仪器/分配内的“All Heap & Anonymous VM”。了解仪器和所有堆和匿名VM

这是事情:我刚刚创建一个新雨燕SpriteKit项目,并没有做任何事情,我得到了下一个结果:

enter image description here

正如你所看到的,堆在成长过程。尽管如此,我没有内存泄漏。我该如何解释?这是一个好的结果吗?

+0

其确定存在,直到您的设备不扔许多的malloc()内存连连有薮系统库使用的是如此有警告或释放calloc没问题()调用。其次在弧下你不必担心堆和分配。当你从一个SKScene移动到另一个SKScene或一个视图到另一个(直到你没有任何强引用)时,弧会自动释放内存。SKScene和所有堆和匿名VM会自动减少。 – dragoneye

回答

2

专注于所有堆分配的实时字节列以查看您的应用程序正在使用多少内存。您无法控制应用程序的匿名VM大小。

专注于堆分配,因为您的应用程序对堆分配拥有更多的控制权。 您应用程序的大部分内存分配是 堆分配。

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

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

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