【问题标题】:iPhone memory leak (a lot of allocations)iPhone内存泄漏(大量分配)
【发布时间】:2011-03-20 00:34:46
【问题描述】:

我在 Instruments 中测试了我的应用。未发现泄漏,但应用程序崩溃(不是立即 - 大约 20 分钟 [取决于用户的活动] 工作后)。我查看了分配。它报告:

Category | Live Bytes | Count Live | # Living | # Transitory | Overall Bytes | # Allocations (Net / Overall)
Malloc 16 Bytes | 235088 | 14693 | 0 | 235088 | 14693 | 1.00

所有记录(当我查看“Malloc 16 Bytes”的详细信息时)仅针对一个对象:

# | Object Address | Category | Creation Time | Live | Size | Responsible Library | Responsible Caller
0 | 0x104b50 | 817461248 | • | dyld | _dyld_start

(...和 ​​14693 条具有相同字段数据的记录,当然,# 除外)。

堆栈跟踪:

   0 CoreFoundation __CFAllocatorSystemAllocate
   1 CoreFoundation CFAllocatorAllocate
   2 CoreFoundation __CFGetConverter
   3 CoreFoundation CFStringEncodingGetConverter
   4 CoreFoundation CFStringGetSystemEncoding
   5 CoreFoundation __CFStringInitializeSystemEncoding
   6 CoreFoundation __CFInitialize
   7 dyld ImageLoaderMachO::doImageInit(ImageLoader::LinkContext const&)
   8 dyld ImageLoaderMachO::doInitialization(ImageLoader::LinkContext const&)
   9 dyld ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&)
  10 dyld ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&)
  11 dyld ImageLoader::runInitializers(ImageLoader::LinkContext const&, ImageLoader::InitializerTimingList&)
  12 dyld dyld::initializeMainExecutable()
  13 dyld dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**)
  14 dyld dyldbootstrap::start(macho_header const*, int, char const**, long, macho_header const*)
  15 dyld _dyld_start

我无法在此处粘贴所有代码(应用程序不是几行)。但是,请给我一些建议 - 在哪里搜索内存泄漏或smth。否则...

【问题讨论】:

    标签: iphone xcode instruments memory-leaks allocation


    【解决方案1】:

    恕我直言,您的第一要务是让您的应用程序运行。尝试通过注释部分代码来定位问题所在;如果应用程序不再崩溃,那么问题出在您刚刚评论的部分,如果它仍然崩溃,那么它必须在其他地方。重复这些步骤,直到修复错误。

    在你的应用运行之后,你就可以开始发现它的漏洞或提高性能了。

    【讨论】:

    • 嗯,问题是应用程序仅在工作约 20 分钟后崩溃。
    • 在我看来,没有特定的代码部分崩溃,但系统在大约 20 分钟后内存不足。因此,可能存在大量内存泄漏,或者应用程序对 RAM 的负担过重。
    猜你喜欢
    • 2011-06-26
    • 1970-01-01
    • 2016-09-12
    • 2010-11-23
    • 2011-12-10
    • 2011-05-24
    • 2023-03-20
    相关资源
    最近更新 更多