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 (3)
Google va a revelar bastantes tutoriales sobre el uso de instrumentos para comprender lo que está pasando con su memoria:
Cómo depurar fugas de memoria: ( tutorial )
http://www.raywenderlich.com/2696/how-to-debug-memory-leaks-with-xcode-and-instruments-tutorial
Y otro:
Buscando fugas de memoria Obj-C ( video )
http://www.youtube.com/watch?v=R449qEuexNs&feature=related
* Hay muchas preguntas similares sobre stackoverflow que podrían beneficiarse.
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
Tuve este problema debido a una llamada recursiva en viewWillLayoutSubviews
un controlador de viewWillLayoutSubviews
. Estaba invalidando el diseño de una vista de colección provocando un ciclo interminable de vistas de diseño repetido.