ios - Error de Malloc "no se puede asignar la región" con el código de error 12. ¿Alguna idea de cómo resolverlo?




memory-management allocation (2)

Estoy recibiendo este error y no sé qué hacer con eso:

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

Si establezco un punto de interrupción en esa línea que produce el error, no sé qué debo buscar especialmente. En los instrumentos, he comprobado las asignaciones y el valor aumenta hasta 14,5 GB de todas las asignaciones.

¿Puede alguien ayudarme?
pincel51

EDITAR 1:
Más información:
- Estoy intentando esto en el simulador, no en el dispositivo iOS.
- Eso es todo el resultado (estoy recibiendo este error más veces). - el error se produce en esta línea:

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];


Suena extraño, pero tuve el mismo comportamiento cuando el subproceso principal estaba sobrecargado.

El uso de la memoria fue lo suficientemente óptimo: los instrumentos no muestran fugas y la memoria en vivo fue de aproximadamente 2Mb, no hubo advertencias de memoria mientras se ejecutaba en un dispositivo, toda la asignación masiva se realizó dentro de grupos de autorelease, etc.

Pero hubo un gran proceso de almacenamiento de datos en base de datos (utilizando datos básicos) hecho en el hilo principal. Simplemente moviendo el código de almacenamiento a un proceso en segundo plano como este

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
  }
}

arreglado mi problema





allocation