2015-09-24 19 views
13

So che il problema è correlato alle allocazioni di memoria, ma prendilo solo su iOS 9, XCode 7. In XCode 6.4, iOS 8.4, funziona perfettamente, nessun problema in alcun modo. In iOS 9, XCode 7, si blocca molto spesso dando questo errore.(solo XCode 7 + iOS 9 + iPhone 4s/iPhone5): "malloc: *** mach_vm_map (size = 1048576) non riuscito (codice errore = 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

Qualche suggerimento? Sto lavorando su problemi di memoria, ma mi chiedo se ci sono stati troppi problemi di memoria, quindi perché ha funzionato in iOS 8.4 e non in iOS 9?

Inoltre, ottengo tutto il mio UI whited! Come la barra di navigazione non ha titolo, la tabbar personalizzata (RDVTabBar) non è visibile, tuttavia, l'altro controller di visualizzazione è lì (risponde agli eventi di tocco, è possibile toccare quell'area e il pulsante posizionato in quell'area agisce!).

P.S. Non ricevo mai avvisi di memoria, né viene chiamato il metodo applicationWillTerminate:!

Aggiornamento: ho rilevato che questo problema si verifica solo in iPhone 5 e 4s! (Dispositivi non a 64 bit!)

Aggiornamento 2: quando si verifica l'arresto, cerco di stampare uno degli oggetti e di stamparlo, ho ancora lo stesso errore in modalità di debug: 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.

------------------ ------------------ Aggiornamento

Beh, ho trovato qualcosa qui: ho ispezionato la mia app in Strumenti e ho rilevato che occupa circa 200mb di memoria in iOS 8.4, e sorprendentemente iOS 9. * occupa 1,5 GB di memoria !!! Questo è qualcosa che non capisco! Un'app richiede 200 MB di memoria in iOS 8.4 e la stessa app occupa oltre 1,5 GB di memoria su iOS 9! Per niente comprensibile! Qualche idea?

+0

prega di mostrare lo stacktrace. – trojanfoe

+0

La cosa strana è che non ottengo alcun stacktrace la maggior parte del tempo. Solo tre linee e l'app è sparita! –

+0

Fai come suggerito dall'errore e imposta un breakpoint in 'malloc_error_break' e stampa una traccia dello stack da lì. – casey

risposta

3

Bene, credo di aver finalmente trovato il problema: è sicuramente un problema di memoria, ma ho dovuto cercare dove.Ho scoperto che sto usando due etichette di terze parti: CXAHyperlinkLabel e STTweetLabel. Quando li ho rimossi, la mia app funziona perfettamente !! Il problema è stato risolto ma sono ancora confuso perché ha funzionato (e funziona ancora) alla grande in iOS 8.4 e consuma più di 1,5 GB di memoria in iOS 9.0 e versioni successive !! Se ha alcuni problemi con la memoria (ne ho trovato alcuni e li ho già sistemati, ancora), perché ha funzionato con iOS 8. *. Quindi, il mio consiglio a tutti i colleghi che stanno avendo tali problemi, mi consiglia di utilizzare UITextView per i collegamenti (l'ho fatto e la sua bella sostituzione).

+0

Sto usando la visualizzazione del testo per il collegamento ma ancora questo problema si è verificato con qualsiasi altra soluzione? –

2

Ho appena riscontrato il problema esatto (xcode7, su 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 

Così, decido di corse in modalità di debug, e il crollo applicazione nel luogo più inaspettato:

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

Poi ho cercato di scoprire cosa è successo qui, tipo po self.discount, risultano self.discount (è una proprietà con il tipo NSDecimalNumber) restituisce un valore molto insolito, come <å: 0xba123adr>. Strano, vero? Inoltre, quando provo lo po [self discount], produco NSDecimalNumber [_NSKeyedCoderOldStyleArray initialize]: Unrecognized selector send to instance. Quasi senza tracce su cosa fare qui.

Soluzione:

aggiorno la proprietà sconto da questo:

@property (nonatomic, assign) NSDecimalNumber *discount; 

a questo:

@property (nonatomic, strong) NSDecimalNumber *discount; 

E poi va tutto bene. Ovviamente questa non è una risposta/soluzione esatta alla tua domanda, ma questo può aiutarti/darti un'idea di cosa fare, in qualche modo.

+0

Grazie, ma questo non è il caso nella mia app. –

+0

È meglio eseguire l'app nel simulatore, cercando di riprodurre l'arresto anomalo. Quindi imposta il debug nel punto in cui si blocca e controlla quanto più possibile. – Eddie

1

Così strano. Ho avuto un problema molto simile, in cui l'app aumentava continuamente il consumo di memoria fino a quando non si arrestava, ma SOLO su iOS7 e iOS8. Abbastanza sicuro, nessun problema con iOS9 e fino.

Abbiamo scoperto che la causa era una semplice impostazione di [UILabel setText:text] per un sacco di collectionViewCells. WTF? Erano deboli, non anatomici. Perché?

Eseguire l'app in Strumenti: Allocazioni. Prima che gli strumenti alla fine si schiantassero, sono stato in grado di isolare il consumo di memoria a __NSStringDrawingEngine, +[NSParagraphStyle _defaultWritingDirection][UIFont fontWithName] o qualcosa del genere.

In ogni caso, il problema è che stavo usando i tipi di stili di testo (ad esempio, titolo 1, titolo 2, corpo, didascalia, ecc.). Sembra logico da usare al momento. Ma li ho passati a Font di sistema e non ho più problemi di memoria e non più congelamento.

Così strano.

-1

ha fatto si utilizza il NSZombieObject abilitazione, non rilascerà l'oggetto di zombie, e possono causare questo crash.i spero che vi aiuterà a