13

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

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

PS我从来没有收到内存警告,也没有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 内存!根本看不懂!任何的想法?

4

4 回答 4

3

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

于 2015-10-27T06:09:00.013 回答
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];

然后我试图找出这里发生了什么, type po self.discount,结果self.discount(它是一个带有NSDecimalNumbertype 的属性)返回一个非常不寻常的值,比如<å: 0xba123adr>. 奇怪,对吧?此外,当我尝试时po [self discount],它NSDecimalNumber [_NSKeyedCoderOldStyleArray initialize]: Unrecognized selector send to instance.几乎不知道在这里做什么。

解决方案:

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

@property (nonatomic, assign) NSDecimalNumber *discount;

对此:

@property (nonatomic, strong) NSDecimalNumber *discount;

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

于 2015-10-09T08:55:22.333 回答
1

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

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

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

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

这么奇怪。

于 2016-04-11T07:06:56.477 回答
-1

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

于 2016-10-12T02:03:43.943 回答