首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内存警告但小Live

内存警告但小Live
EN

Stack Overflow用户
提问于 2010-05-27 15:56:12
回答 1查看 1.6K关注 0票数 2

在我的应用程序中,在多次重复一些操作(选择图片+处理)之后,我会得到一级的内存警告,然后是崩溃。

泄漏工具没有显示任何泄漏。我还在跟踪仪器中的分配工具,我的Live大约是4MB,总共分配了113 MB。当图片加载时,我最多有20 MB的内存。

由于我必须重复一个动作才能到达崩溃,这很可能是内存泄漏。但是,我不知道如何找到它,因为我的活动字节是4MB,应该分配的东西(除了UIImagePickerController中大约100 KB的小泄漏之外)。

我对内存泄漏/分配工具的信任程度如何?你能给我个建议,帮我找出问题的原因吗?

EN

回答 1

Stack Overflow用户

发布于 2010-05-27 16:21:45

我不知道iPhone操作系统是如何工作的,所以这基本上只是猜测,但是在没有垃圾收集器压缩堆内存的系统中,随着时间的推移,它将被分割。拥有大量的内存自由并不意味着许多连续的记忆是自由的。

例如,如果某些处理总是需要4MB内存,并且有以下分配模式:

  • 分配4MB
  • 分配1KB
  • 免费4MB
  • 分配1KB

(您没有释放1KB块,因为这是计算结果,或者其他什么)

最后你可能只有3999 K的空闲内存--所以下次你分配4MB时,它将位于间隙之后,尽管它几乎合适。这意味着,即使几乎整个内存(或者更确切地说,寻址空间)都是空闲的,您也会耗尽内存。

当然,现代系统不应该受到这个问题的影响,但它们可能会受到影响,特别是如果应用程序从未被关闭,并且没有压缩的垃圾收集器。请注意,有些系统具有低碎片堆,特别是在这种情况下(重新分配和释放相同大小的块),但通常需要显式地请求它。

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

https://stackoverflow.com/questions/2922691

复制
相关文章

相似问题

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