【问题标题】:iOS (iPad) CoreGraphics & Foundation memory issuesiOS (iPad) CoreGraphics & Foundation 内存问题
【发布时间】:2011-10-28 23:58:47
【问题描述】:

我从核心 iOS 库中得到奇怪的内存分配,在 Instruments Allocations (Malloc 1.00KB) 中可以看到,它不断增加并导致应用程序崩溃 (iPad)。

该应用程序允许用户浏览文章(webview 中的正文,标签中的标题/作者/日期) - 每个新视图控制器加载时都会出现问题(先前的视图控制器被释放/解除分配 - 这不是问题)。

以下 CoreGraphics 分配仅在为 UILabel 设置 .text 属性时发生: CoreGraphics "CGGLyphBitmapCreate"、"CGFontSetStrikeValue" - 有时其中一项或两项显示 6 或 7 次(每次 1KB),但每次视图加载时至少显示一次。

除此之外,Foundation "[NSNotificationCenter addObserver:selector:name:object:]" 有时会出现,有时不会,有时一次加载最多 6/7 次。我理解为什么添加观察这可能会分配一些内存,但使用“[NSNotificationCenter removeObserver:self] 释放视图控制器肯定会再次删除所有引用。

我已经包含了 Instruments 的屏幕截图...甚至不会解决 ** 有时会在加载时显示的 WebCore 和 libcache.dylib 分配。这里也很困惑。

【问题讨论】:

  • 好的 - 我已经进一步调试,似乎只有在我使用“Georgia”字体而不是默认的“Helvetica”时才会出现“CGGLyphBitmapCreate”行。

标签: objective-c ios ipad memory-management instruments


【解决方案1】:

也许您有一个没有设置自动释放池的线程?如果是这种情况,则会创建一个自动释放对象,例如通过getter方法,对象不能被自动释放池保留,因为它不存在,并且会泄漏。
因此,如果您的应用程序是多线程的,请确保每个线程都有一个覆盖大部分线程代码的 @autoreleasepool{} 块。

【讨论】:

    【解决方案2】:

    您是否跟踪泄漏?只要它不泄漏内存,您通常不必担心。

    【讨论】:

    • 使用 Instruments 跟踪泄漏,显示没有明显的内存泄漏(只有 3 个与 coredata 相关,导致刚刚超过 100 字节)。 - 但是这个“Malloc 1.00KB”随着我浏览的越多不断增加,最终导致内存警告 1,然后是 2,然后崩溃。
    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 2011-04-13
    • 2011-03-23
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    相关资源
    最近更新 更多