Я разрабатываю игру, используя Cocos2D для iOS.Как узнать, что ест память в Cocos2d
Есть несколько сцен, таких как меню и т. П., И основная игровая сцена. На главной сцене есть только три динамических объекта. Эти объекты периодически стреляют друг в друга (пока эти объекты не будут убиты или не выведены из сцены).
Теперь проблема: игра постоянно поглощает память. И я хочу узнать, что я делаю неправильно.
Нет явных утечек, таких как чрезмерно удерживаемые объекты. Сцена получает dealloc
ed, объекты удаляются с родителей и очищаются, анимации останавливаются и т. Д.
В любом случае, память все равно идет. Я использую следующий код:
+ (void) reportMemory
{
struct task_basic_info info;
mach_msg_type_number_t size = sizeof(info);
kern_return_t kerr = task_info(mach_task_self(),
TASK_BASIC_INFO,
(task_info_t)&info,
&size);
if (kerr == KERN_SUCCESS)
NSLog(@"Memory in use (in Kbytes): %f", info.resident_size/1024.0);
else
NSLog(@"Error with task_info(): %s", mach_error_string(kerr));
}
, чтобы узнать, сколько памяти потребляется при каждом начале сцены. И количество сообщений всегда больше предыдущего.
Я попытался использовать профилировщик распределения, но, честно говоря, я не смог найти ничего полезного. Я вижу, что общие байты жизни в основном одинаковы, но процесс постоянно выделяет и освобождает что-то.
Что вы предложите мне посмотреть? В основном, я ищу советы о том, как отлаживать операции с памятью в моем случае.
EDIT (Что помогло мне):
Оказалось, что у меня был NSZombieEnabled включен. В основном, это был основной фактор для увеличения потребления постоянной памяти. Некоторую полезную информацию и наконечник можно найти в @coneybeare answer
Вторая полезная вещь - использовать инструменты (утечки и распределения), как предлагалось @Jack. Это помогло мне найти пару тонких утечек.
Каков размер ваших общих байтов жизни? – CarlJ
@meccan сначала около 42 Мб (количество атласов спринта предварительно кэшировано в этот момент), а затем он растет примерно на 2-5 МБ за каждый прогон сцены до 125 Мб. После этого процесс будет уничтожен ОС. – Bobrovsky
О, сумасшедший, слишком много. Вы использовали какие-либо кешированные изображения? – CarlJ