gpt4 book ai didi

iphone - 内存警告但事件字节较小

转载 作者:行者123 更新时间:2023-12-03 21:11:36 25 4
gpt4 key购买 nike

在我的应用程序中,多次重复某些操作(选择图片+处理)后,我收到级别 1 的内存警告,然后收到级别 2 的内存警告,然后崩溃。

泄漏工具没有显示任何泄漏。我还关注 Instruments 中的分配工具,我的实时字节大约为 4 MB,总共分配了 113 MB。加载图片时,内存最多可能有 20 MB。

由于我必须重复一个操作才能导致崩溃,因此很可能是内存泄漏。然而,我不知道如何找到它,因为我的事件字节是 4 MB,并且应该分配一些东西(除了 UIImagePickerController 中大约 100 KB 的小泄漏)。

我对内存泄漏/分配工具的信任程度如何?您能给我一些建议来帮助我找到问题的原因吗?

最佳答案

我不知道 iPhone OS 是如何工作的,所以这基本上只是猜测,但在没有垃圾收集器压缩堆内存的系统中,随着时间的推移,它会变得碎片化。拥有大量空闲内存并不意味着大量连续内存是空闲的。

例如,如果您始终需要 4MB 内存进行某些处理,并且您具有以下分配模式:

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

(您不会释放 1KB block ,因为它是计算结果,或者其他什么)

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

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

关于iphone - 内存警告但事件字节较小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2922691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com