2011-12-12 10 views
18

sto ottenendo questo errore e non sai cosa fare con quel:Errore Malloc "Impossibile allocare regione" non riuscito con il codice di errore 12. Qualche idea su come risolvere questo problema?

AppName(3786,0xa0810540) malloc: *** mmap(size=16777216) failed (error code=12) 
*** error: can't allocate region 
*** set a breakpoint in malloc_error_break to debug 

se ho impostato un punto di interruzione a quella linea che si verifica l'errore, non so quello che ho da cercare apposta per. Negli strumenti ho controllato le allocazioni e il valore è in aumento fino a 14,5 GB di tutte le allocazioni.

Qualcuno può darmi aiuto?
brush51

EDIT 1:
Maggiori informazioni:
- sto cercando questo nel simulatore, non sul dispositivo iOS.
- Questo è tutto l'output (sto ricevendo questo errore più volte). - l'errore si verifica su questa linea:

NSManagedObjectContext *context = [self managedObjectContext]; 
NSFetchRequest *fetchREntitySetsCards = [[[NSFetchRequest alloc] init] autorelease]; 
//NSFetchRequest *fetchREntityRelCardsAnswersNotes = [[[NSFetchRequest alloc] init] autorelease]; 

NSEntityDescription *entitySetsCards = [NSEntityDescription entityForName:@"EntitySetsCards" inManagedObjectContext:context]; 
//NSEntityDescription *entityRelCardsAnswersNotes = [NSEntityDescription entityForName:@"EntityRelCardsAnswersNotes" inManagedObjectContext:context]; 
setEntity:entityCard]; 
[fetchREntitySetsCards setEntity:entitySetsCards]; 
//[fetchREntityRelCardsAnswersNotes setEntity:entityRelCardsAnswersNotes]; 

NSArray *fetchedObjSetsCards = [context executeFetchRequest:fetchREntitySetsCards error:&error]; 
//The error is here---> 
//NSArray *fetchedObjRelCardsAnswersNotes = [context executeFetchRequest:fetchREntityRelCardsAnswersNotes error:&error]; 


//Badges für TabBarItem Inbox setzen 
setsCount = [context countForFetchRequest:fetchREntityUserSet error: &error]; 
cardsCount = [context countForFetchRequest:fetchREntityCard error: &error]; 
+1

"Impossibile allocare regione" significa che non è rimasto spazio di memoria! Potrebbe essere il momento di iniziare a esaminare la gestione della memoria e rilasciare risorse inutilizzate. – sean

+4

iOS, 14,5 GB di allocazione? Mi sto perdendo qualcosa qui? – buddhabrot

+0

no scherzo. Qual è la ram su un iPhone 4? è 1GB? –

risposta

10

Suoni strani, ma ho avuto lo stesso comportamento quando il thread principale era sovraccarico.

utilizzo della memoria è stato sufficiente ottimale: gli strumenti non mostra perdite e memoria dal vivo era di circa 2Mb, nessun avviso di memoria durante l'esecuzione su un dispositivo, tutti allocazione enorme è stato fatto all'interno di piscine autorelease ecc

Ma c'era molto grande processo di memorizzare i dati in db (usando Core Data) fatti sul thread principale. Basta spostare il codice di memorizzazione in background in questo modo

dispatch_async(dispatch_get_global_queue 
    (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    BOOL result = NO; 
    result = [[DataManager sharedInstance] storeGuestsToDB]; 
    dispatch_async(dispatch_get_main_queue(), ^{ 
    //finalization 
    } 
} 

risolto il problema.

+0

Non sono sicuro di aver capito bene ... Non dovresti metterlo su main.m, ma ovviamente potresti provare a usare qualcosa di simile nella tua applicazione. Basta posizionare l'attività che si ritiene di essere sovraccaricata invece della mia chiamata a un DataManager. – Tamara

+0

Grazie per la risposta. Questo era esattamente il mio problema. Stavo scaricando e archiviando un file JSON (~ 90mb) .. Con lo spostamento delle transazioni in un altro thread mi sono liberato del problema. – Prine

+0

Non funziona per me ... e ho controllato, non è una perdita di memoria. Esporto una GIF usando 'CGImageDestinationAddImage' – ninjaneer

0

Ho riscontrato questo problema a causa di una chiamata ricorsiva in un controller di vista viewWillLayoutSubviews. Stavo invalidando il layout di una vista insieme causando un ciclo infinito di visualizzazioni ripetute.

Problemi correlati