Подтвердить что ты не робот

Ошибка Malloc "не может выделить регион" не удалось с кодом ошибки 12. Есть идеи, как это решить?

Я получаю эту ошибку и не знаю, что с ней делать:

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

Если я установил точку останова на эту строку, которая вызывает ошибку, я не знаю, для чего я должен искать специально. В инструментах я проверил распределения, и значение увеличивается до 14,5 ГБ всех распределений.

Кто-нибудь может мне помочь? brush51

РЕДАКТИРОВАТЬ 1:
Дополнительная информация:
- Я пытаюсь это сделать в симуляторе, а не на устройстве iOS.
- То есть весь вывод (я получаю эту ошибку больше раз). - ошибка возникает в этой строке:

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

Ответ 1

Googling покажет довольно много руководств по использованию инструментов, чтобы понять, что происходит с вашей памятью:

Как отлаживать утечки памяти: (учебник)
http://www.raywenderlich.com/2696/how-to-debug-memory-leaks-with-xcode-and-instruments-tutorial

И еще:
Поиск утечек памяти Obj-C (видео)
http://www.youtube.com/watch?v=R449qEuexNs&feature=related

* Есть много похожих вопросов в stackoverflow, которые могут вам пригодиться.

Ответ 2

Звучит странно, но у меня было такое же поведение, когда основной поток был перегружен.

Использование памяти было достаточно оптимальным: приборы не обнаруживали утечек, а живая память составляла около 2 МБ, никаких предупреждений памяти во время работы на устройстве, все массивные распределения выполнялись внутри пулов авторекламы и т.д.

Но был очень большой процесс хранения данных в db (с использованием Core Data), выполненных в основном потоке. Просто переместите код хранения в фоновый процесс, подобный этому

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

исправлена ​​моя проблема.

Ответ 3

У меня была эта проблема из-за рекурсивного вызова в контроллере представления viewWillLayoutSubviews. Я сделал недействительным макет представления коллекции, создавая бесконечный цикл многократного выделения представлений.