繁体   English   中英

Xcode分配仪器代

[英]Xcode allocations instrument generations

我一直在ARC项目上使用Instruments(在设备上运行)以确保我清理任何废弃的内存。 为此,我一直在使用分配生成工具并将我的堆的快照用于相同的操作10-20次。 令我困惑的是增长。 有些时候增长为0,然后是另一个,一些字节数(从几个字节到几千字节之间从不一致)似乎正在积累。 但通常至少有几次迭代增长为0。

我的问题是:如果我的成长有时为0,这是否意味着我的记忆管理是正确的? 或者我仍然有需要发现的问题吗? 我知道内存可能需要几个周期来“消耗”,但是即使在> 10次迭代之后仍然分配并保留的内存呢?

这似乎是关于乐器解释的更普遍的问题,所以我遗漏了任何具体的代码。 此外,我发现这种情况发生在各种堆快照场景中:拉动刷新,推送视图控制器等。

编辑:我已经包含了我的乐器窗口快照

我会说,如果你的动作循环有几次迭代导致分配了0个字节并且仍然存在,那么你就很擅长内存管理并且没有泄漏。

您看到的增加(从几个字节到几千字节)最有可能来自操作系统或后台Apple代码,以尝试管理您正在执行的任务。 一个简单的例子是,如果你第一次拿起键盘Apple为它分配永不释放的内存,那么迭代就会看到你没有创建的“泄露”内存。 你所做的一切都有Apple运行的背景代码,你无法定义它想要用内存做什么。 它可以缓存经常完成的特定事情,以便下次运行得更快。 整个Apple的理念是流畅运行的应用程序,因此用户体验是最好的。 操作系统在后台执行的操作可能是间歇性的,并且可能导致未释放的内存。

检查堆快照以查找已分配但未释放的对象。 如果你可以跟踪代码中的那些对象然后修复它,如果你不能,那么它可能是一个可以或不可以避免的操作系统分配。 就像我刚才说的那样,如果你获得了大量的0增加,那么由于这些间歇性的OS增加,我不会担心它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM