【问题标题】:iPhone/Instruments: what's about the "malloc" entries in object summary?iPhone/Instruments:对象摘要中的“malloc”条目是什么?
【发布时间】:2011-09-21 21:37:54
【问题描述】:

我正在调整我的 iPhone/iPad 应用程序的性能,似乎并非所有内存都被释放,这应该是。在仪器中,我在模拟器中模拟出内存警告后,还剩下很多“Malloc”条目;他们怎么了?我可以摆脱它们吗?它们是什么意思/它们代表什么?

非常感谢,

斯蒂芬

【问题讨论】:

    标签: iphone ios memory-management instruments


    【解决方案1】:

    在任何时候,您的应用都会有(大量)活的对象,即使在收到内存警告(以及操作系统随后的内存恢复)之后也是如此。因此,您还会看到许多您正在看到的 malloc,这是很常见的。

    它们本身并不表明内存分配有问题,而可能只是表明您的程序正在运行。

    也看看这个S.O. topic to learn more about the object allocation tool

    此外,您可以使用许多高级技术来检测内存分配问题。 Here 你可以找到一个很棒的教程,它可以让你超越 Leaks 工具所允许的范围。

    编辑:

    关于这些 malloc 的确切含义,您必须认为您可以分配两大类对象(粗略地说):通过 Obj-C 运行时系统创建的 Objective-C 对象和“普通”对象通过 malloc 分配的 C 对象。

    第二类的许多对象是由系统库和编译器 C 库(例如,套接字或文件句柄等)分配的(无需您直接调用 malloc)。这些 (C) 对象没有与之关联的类型信息,因此 Instruments 只是向您显示已分配内存块的大小,而没有更多可用信息。

    很多时候 malloc 对象是由更高级别的类创建的,因此当您恢复与其实例关联的内存时,通过 malloc 分配的内存也会被释放。

    您不应该特别担心它们,除非您看到它们的整体大小随着程序执行“无限增长”。在这种情况下,您首先需要调查分配/释放更高级别对象的方式,并了解代码中的哪些地方卡住了。

    【讨论】:

    • 我没有净列,只有在屏幕截图中可见的列......并且“活动字节”应该是重要的大小,不是吗?所以我的主要问题是:我必须关心那些 malloc 条目吗?如果是,它们代表什么,所以我有一个起点......谢谢!
    • 嗯,好的,非常感谢...我认为,在我的具体情况下,这意味着我必须关心他们。 malloc 的大小正在增加,所以我会看看是什么原因。非常感谢!
    • 很高兴为您提供帮助!让我再次建议我发布的第二个链接,它阐明了有关内存分配的许多有用的事情......
    猜你喜欢
    • 1970-01-01
    • 2021-07-12
    • 2011-01-23
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 2011-08-28
    • 2011-09-20
    • 2020-05-12
    相关资源
    最近更新 更多