【问题标题】:Frameworks cause memory leak in macOS框架导致 macOS 中的内存泄漏
【发布时间】:2017-06-20 03:41:15
【问题描述】:

我有一个 main() 函数为空的项目。

只需将框架链接到我的项目(例如 ImageIO.framework),Instruments 就会在我的应用程序关闭后列出未释放的内存分配。

1) 我可以在由 Apple 框架创建的 Instruments 中隐藏持久内存分配,以便我可以专注于内存泄漏吗?

2) 这是因为 Apple 知道操作系统之后会清理吗?

【问题讨论】:

    标签: c++ objective-c memory-leaks garbage-collection instruments


    【解决方案1】:

    1) 您可以是由框架创建的对象的所有者。阅读Instruments User Guide, Find Memory Leaks

    2) 是的。可以重用的单例和对象,如NSColorPanel,不会被释放。此外,在不清理的情况下退出应用程序会更快。比如来自NSManagedObject的文档:“Core Data 不保证在所有场景(比如应用退出时)都会调用dealloc”。

    【讨论】:

      【解决方案2】:

      关于 1 - 在分配类型中选择“所有堆分配”(而不是所有堆和匿名 VM)。

      关于 2 - 即使 Apple 也有一些内存泄漏..但是是的,它会在应用程序关闭后被释放。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-02
        • 2015-07-06
        • 2014-06-07
        • 2013-11-20
        • 2011-10-28
        • 2016-01-18
        • 2012-12-13
        • 1970-01-01
        相关资源
        最近更新 更多