2015-09-24 2 views
13

Я знаю, что проблема связана с распределением памяти, но я получить его только в iOS 9, XCode 7. В XCode 6.4, iOS 8.4, он работает просто отлично, без каких-либо проблем. В iOS 9, XCode 7, он просто очень часто падает с ошибкой.(только для XCode 7 + iOS 9 + iPhone 4s/iPhone5): «malloc: *** mach_vm_map (размер = 1048576) не удалось (код ошибки = 3)«

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) не отображается, однако есть другой контроллер просмотра (он реагирует на события касания, вы можете нажать эту область, и кнопка, расположенная в этой области, действует!).

P.S. Я никогда не получаю предупреждение о памяти, ни метод 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.

------------------ Обновление ------------------

Ну, я нашел что-то здесь: я проверил свое приложение в «Инструменты» и обнаружил, что он занимает около 200 мб памяти в iOS 8.4, и, на удивление, iOS 9. * занимает 1,5 ГБ памяти !!! Этого я не понимаю! Одно приложение занимает 200 мб памяти в iOS 8.4, и одно и то же приложение занимает более 1,5 ГБ памяти на iOS 9! Не совсем понятно! Есть идеи?

+0

Пожалуйста показать StackTrace. – trojanfoe

+0

Странная вещь: я не получаю стеклыши большую часть времени. Всего лишь три строки и приложение исчезло! –

+0

Сделайте, как подскажите об ошибке, и установите контрольную точку в 'malloc_error_break' и отпечатайте трассировку стека. – casey

ответ

3

Ну, я думаю, я, наконец, нашел проблему: ее определенно проблема памяти, но мне пришлось искать где.Я обнаружил, что использую две сторонние этикетки: CXAHyperlinkLabel и STTweetLabel. Когда я удалил их, мое приложение просто отлично работает! Проблема решена, но все же я смущен, почему она действительно работает (и все еще работает) отлично в iOS 8.4 и потребляет более 1,5 ГБ памяти в iOS 9.0 и выше! Если у него есть некоторые проблемы с памятью (я нашел некоторые и исправил уже, все еще), почему он действительно работал с iOS 8. *. Итак, мой совет любому человеку, у которого возникают такие проблемы, я рекомендую использовать UITextView для ссылок (я сделал это и его приятную замену).

+0

Я использую 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) возвращает очень неважное значение, например <å: 0xba123adr>. Странно, правда? Кроме того, когда я пробую po [self discount], он дает NSDecimalNumber [_NSKeyedCoderOldStyleArray initialize]: Unrecognized selector send to instance. Довольно неудобно, что делать здесь.

Решение:

Я обновить дисконтную имущество от этого:

@property (nonatomic, assign) NSDecimalNumber *discount; 

к этому:

@property (nonatomic, strong) NSDecimalNumber *discount; 

А потом все нормально. Конечно, это не точный ответ/решение вашего вопроса, но это может помочь/дать вам понять, что делать, так или иначе.

+0

Спасибо, но это не так в моем приложении. –

+0

Лучше запустите приложение в симуляторе, пытаясь воспроизвести крах. Затем установите debug, где он сбой, и проверьте как можно больше. – Eddie

1

Настолько странно. У меня была очень похожая проблема, когда приложение постоянно увеличивало потребление памяти, пока, в конце концов, она не сработает, но ТОЛЬКО на iOS7 и iOS8. Конечно, никаких проблем с iOS9 и выше.

Обнаружил, что причиной было простое установление [UILabel setText:text] для LOT коллекции collectionCell. WTF? Они были слабы, неатомичны. Зачем?

Отправлено приложение в Инструменты: Распределение. Прежде чем инструменты в конечном итоге потерпели крах, я смог выделить потребление памяти на __NSStringDrawingEngine, +[NSParagraphStyle _defaultWritingDirection][UIFont fontWithName] или что-то в этом роде.

В любом случае, получается, что я использовал типы текстовых стилей (например, Title 1, Title 2, Body, Caption и т. Д.). Казалось логичным использовать в то время. Но я переключил их на системные шрифты и не стал больше проблем с памятью и не стал замораживаться.

Настолько странно.

-1

вы использовали NSZombieObject включить, он не будет выпускать объект зомби, и может привести к этому crash.i надеюсь, что это поможет вам

Смежные вопросы