gpt4 book ai didi

iphone - 内存泄漏工具告诉我零泄漏,但内存占用量不断增加

转载 作者:行者123 更新时间:2023-12-03 20:21:34 24 4
gpt4 key购买 nike

我正在 SDK 3.2 中对我的应用程序进行一些内存分析,我使用“泄漏”分析器来查找所有内存泄漏,并将它们全部堵住。这是一个 ScrollView 导航 Controller 应用程序,其中有图 block ,您单击一个图 block 将进入新的图 block View ,依此类推,我可以深入许多级别并一直回到顶部,“泄漏”分析器说明了一切很酷。

但是,如果我在“ObjectAlloc”分析器中观察内存占用量,则随着我深入(这似乎合理),内存占用量会不断增加,但当我退出 View 时,内存占用量不会像我预计。

我知道这是对该应用程序的模糊描述,但我无法准确发布数十亿行代码:) 另外应该注意的是,我正在使用 coreData 来存储图像数据,因此数据库正在不断增长随着选择更多节点的大小,不知道是否/何时从内存中释放。

什么给出了?

最佳答案

这听起来可能是以下几件事之一:

  • 释放内存后,内存未归还给操作系统。这是 C 运行时的常见设计。当您进行分配时,C 运行时会分配更多内存供其使用,并返回其中的一 block 供您使用。当您执行释放操作时,C 运行时只是将其标记为已释放,但不会将其返回给操作系统。因此,如果 Leak 工具正在读取操作系统级别的统计信息而不是 C 运行时统计信息,Leak 工具将无法报告内存使用量的相应减少。

  • Leak Tool Memory 报告的误导性值。泄漏工具可能会查看与 C 运行时不同的值,并且报告的值会引起您的担忧,即使没有任何问题(就像人们尝试使用 Windows 中的任务管理器来检测泄漏并对结果感到非常困惑一样,因为它对于这项工作来说确实是一个非常糟糕的工具)。

  • 碎片化。您的应用程序可能存在内存碎片问题。也就是说,当您分配,然后取消分配,然后分配时,后续尝试的分配大于取消分配留下的“漏洞”。发生这种情况时,您会分割内存空间,留下无法使用的漏洞,防止出现大的连续内存块,并强制使用越来越多的内存空间,直到内存耗尽。这是一种病理状况,修复通常是特定于应用程序的。

我认为这三个建议中的第一个很可能就是正在发生的情况。

关于iphone - 内存泄漏工具告诉我零泄漏,但内存占用量不断增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2339279/

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