- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 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/
我是一名优秀的程序员,十分优秀!