首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >帮助查找内存泄漏(一般提示)

帮助查找内存泄漏(一般提示)
EN

Stack Overflow用户
提问于 2011-01-18 04:12:24
回答 3查看 6.6K关注 0票数 3

这是在iOS上,设备是iPad。

下面是发生的事情:

我在设备上运行应用程序或使用Xcode进行调试和运行。5分钟后,我收到1级的内存警告。一分钟后,我收到2级的内存警告。再过一分钟,Program received signal: “0”.

我使用仪器中的泄漏检查泄漏,没有检测到任何泄漏,。然而,根据Activity的说法,我的应用程序最初使用30 MB,随着时间的推移,它的大小增加到超过100 MB(大约每秒200 MB!)。所以,显然泄漏并不能检测到所有的内存泄漏。

因此,我的问题是:如果泄漏无法检测,是否有任何一般性的提示来发现它们,是否有更好的工具来查找这些漏洞?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-18 04:58:12

我就是这样处理的,

使用前缀命名所有类,以便在Instruments

  • XCode->Run->Run中使用性能tool->allocations

很容易地看到它们。

现在停止您的应用程序,并在搜索框中键入您怀疑泄漏的类的名称。(这是前缀方便的地方)。使用“记录”按钮再次启动仪器。

  1. 在分配对象时,活动列应该上下移动。注意,如果它没有下降,你就有一个漏洞。
票数 6
EN

Stack Overflow用户

发布于 2011-01-18 04:58:36

在你提到的情况下,你总是没有必要有漏洞。您可能在这里提到的执行时间内使用了很多自动释放的对象。您可能要向集合对象添加大小较大的对象。如果是这样的话,为这种情况使用一个单独的自动释放池,减少应用程序的内存占用。

票数 1
EN

Stack Overflow用户

发布于 2011-01-18 04:49:47

如果您可以使用工具查找漏洞,这是首选的,但如果完全困难,还有另一种技术,我使用。

首先注释掉几乎所有的内容,然后慢慢地每次添加一个组件,直到再次发生内存泄漏。这样,您就可以将焦点集中在创建问题的函数或代码块上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4720418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档