【问题标题】:(XCode 7 + iOS 9 + iPhone 4s/iPhone5 only) issue: "malloc: *** mach_vm_map(size=1048576) failed (error code=3)"(仅限 XCode 7 + iOS 9 + iPhone 4s/iPhone5)问题:“malloc: *** mach_vm_map(size=1048576) failed (error code=3)”
【发布时间】:2015-09-24 07:16:07
【问题描述】:

我知道这个问题与内存分配有关,但我只在 iOS 9、XCode 7 中得到它。在 XCode 6.4、iOS 8.4 中,它工作得非常完美,完全没有问题。在 iOS 9、XCode 7 中,它只是经常崩溃并给出此错误。

malloc: *** mach_vm_map(size=1048576) failed (error code=3) *** error: can't allocate region securely *** set a breakpoint in malloc_error_break to debug

有什么建议吗?我正在处理内存问题,但我想知道是否存在太多内存问题,那么为什么它在 iOS 8.4 中有效,而在 iOS 9 中无效?

另外,我的所有 UI 都变白了!就像导航栏没有标题一样,自定义标签栏(RDVTabBar)不可见,但是,其他视图控制器在那里(它响应触摸事件,您可以点击该区域并且位于该区域中的按钮起作用!)。

附:我从来没有收到内存警告,也没有调用 applicationWillTerminate: 方法!

更新:我发现这个问题只出现在 iPhone 5 和 4s 上! (非 64 位设备!)

更新 2:当崩溃发生时,我尝试打印一个对象并打印它,我在调试模式下再次遇到相同的错误: malloc: *** mach_vm_map(size=1048576) failed (error code=3) *** error: can't allocate region securely *** set a breakpoint in malloc_error_break to debug.

----------------- 更新 ------------------

好吧,我在这里发现了一些东西:我在 Instruments 中检查了我的应用程序,发现它在 iOS 8.4 中占用了大约 200mb 的内存,而令人惊讶的是,iOS 9.* 占用了 1.5 GB 的内存!这是我不明白的事情!一个应用程序在 iOS 8.4 中占用 200 mb 内存,而同一个应用程序在 iOS 9 上占用 1.5GB 内存!根本看不懂!有什么想法吗?

【问题讨论】:

  • 请显示堆栈跟踪。
  • 奇怪的是我大部分时间都没有得到任何堆栈跟踪。只需短短三行,应用程序就消失了!
  • 按照错误提示执行并在malloc_error_break 中设置断点并从那里打印堆栈跟踪。
  • @casey,除了上面的错误,我没有堆栈轨道。 prntscr.com/8kb4geSep 25 18:49:26 [AppName][10765] <Error>: CGBitmapContextInfoCreate: unable to allocate 1971200 bytes for bitmap data [AppName](10765,0xb029b000) malloc: *** mach_vm_map(size=1048576) failed (error code=3) *** error: can't allocate region securely *** set a breakpoint in malloc_error_break to debug
  • @SunilChauhan 我不认为你已经设法解决这个问题了吗?我正在开发一个也遇到这种情况并且仅在 iOS 9 上的应用程序。内存使用量一直在缓慢上升,并且我经常看到 malloc 错误。不知道是什么原因造成的,因为 ARC 应该处理这个问题,并且它适用于 iOS 8 及更低版本。您是否有机会使用 SQLite?

标签: malloc ios9 xcode7 xcode6.4 ios8.4


【解决方案1】:

好吧,我想我终于找到了问题:肯定是内存问题,但我必须搜索哪里。我发现我使用了两个第三方标签,即:CXAHyperlinkLabelSTTweetLabel。当我删除这些时,我的应用程序运行正常!!问题已解决,但我仍然很困惑为什么它在 iOS 8.4 中确实有效(并且仍然有效)并且在 iOS 9.0 及更高版本中占用了超过 1.5 GB 的内存!如果它有一些内存问题(我发现了一些并且已经修复了,仍然),为什么它确实适用于 iOS 8.*。 因此,我对任何遇到此类问题的人的建议是,我建议使用 UITextView 作为链接(我做到了,它的替代品很好)。

【讨论】:

  • 我正在使用 textview 作为链接,但这个问题仍然出现了其他解决方案吗?
【解决方案2】:

我刚刚遇到了和你一样的问题(xcode7,iPad 2,iOS 8.4)。

<Error>: myApp(524,0x3cfda9dc) malloc: *** mach_vm_map(size=4060311552) failed (error code=3)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug

所以,我决定在调试模式下运行,而应用程序在最意想不到的地方崩溃了:

        [self.delegate discountPopupDoneClickWithDiscount:self.discount
                                                     type:self.discountType
                                         federalTaxEnable:self.federalTaxEnable
                                               federalTax:self.federalTax
                                                customTax:self.customTax];

然后我试图找出这里发生了什么,输入po self.discount,结果self.discount(这是一个NSDecimalNumber类型的属性)返回一个非常不寻常的值,比如&lt;å: 0xba123adr&gt;。奇怪,对吧?另外,当我尝试po [self discount] 时,它会产生NSDecimalNumber [_NSKeyedCoderOldStyleArray initialize]: Unrecognized selector send to instance. 几乎不知道在这里做什么。

解决方案:

我从这里更新了折扣属性:

@property (nonatomic, assign) NSDecimalNumber *discount;

到这里:

@property (nonatomic, strong) NSDecimalNumber *discount;

然后一切都很好。当然,这不是您问题的确切答案/解决方案,但这可能会以某种方式帮助/为您提供有关该做什么的线索。

【讨论】:

  • 谢谢,但在我的应用中并非如此。
  • 您最好在模拟器中运行您的应用程序,尝试重现崩溃。然后在崩溃的地方设置调试并尽可能多地检查所有内容。
【解决方案3】:

好奇怪。我有一个非常相似的问题,应用程序会不断增加内存消耗,直到最终崩溃,但仅在 iOS7 和 iOS8 上。果然,iOS9 及以上版本没有问题。

发现对于 A LOT of collectionViewCells 的简单设置 [UILabel setText:text] 是原因。怎么回事?它们是弱的,非原子的。为什么?

Instruments : Allocations 中运行应用程序。在 Instruments 最终崩溃之前,我能够将内存消耗隔离到 __NSStringDrawingEngine+[NSParagraphStyle _defaultWritingDirection] [UIFont fontWithName] 或类似的东西。

无论如何,问题在于我使用的是文本样式类型(例如,标题 1、标题 2、正文、标题等)。在当时看来是合乎逻辑的。但是,我将它们切换到系统字体,不再出现内存问题,也不再冻结。

好奇怪。

【讨论】:

    【解决方案4】:

    你是否使用了NSZombieObject enable,它不会释放僵尸对象,可能会导致这个崩溃。希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2013-10-22
      • 1970-01-01
      • 1970-01-01
      • 2016-01-13
      • 2014-08-21
      • 1970-01-01
      • 2018-05-06
      • 2019-06-23
      • 1970-01-01
      相关资源
      最近更新 更多