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



我知道这个问题与内存分配有关,但我只在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 .

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

嗯,我在这里发现了一些东西:我在仪器中检查了我的应用程序,发现它在iOS 8.4中占用了大约200mb的内存,令人惊讶的是iOS 9。*占用1.5 GB内存!!这是我不明白的事情!在iOS 8.4中,一个应用程序占用200 mb的内存,而在iOS 9中,同样的应用程序占用1.5GB的内存!完全不能理解!任何想法?

嗯,我想我终于找到了问题:这绝对是内存问题,但我不得不搜索在哪里。我发现我正在使用两个第三方标签,即:CXAHyperlinkLabelSTTweetLabel。当我删除这些,我的应用程序只是工作得很好!!这个问题已经解决了,但我仍然很困惑,为什么它在iOS 8.4中工作得很好,而在iOS 9.0及以上版本中却消耗了超过1.5 GB的内存!!如果它在内存方面存在一些问题(我发现了一些并且已经修复了),为什么它能在iOS 8 *上运行?所以,我对任何有这样问题的人的建议是,我建议使用UITextView作为链接(我这样做了,它的替代品很好)。

我也遇到过同样的问题(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类型的属性)返回一个非常不寻常的值,如<å: 0xba123adr>。很奇怪,对吧?此外,当我尝试po [self discount]时,它产生NSDecimalNumber [_NSKeyedCoderOldStyleArray initialize]: Unrecognized selector send to instance.几乎不知道这里要做什么。

解决方案:

我从下面更新了折扣属性:

@property (nonatomic, assign) NSDecimalNumber *discount;

:

@property (nonatomic, strong) NSDecimalNumber *discount;

然后一切都好了。当然,这不是你问题的确切答案/解决方案,但这可能会在某种程度上帮助/给你一个关于该怎么做的线索。

好奇怪。我也遇到过类似的问题,应用会不断增加内存消耗,直到最终崩溃,但这只发生在iOS7和iOS8上。果然,iOS9及以上版本没有问题。

发现一个简单的设置[UILabel setText:text]为a LOT of collectionViewCells是原因。WTF ?它们是弱的,非原子的。为什么?

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

无论如何,原来的问题是,我正在使用文本样式类型(例如,标题1,标题2,主体,标题等)。在当时看来是合乎逻辑的。但是,我把它们换成了系统字体,没有内存问题,也没有死机了。

那么奇怪。

您是否使用NSZombieObject启用,它不会释放僵尸对象,并可能导致此崩溃。我希望它能帮助你

最新更新