(仅 XCode 7 + iOS 9 + iPhone 4s/iPhone5)问题:"malloc: *** mach_vm_map(size=1048576) failed (error code=3)"

(XCode 7 + iOS 9 + iPhone 4s/iPhone5 only) issue: "malloc: *** mach_vm_map(size=1048576) failed (error code=3)"

我知道这个问题与内存分配有关,但我只在 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)是不可见的,但是,其他视图控制器在那里(它响应触摸事件,你可以点击该区域,位于该区域的按钮起作用!)。

P.S。我从来没有收到内存警告,applicationWillTerminate: 方法都没有被调用!

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

更新 2:当崩溃发生时,我尝试打印 object 之一并打印它,我在调试模式下再次遇到相同的错误: 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 的内存!一点都看不懂!有什么想法吗?

我刚刚遇到了和你一样的问题(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类型)return一个非常不正常的值,例如 <å: 0xba123adr>。 St运行ge,对吧?此外,当我尝试 po [self discount] 时,它会产生 NSDecimalNumber [_NSKeyedCoderOldStyleArray initialize]: Unrecognized selector send to instance. 几乎不知道该做什么。

解法:

我从这里更新折扣属性:

@property (nonatomic, assign) NSDecimalNumber *discount;

对此:

@property (nonatomic, strong) NSDecimalNumber *discount;

然后一切都很好。当然,这不是您问题的确切 answer/solution,但这可能 help/give 您以某种方式知道该怎么做。

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

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

发现原因是对大量 collectionViewCells 的简单设置 [UILabel setText:text]。什么鬼?他们很弱,非原子的。为什么?

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

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

真奇怪。

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